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

Когда я включил его в первый раз (так что программы на uC еще не было), красный светодиод тускло светился. После загрузки программы светодиодного мигания на микроконтроллер он работает нормально (с полной яркостью), однако, если я нажимаю кнопку сброса, красный светодиод снова горит тускло, а напряжение на R1 составляет 120 мВ. Так что 120uA течет почему-то. Другой светодиод этого не делает, и напряжение на R2 равно 0.
Глядя на таблицу, я нашел только эту заметку о PB4 (стр. 60):
«После сброса эти выводы конфигурируются как альтернативные функции отладки JTAG / SW, и активируется внутреннее подтягивание на выводах PA15, PA13, PB4 и внутреннее подтягивание на выводе PA14».
Но даже если на PB4 есть подтягивание, светодиод не должен гореть, так что же вызывает такое поведение?
Редактировать:
Отложив проект на некоторое время, сейчас этого не происходит, но я не знаю, что изменилось. Я только возился с настройками загрузки в байтах опций (с помощью утилиты ST-Link), хотя я не думаю, что это имеет какое-либо отношение к раскрывающемуся списку UCPD.
Кстати, я нашел настройку по умолчанию для отключения выпадающего
меню : (и да, в настройках это называется «подтягиванием», но вроде это ошибка)

Если установлен флажок (по умолчанию), он помещает
HAL_PWREx_DisableUCPDDeadBattery();
вызов функции в функцию HAL_MspInit.
Если флажок снят, светодиод тускло светился даже после сброса, поэтому он подтвердил принятый ответ на исходный вопрос. Пока он не стал больше никогда не делать тусклое освещение.
Резюме:
- Изначально светодиод тускло светился только при сбросе.
- Это произошло из-за выпадающего меню UCPD, которое было отключено флажком «экономия энергии неактивного UCPD - отключение разряда батареи», установленного по умолчанию. Я мог проверить это, сняв флажок и не настроив вывод GPIO для светодиода, что привело к тусклому освещению даже после сброса.
- Что-то произошло, и теперь этого никогда не происходит, независимо от того, установлен ли флажок или сброшен. Может, выпадающий по какой-то причине сломался? Я знаю только, что сам вывод GPIO исправен, он может правильно управлять светодиодом при программировании.
Ответы
В справочном руководстве говорится, что эта конкретная серия MCU использует PB4 для одного из контактов CC разъема USB-C. Это означает, что контакт имеет поддержку внутренней функции выпадающего меню 5.1k, включенной по умолчанию во время сброса, поскольку в противном случае было бы невозможно использовать загрузчик для загрузки прошивки через разъем USB-C. Таким образом, если необходимо использовать JTAG, раскрывающееся меню можно отключить. Так что это повлияет и на светодиод.
Причина поведения - где-то ошибка. Либо вы на самом деле не подключены к контактам, которые, как вы думаете (это может сделать даже самый опытный инженер), либо в руководстве есть ошибка. Вы правы. Единственный способ их тусклого освещения - это наличие выдвижного ящика.
Иногда ответ зарыт глубоко в инструкции.
Если это вас раздражает, сделайте на нем сильное подтягивание.
Если он активируется по умолчанию с помощью выпадающего сигнала к GND (и это должно быть отмечено в таблице данных микропроцессора, если этот вывод имеет при инициализации выпадающее напряжение), то да, это похоже на утечку некоторого тока через светодиод. Обычно код инициализирует любые двухфункциональные контакты в их правильное состояние и / или удаляет любые подтягивания / опускания, которые не требуются. Но в вашем случае вы говорите, что кода нет. Что ж, с помощью некоторого правильно написанного кода инициализации светодиод будет инициализирован до правильного состояния запуска (вероятно, выключен по умолчанию). Если вы теряете сон из-за этого, лучше всего добавить сильное подтягивание или убедиться, что код работает, как только вы включаете плату и выполняете код.