Как выбрать пару SDA/SCL на Arduino Due?
На Arduino Due есть две пары контактов SDA / SCL, которые я могу использовать для I2C. Есть SDA0 и SCL0 соответственно на контактах 20 и 21 и еще один рядом с AREF. Как мне выбрать, какой из них я использую? Я также читал, что контакты 20 и 21 имеют встроенные подтягивающие резисторы, это правда?
@snoob dogg, 👍2
Обсуждение2 ответа
Лучший ответ:
Контакты 20 и 21 являются выводами I2C по умолчанию. Многие библиотеки предполагают, что вы используете их, и для работы с SDA1 / SCL1 потребуется дополнительная работа.
У них также есть свои подтягивающие резисторы, уже присутствующие на плате Due (см. Схему).
Поэтому просто используйте контакты 20 и 21, если только у вас нет веских причин использовать другой.
Как выбрать SDA / SCL pain из-за программного обеспечения. проволока.h имеет два экземпляра TwoWire, то есть Wire и Wire1.
Использование проволоки
#define PIN_WIRE_SDA (20u)
#define PIN_WIRE_SCL (21u)
и Провод1
#define PIN_WIRE1_SDA (70u)
#define PIN_WIRE1_SCL (71u)
обратите внимание, какой экземпляр используется вашей библиотекой , например
#define WIRE Wire1 or #define WIRE Wire
если библиотека использует провод, то по умолчанию используется i2c на выводах 20 и 21.
если библиотека использует Wire1, то ее i2c на выводах 70 и 71 рядом с AREF.
внесите соответствующие изменения. если вы хотите использовать i2c по умолчанию, используйте экземпляр "Wire", или если вы хотите использовать i2c рядом с AREF, используйте "Wire1".
самое главное, не забудьте соответствующим образом изменить Wire1.begin() или Wire.begin().
как упоминалось в предыдущем комментарии, второй i2c (контакты 70 и 71 рядом с AREF) не имеет подтягивающего резистора, который обрабатывает его при использовании второго i2c.
- Проблемы с I2C и Wire.Available()
- Второй I2C на RTClib не запускается
- Сколько линий I2C у Arduino Due?
- Неустойчивое поведение при использовании DUE с чипом Microchip 24FC64 EEPROM?
- Отправка и получение различных типов данных через I2C в Arduino
- Как работают функции вне цикла void?
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
- Arduino Due vs Mega 2560
Самый простой и быстрый способ - это поэкспериментировать. Подключите устройство I2C и используйте I2CScanner для его обнаружения, затем повторите с другими выводами. Что касается подтягивания, вы могли бы использовать вольтметр, чтобы проверить это (я думаю)., @Code Gorilla