Проблемы с зеленым портом TWI (I2C) на Arduino Braccio Shield

Резюме: Зеленый порт TWI/I2C на порту Braccio shield I2C до сих пор не работал для меня. Ищете совет или информацию, пожалуйста.

Деталь: Я использую роботизированную руку Arduino (Tinkerkit) Braccio для самообразования. Он поставляется с щитом Браччо на основе Uno. Тинкеркит, похоже, больше не занимается бизнесом, а документации немного не хватает. Щит использует разъемы типа KF2510 для сервоприводов (оранжевый), входов (белый), последовательных (желтый) и, что важно для моего вопроса, порта TWI/I2C (зеленый). Braccio Shield

Зеленый четырехконтактный разъем TWI/I2C обеспечивает GND, +5V, SDA (A4), SCL (A5). Однако сообщается, что соединения SDA и SCL не являются прямыми, а что "очень маленький чип (расположенный рядом с разъемом I4) буферизуется между зеленым разъемом и контактами Arduino SDA и SCL" . Ниже приведена фотография описанного чипа. Close-up of buffer chip

Вопреки сообщениям об изучении "буфера" на схеме показан уровнемер PCA9306TI и два набора подтягивающих резисторов 10K (R7,R8 и R11,R12) на шине с обеих сторон чипа. VREF2 на внешней стороне чипа имеет резистор R9 220K до +5V.

Schematic snippet

Другой стороной моего I2C-соединения был Arduino Pro-mini 5V. Я никогда не мог заставить его работать, используя описанный зеленый порт, но он отлично работает непосредственно подключенным к SCL и SDA, минуя переключатель уровня.

Мои вопросы (извините за долгое ожидание) таковы:

  1. Был ли зеленый порт TWI сдвинут на ожидаемый уровень ~3В? (Только по-настоящему пришел к такому выводу, написав все это четко).
  2. Если я хочу изменить зеленый порт TWI на 5V I2C, могу ли я заменить R9 220K перемычкой с нулевым Ом?
  3. Подтягивания 10K (R7,R8 и R11,R12) кажутся больше, чем ожидалось (я ожидал около 4.7 K для 5v или около 2.4 для 3V)? Можно ли их снять и оставить открытыми, если у меня есть один набор подтягиваний в другом месте автобуса? Или лучшие предложения?

Спасибо!

Обновление 2021/01/30

Ну, мои навыки отладки I2C улучшаются, исследуя это! В качестве испытательного стенда я настроил чистую рабочую шину I2C с двумя MCU, работающими на примере Arduino Master/Writer Slave/Receiver sketches Николаса Замбетти. Я проверил сигнал I2C на осциллографе, чтобы убедиться, что он чистый. Все хорошо. К этому испытательному стенду я подключил экран Браччо (5V, GND, SCL, SDA). Подключение экрана Браччо интересным образом изменяет сигнал I2C с частичными импульсами силы (runt) и медленными подъемами круглого плеча. Подключение через зеленый порт TWI, по-видимому, подчеркивает аспект runt pulse. Также интересно, что осциллограф все еще мог декодировать сигнал. Все еще работаю над тем, чтобы это выяснить.

Рис.1. Первый тест - SCA и SCL соединены через контактные коллекторы в левом верхнем углу экрана. First test
Рис.2. Второй тест - SCA и SCL подключены через зеленый порт TWI Second test Рис.3. Чистый сигнал (без подключения экрана Браччо) Clean signal

, 👍4

Обсуждение

является ли ваш Uno R3 с контактами заголовка SDA, SCL?, @Juraj

@Juraj, Да, настоящий Uno R3. Дополнительные контакты SDA и SCL присутствуют рядом с контактом AREF, и на самом деле именно к ним я подключаюсь напрямую, чтобы обойти проблему., @RowanP


1 ответ


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

2

Боюсь, у нас проблема с коллорингом. Твой зеленый-мой синий; -).

Я заглянул в технический паспорт IC level shifter, и TI описывает только сценарии с более высоким напряжением на правой стороне и более низким напряжением на левой стороне. Также допустимые переводы напряжения не содержат значений от 5В до 5В. Поэтому я бы сказал, что в сценарии равного напряжения переключатель уровня может не работать.

Ответы

  • Q1: Порт TWI всегда используется с 5 В (не ~3 В). Arduino, который должен использовать щит, может быть версией 3,6 В (например, DUE или M0). Возможно, порт TWI предназначен только для этого случая использования: низковольтный arduino с устройством 5V. Я признаю: это должно быть отмечено в документации. Так что, возможно, щиты Браччо работают вне спецификации и могут работать при нормальных обстоятельствах. Но тем временем я начинаю понимать, почему они не работают ;-).

  • Дополнение: сигналы SCL и SCL направляются на две пары выводов заголовка, поскольку они подключены к разным выводам на разных ардуино. На UNO вы не можете использовать A4 и A5 для аналога, как они используются, например, для I2C. Вы каким-либо образом используете A4 A5? Или вы подключили вторую пару контактов I2C в коллекторе питания, когда использовали разъем TWI? (риторический вопрос ;-) конечно, я изменю ответ, если вы дадите мне больше информации ;-) )

  • Q2: Резистор 220k необходим, так как он ограничивает ток через микросхему, если VRef1 ниже VRef2. Удалить его с 0 Ом было бы плохой идеей. Пока 5 В используется с обеих сторон, ничего не произойдет. Но если Vref1 равен 3,6 Вольта, вы потратите энергию впустую, и, возможно, чип примет участие в фестивале гриля.

  • Q3: Большинство прорывных плат устройств I2C уже используют свои собственные подтягивающие резисторы. Так что опускать подтягивания-не самая лучшая идея. -> слишком высокий ток при НИЗКИХ сигналах, так как устройства pull ups и braccio pull ups установлены параллельно. -- Есть вероятность, что резисторы слишком велики для устройств, которые не используют свои собственные подтягивания, но при скорости шины 100 кГц я не думаю, что это может вызвать проблему.

Кстати: Вам не нужно менять подтягивания, если вы настаиваете на том, чтобы попробовать разные значения. Просто используйте параллельные резисторы для снижения сопротивления (10K || 10K -> 5K) [|| означает параллельное подключение] (R || Rp -> (R*Rp) / (R+Rp))

,