Я работаю над проектом MSP430, который требует, чтобы я направил выход одного периферийного устройства на вход другого периферийного устройства. Таким образом, у меня есть два контакта MCU, соединенных непосредственно друг с другом. Это выглядит подозрительно для меня, так как есть вероятность программной ошибки, приводящей к тому, что оба (возможно, конфликтующие) вывода. Также существует проблема состояний запуска и программирования.
В худшем случае, если один вывод управляет HI, а другой управляет LO, выводы GPIO обычно имеют гораздо больше возможностей приемника, чем возможностей источника ... так что это будет что-то вроде взятия выхода HI и его замыкания почти до земля. Что плохо ... но насколько это плохо? Это может привести к повреждению MCU?
Я часто вижу в Интернете примеры людей, использующих Arduinos для зажигания светодиода между двумя выводами без резистора, и я не слышал ни о каких историях о том, чтобы кто-нибудь зажег что-либо, кроме светодиода. Очевидно, что вы не захотите делать это в продукте, но производители вообще стараются защитить MCU от перегрузок выводов GPIO?
Если задуматься об этом ретроспективно, размещение ограничивающего ток резистора между двумя контактами предотвратило бы любые опасения, но даже небольшая замена оборудования на этом этапе очень трудна.
Для использования в будущем и для пользы потомков, есть ли у кого-нибудь еще идеи о правильном способе минимизации рисков соединения двух выводов MCU и, в более общем плане, минимизации рисков, связанных с возможностью перегрузки вывода GPIO?
источник
Ответы:
Это не проблема, но если вы беспокоитесь о возможном конфликте выходов, подключите их с резистором 1 кОм. Это будет ограничивать ток соответственно.
Однако, если для входа нужны действительно быстрые фронты, тогда, когда вы уверены, что он работает, соедините 1 кОм с коротким или 100 кОм.
Дополнительный бонус от наличия резистора заключается в том, что если у вас есть проект, переданный на печатную плату, то это дает вам возможность легко перенастроить.
Это та же проблема с неиспользуемыми входами - привязать их к заземлению или Vcc, и вы рискуете получить большой ток от устройства без какого-либо простого способа выяснить, что происходит - связать через 1 КБ, если не используется, или, возможно, 10 КБ.
Ограничение перегрузки выполняется на некоторых микросхемах, но только в силу того, что транзисторы по своей природе не могут подавать «усилители», но это может сработать против вас, потому что если у вас есть несколько выводов o / p, закороченных на землю (или друг друга), и каждый из них изящно ограничивает, вы все равно можете превысить максимальный номинальный ток на выводах питания устройства.
Для серии MSP430 серии 2 на странице 21 этого документа говорится:
Это говорит мне о том, что если объединенные выходные токи нескольких выводов достигают определенного предела, то выходные возможности любых других выводов (даже тех, которые могут быть слегка загружены) могут ухудшаться на ту же величину или, возможно, ухудшаться.
источник
Самая большая проблема, как вы уже сказали, ошибки программирования. Существует вероятность проблем, поэтому вы должны тщательно кодировать. Кроме этого, до тех пор, пока выводы не являются обоими выходами с разными уровнями, это нормально.
Использование двух выводов для управления одним источником не является редкостью (объединяя токовый выход).
Использование двух контактов для управления светодиодом (или двумя) также не редкость. Хотя не рекомендуется использовать резистор, вы можете обойтись без него. Если ваше выходное напряжение относительно близко к прямому напряжению светодиодов, то потребление тока может не быть проблемой. И есть падение напряжения на контакте. По мере увеличения источника тока напряжение на этом выводе уменьшается (от Vcc до Vcc - от 0,3 до -1 и т. Д.). По мере того как ток уменьшается, напряжение увеличивается (от Gnd к Gnd + 0.3v до + 1v и т. Д.). Это что-то вроде самокорректирующегося благословения, но на него нельзя полагаться.
И, как вы уже сказали, можно использовать простой ограничивающий ток резистор.
источник