Как выбрать пару SDA/SCL на Arduino Due?

На Arduino Due есть две пары контактов SDA / SCL, которые я могу использовать для I2C. Есть SDA0 и SCL0 соответственно на контактах 20 и 21 и еще один рядом с AREF. Как мне выбрать, какой из них я использую? Я также читал, что контакты 20 и 21 имеют встроенные подтягивающие резисторы, это правда?

, 👍2

Обсуждение

Самый простой и быстрый способ - это поэкспериментировать. Подключите устройство I2C и используйте I2CScanner для его обнаружения, затем повторите с другими выводами. Что касается подтягивания, вы могли бы использовать вольтметр, чтобы проверить это (я думаю)., @Code Gorilla


2 ответа


Лучший ответ:

3

Контакты 20 и 21 являются выводами I2C по умолчанию. Многие библиотеки предполагают, что вы используете их, и для работы с SDA1 / SCL1 потребуется дополнительная работа.

У них также есть свои подтягивающие резисторы, уже присутствующие на плате Due (см. Схему).

Поэтому просто используйте контакты 20 и 21, если только у вас нет веских причин использовать другой.

,

2

Как выбрать 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.

,