Безопасно ли подключать два контакта MCU напрямую друг к другу?


10

Я работаю над проектом MSP430, который требует, чтобы я направил выход одного периферийного устройства на вход другого периферийного устройства. Таким образом, у меня есть два контакта MCU, соединенных непосредственно друг с другом. Это выглядит подозрительно для меня, так как есть вероятность программной ошибки, приводящей к тому, что оба (возможно, конфликтующие) вывода. Также существует проблема состояний запуска и программирования.

В худшем случае, если один вывод управляет HI, а другой управляет LO, выводы GPIO обычно имеют гораздо больше возможностей приемника, чем возможностей источника ... так что это будет что-то вроде взятия выхода HI и его замыкания почти до земля. Что плохо ... но насколько это плохо? Это может привести к повреждению MCU?

Я часто вижу в Интернете примеры людей, использующих Arduinos для зажигания светодиода между двумя выводами без резистора, и я не слышал ни о каких историях о том, чтобы кто-нибудь зажег что-либо, кроме светодиода. Очевидно, что вы не захотите делать это в продукте, но производители вообще стараются защитить MCU от перегрузок выводов GPIO?

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

Для использования в будущем и для пользы потомков, есть ли у кого-нибудь еще идеи о правильном способе минимизации рисков соединения двух выводов MCU и, в более общем плане, минимизации рисков, связанных с возможностью перегрузки вывода GPIO?


Я также использую контроллеры msp430, если вы используете оба вывода в качестве выхода, есть вероятность закорачивания. Но если вы сконфигурируете вывод как выход, а другой как вход, это не создаст проблемы. Но в любом случае, с какой периферией вы хотите соединиться?
Йогече

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

Ответы:


6

Это не проблема, но если вы беспокоитесь о возможном конфликте выходов, подключите их с резистором 1 кОм. Это будет ограничивать ток соответственно.

Однако, если для входа нужны действительно быстрые фронты, тогда, когда вы уверены, что он работает, соедините 1 кОм с коротким или 100 кОм.

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

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

Ограничение перегрузки выполняется на некоторых микросхемах, но только в силу того, что транзисторы по своей природе не могут подавать «усилители», но это может сработать против вас, потому что если у вас есть несколько выводов o / p, закороченных на землю (или друг друга), и каждый из них изящно ограничивает, вы все равно можете превысить максимальный номинальный ток на выводах питания устройства.

Для серии MSP430 серии 2 на странице 21 этого документа говорится:

введите описание изображения здесь

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


Я посмотрел на electronics.stackexchange.com/questions/50539/… и другие в этой группе по крайней мере три дубликата. Вы делаете очень хорошее замечание по поводу перегрузки по току на выводе блока питания - я думаю, что это, вероятно, самая большая опасность подключения неиспользуемых выводов к GND / PSU. Так что ... транзистор на выводе GPIO, вероятно, просто не будет работать почти настолько, чтобы повредить сам себя (если не закорачивать что-либо вне диапазона блока питания).
Дмитрий

Почему неиспользуемые входы (считается с высоким Z) приводят к сильному потреблению тока?
Прохожий

@passerby Если вы подключаете их к шине блока питания, как это делают некоторые люди, и они случайно становятся выходами. Смотрите вопросы в строке, с которой я связан, довольно интересное обсуждение.
Дмитрий

@passerby OP предлагал это «возможность ошибки программирования, приводящей к тому, что оба (возможно, конфликтующие) выходы», и я предполагаю, что это относится к ошибкам программирования на неиспользуемых выводах.
Энди ака

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

2

Самая большая проблема, как вы уже сказали, ошибки программирования. Существует вероятность проблем, поэтому вы должны тщательно кодировать. Кроме этого, до тех пор, пока выводы не являются обоими выходами с разными уровнями, это нормально.

Использование двух выводов для управления одним источником не является редкостью (объединяя токовый выход).

Использование двух контактов для управления светодиодом (или двумя) также не редкость. Хотя не рекомендуется использовать резистор, вы можете обойтись без него. Если ваше выходное напряжение относительно близко к прямому напряжению светодиодов, то потребление тока может не быть проблемой. И есть падение напряжения на контакте. По мере увеличения источника тока напряжение на этом выводе уменьшается (от Vcc до Vcc - от 0,3 до -1 и т. Д.). По мере того как ток уменьшается, напряжение увеличивается (от Gnd к Gnd + 0.3v до + 1v и т. Д.). Это что-то вроде самокорректирующегося благословения, но на него нельзя полагаться.

И, как вы уже сказали, можно использовать простой ограничивающий ток резистор.

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