Спалил плату управления спектрографом (благо, хоть не последняя итерация и распаяно на ней не так много было).
А все из-за невнимательного чтения даташитов! При управлении драйвером шаговых двигателей L6208N ногу EN этого драйвера я подтягивал к +3.3В или земле напрямую (в режиме push-pull output). В итоге, решив проверить, почему на малых оборотах у меня не вращался шаговик, и впилив максимальный ток, я получил перегрев драйвера ШД с отключением. Естественно, как и написано в руководстве, драйвер прижал к земле ногу EN. И получилась КоЗа. И сдох мой бедненький STM32F103 ☹
Теперь вот думаю, как выйти из положения: платы-то новые уже заказаны. Резистор, подтягивающий к плюсу, уже не воткнешь. А STM32F103 не умеет подтягивать ногу к плюсу в режиме вывода.
Т.е. либо менять режимы (push-pull с прижатием к земле в отключенном состоянии и pull-up input во включенном), либо навешивать резисторы и ставить режим open-drain output.
P.S.
А ведь писал! Черным по серому сам же написал:
Вход ENABLE является еще и выходом: если с драйвером L6208 случается какой-то «косяк» (перегрев, скачок тока), то драйвер самостоятельно отключает напряжение на нагрузке, а ENABLE подтягивает к земле. Это значит, что можно проверять, не случилась ли аварийная ситуация, если ногу контроллера, управляющую портом ENABLE, активировать в режиме выхода с открытым коллектором.
По спецификации STM32, в режиме открытого коллектора при подаче единицы на выход порта просто запирается транзистор, подтягивающий ногу к земле. Если же на выход подать нуль, то нога опять подтягивается.
Таким образом, подтянув ногу контроллера к +5В (ногу нужно выбирать FT) через, скажем, пятикилоомный резистор, а между ней и ENABLE воткнув, скажем, килоомный резистор (и обязательно не забыть шунтировать ногу ENABLE кондером на землю, иначе можно пожечь управляющий контроллер), можно и рыбку съесть и включать/выключать нужный двигатель, и проверять, не было ли аварий (а для этого можно повесить на соответствующие ноги контроллера прерывание периферии по спадающему фронту).
Ээх!