Светодиод тускло горит при сбросе uC

Aug 19 2020

Я разработал печатную плату, на которой есть STM32G431CBT6. Также есть два светодиода, красный и зеленый, подключенные, как показано:

Когда я включил его в первый раз (так что программы на uC еще не было), красный светодиод тускло светился. После загрузки программы светодиодного мигания на микроконтроллер он работает нормально (с полной яркостью), однако, если я нажимаю кнопку сброса, красный светодиод снова горит тускло, а напряжение на R1 составляет 120 мВ. Так что 120uA течет почему-то. Другой светодиод этого не делает, и напряжение на R2 равно 0.

Глядя на таблицу, я нашел только эту заметку о PB4 (стр. 60):

«После сброса эти выводы конфигурируются как альтернативные функции отладки JTAG / SW, и активируется внутреннее подтягивание на выводах PA15, PA13, PB4 и внутреннее подтягивание на выводе PA14».

Но даже если на PB4 есть подтягивание, светодиод не должен гореть, так что же вызывает такое поведение?


Редактировать:

Отложив проект на некоторое время, сейчас этого не происходит, но я не знаю, что изменилось. Я только возился с настройками загрузки в байтах опций (с помощью утилиты ST-Link), хотя я не думаю, что это имеет какое-либо отношение к раскрывающемуся списку UCPD.

Кстати, я нашел настройку по умолчанию для отключения выпадающего
меню : (и да, в настройках это называется «подтягиванием», но вроде это ошибка)

Если установлен флажок (по умолчанию), он помещает

HAL_PWREx_DisableUCPDDeadBattery();

вызов функции в функцию HAL_MspInit.

Если флажок снят, светодиод тускло светился даже после сброса, поэтому он подтвердил принятый ответ на исходный вопрос. Пока он не стал больше никогда не делать тусклое освещение.

Резюме:

  1. Изначально светодиод тускло светился только при сбросе.
  2. Это произошло из-за выпадающего меню UCPD, которое было отключено флажком «экономия энергии неактивного UCPD - отключение разряда батареи», установленного по умолчанию. Я мог проверить это, сняв флажок и не настроив вывод GPIO для светодиода, что привело к тусклому освещению даже после сброса.
  3. Что-то произошло, и теперь этого никогда не происходит, независимо от того, установлен ли флажок или сброшен. Может, выпадающий по какой-то причине сломался? Я знаю только, что сам вывод GPIO исправен, он может правильно управлять светодиодом при программировании.

Ответы

11 Justme Aug 19 2020 at 15:24

В справочном руководстве говорится, что эта конкретная серия MCU использует PB4 для одного из контактов CC разъема USB-C. Это означает, что контакт имеет поддержку внутренней функции выпадающего меню 5.1k, включенной по умолчанию во время сброса, поскольку в противном случае было бы невозможно использовать загрузчик для загрузки прошивки через разъем USB-C. Таким образом, если необходимо использовать JTAG, раскрывающееся меню можно отключить. Так что это повлияет и на светодиод.

KyleB Aug 19 2020 at 14:55

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

Иногда ответ зарыт глубоко в инструкции.

Если это вас раздражает, сделайте на нем сильное подтягивание.

citizen Aug 19 2020 at 15:43

Если он активируется по умолчанию с помощью выпадающего сигнала к GND (и это должно быть отмечено в таблице данных микропроцессора, если этот вывод имеет при инициализации выпадающее напряжение), то да, это похоже на утечку некоторого тока через светодиод. Обычно код инициализирует любые двухфункциональные контакты в их правильное состояние и / или удаляет любые подтягивания / опускания, которые не требуются. Но в вашем случае вы говорите, что кода нет. Что ж, с помощью некоторого правильно написанного кода инициализации светодиод будет инициализирован до правильного состояния запуска (вероятно, выключен по умолчанию). Если вы теряете сон из-за этого, лучше всего добавить сильное подтягивание или убедиться, что код работает, как только вы включаете плату и выполняете код.