Как работать с несколькими подтягивающими резисторами на модулях


9

Я думал о создании модулей для платы разработки, которую я сделал несколько дней назад, которая будет включать интерфейсы spi / i2c.

Проблема в том, что я не включил подтягивающие резисторы в выводы MCU на основной плате и думал добавить их в модули, чтобы сделать их более «общими», чтобы каждый пользователь мог использовать их без необходимости добавлять дополнительные резисторы в модули. макетная плата.

Но потом я столкнулся со следующей проблемой. Если я добавлю подтягивающие резисторы в дополнительные модули и подключу, например, два или более модулей к одной шине, я получу эти резисторы параллельно, поэтому сопротивление будет падать и не будет выполнять свою функцию.

Но если я добавлю подтягивающие резисторы к основной плате, у меня эти контакты в MCU будут всегда как активный низкий уровень.

Итак, главный вопрос:

Как подключить несколько модулей к одной шине, имея на каждом из них нагрузочные резисторы, но не подключить их параллельно, если у вас более одного модуля? Это возможно?

Или лучшее решение здесь - включить нагрузочные резисторы в MCU и не включать их в модули?

Спасибо.-


Создайте отдельный модуль, который будет содержать только подтягивающие резисторы :)
Александр Зарубкин

Ответы:


14

Я предполагаю, что общая длина каждого из ваших автобусов меньше 1 метра, что типично для простых I 2 C и SPI. Кроме того, емкость шины находится в пределах спецификации.

Должен быть только один (1) набор подтягивающих резисторов. В результате, лучшее место для них - плата основного контроллера. Не помещайте подтягивания на модули.

Если вы хотите иметь подтягивание в некоторых случаях и не иметь их в других случаях.

  • Не заполняйте подтягивающие резисторы, когда они вам не нужны.
  • Разработайте главную плату контроллера таким образом, чтобы подтягивающие устройства соединялись с сигнальными линиями через перемычки. Удалите закорачивающие блоки, когда вам не нужны подтягивания.

редактирование: честно говоря, я думаю, что это ошибка, что Sparkfun помещает подтягивания на ведомые модули I 2 C. К сожалению, не все, кто покупает модули, понимают, что чрезмерная подтяжка может быть проблемой. Было бы лучше, если бы платы контроллера (вместо ведомых периферийных плат) имели подтягивания с помощью перемычек припоя. Ох ... Подождите ... Arduino не несет (опционально) подтягивания (хотя, возможно, так и должно быть). Итак, давайте повсюду будем подтягивать. Более простой начальный опыт. Но добавьте несколько ведомых модулей, и шина перестанет работать.

Обновление (май 2015):
- Связанное обсуждение в комментариях в другой ветке.
- В своих недавних модулях SparkFun начал добавлять перемычки для пайки между Vcc и подтягивающими резисторами I 2 C ( пример ). Это позволяет легче отключать подтягивания.

обновление (декабрь 2015 г.): на досках объявлений постоянно появляются
похожие вопросы об устранении неполадок I 2 C с несколькими модулями. Попытка расширенного общего ответа.


Да на самом деле мой случай был для примера. Например, все модули rtc, продаваемые в некоторых магазинах, включают в себя подтягивающие резисторы, так что ... как обращаться с этими модулями в этом случае. Вот почему я выделил жирным шрифтом основной вопрос. :)
Sein Oxygen

1
@SeinOxygen Если у вас есть модули с подтягивающими резисторами, а также контроллер с собственными подтягиваниями, то все эти резисторы будут появляться параллельно и представлять более жесткое подтягивание (меньшее сопротивление). Предположим, у вас есть 3х (три) резистора 2,2 кОм в качестве подтягивающих устройств. Общее сопротивление подтягиванию составляет 733 Ом. Это нарушает спецификации I2C. Что делать? Удалите лишние подтягивания из модулей (возможно, они не должны были быть там во-первых).
Ник Алексеев

@SeinOxygen Подробнее о подтягивающих значениях I2C в этой теме .
Ник Алексеев

4

Одним из вариантов является использование комплектов резисторов SIL или DIL и установка их в гнезда на каждом модуле. При построении системы с несколькими модулями извлекайте их из каждого модуля, кроме последнего. Это экономит место на доске над перемычками.

Вариации на эту тему могут включать в себя переключатели FET для подключения или отключения резисторов, управляемые одной перемычкой, или запасной контакт на разъеме (чтобы при подключении другого модуля резисторы автоматически отключались)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.