Конфигурация контактов STM32L1 GPIO — увеличение тока источника питания из-за контакта с настройкой с открытым стоком

Настраивать

У меня есть микроконтроллер STM32L151 (прикладной процессор), и к его контакту PB5 подключено периферийное устройство (SARA-N3). Требования к периферийному устройству заключаются в том, что вывод сконфигурирован как выход с открытым стоком и используется только для его опускания на 1 секунду. Периферийное устройство имеет внутреннее напряжение до 1,1 В и максимально допустимое напряжение 1,3 В, однако уровни контактов микроконтроллера составляют 3,6 В. Сторона микроконтроллера настроена без подтягивающего/подтягивающего резистора.

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

Проблема

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

  • Первая попытка состояла в том, чтобы установить этот контакт на выход 1 и открыть сток. Теоретически это должно означать, что контакт не должен управляться и поддерживать напряжение периферии (как наблюдается), но наблюдать дополнительный ток.
  • Вторая попытка заключалась в том, чтобы включить подтягивание на стороне микроконтроллера (контакт все еще выводится). Это приводило к тому, что на выводе было напряжение 2,7 В, что не допускается периферийным выводом, и все же наблюдался дополнительный ток.
  • Третья попытка состояла в том, чтобы установить вывод в аналоговый или входной режим, но эффект был таким же, как и в первой попытке.
  • Четвертая попытка состояла в том, чтобы отключить триггер Шмидта на выводе mcu (выведен вывод). Это немного улучшилось, но все же не то, что я ожидаю
  • 5-я попытка попробовала другой контакт, т.е. PA11. Вывод сконфигурирован как выход с открытым стоком без вытягивания. Ток питания все еще есть. Он останавливается только тогда, когда я отключаю контакт и подключаю его к Vdd MCU.

Предполагать

Я предполагаю, что уровень напряжения на выводе по сравнению с уровнями напряжения на выводах микроконтроллера, вероятно, считается цифровым низким и, следовательно, заставляет некоторые полевые транзисторы пропускать ток.

Вопрос

Есть ли какие-либо предложения о том, как настроить контакт GPIO STM32L1, работающий на 3,6 В, чтобы он не пропускал ток, когда контакт, подключенный к, имеет значение напряжения 1,1 В?

Как вы определили, что это была «утечка тока» в контакт или из него?
Какая именно модель STM32L1?
@brhans Я измерил ток самого периферийного устройства, например, 3 мкА. Измерил ток mcu без периферии 7мкА. Затем я подключил периферию к микроконтроллеру и появился дополнительный ток, он был 20 мкА вместо 10 мкА.
@Justme STM32L151CC
PB5 - это вывод FT, и он должен потреблять меньше всего при настройке на аналоговый режим, где триггер Шмитта также отключен, так как в режимах ввода или вывода триггер Шмитта включен. Подтягивания и опускания должны быть явно отключены. Также необходимо убедиться, что аналоговая маршрутизация для PB5 отключена. Это ваши варианты программного обеспечения. Можете ли вы проверить, где протекает ток, если вы перережете трассу на PB5? Можете ли вы изменить оборудование?
@Justme Есть ли способ отключить маршрутизацию аналогового пути, кроме изменения режима? Также я убедился, что перерезание дорожки останавливает утечку. В настоящее время сложно изменить конечное оборудование, и я пытаюсь увидеть, что возможно в программном обеспечении. Моя 5-я попытка - попробовать контакт, отличный от PB5, например, PA11.
@Justme Я пробовал с другим пином, и у меня все та же проблема.

Ответы (1)

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

Таким образом, вы можете включить подтягивание только тогда, когда MCU работает.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab


Другой вариант:

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

Вы можете сделать делитель напряжения с двумя резисторами, чтобы достичь 1,1 В, а затем использовать АЦП для считывания значения.

Несмотря на то, что напряжение составляет 2,7 В, что выше допустимого, это может быть нормально, поскольку ток на самом деле очень мал, так как встроенная подгрузка микроконтроллера очень высока, поэтому ток будет ограничен несколькими мкА и не должен поджарить ваше устройство. Не забудьте отключить подтягивание перед переводом микроконтроллера в спящий режим и установить вывод в качестве входа.