ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
1329476 Топик полностью
il-2 (12.07.2023 08:07, просмотров: 300) ответил my504 на Имеется некое серийное устройство с STM32F407. На некоторых образцах иногда слетает прошивка. Вроде бы во время коммутации питания. Долго ловили экземпляр со слетевшей прошивкой и открытым кодом. Поймали. Выяснилось, что обнулились (именно стали равны нулю) первые 9 (девять) байт флеша. Сиречь, инициализация стека и 3 байта из 4 первого адреса таблицы векторов прерываний. Все остальное ОК.
Я тут отдельно напишу свое видение, в т.ч. отрезюмирую то, что тебе уже другие тут написали, и что ты упорно игнорируешь. 

У тебя в прошивке есть код работы с FLASH. Если исключить внешнюю радиацию - !!!единственный!!! способ испортить FLASH - это спонтанное выполнение этого кода. Если ты этому не веришь, то можешь дальше не читать.

Дальше возможны 2 варианта.

1. Глюк в программе. Этот вариант и способ борьбы на твоей совести, здесь я его не рассматриваю.

2. Аппаратные глюки, работа МК при отличных от рекомендуемых электрических параметрах. Это прежде всего напряжение питания, причем как завышенное так и заниженное.

Что касается завышенного питания - защиты от него в МК нет.

С заниженным питанием все хитрее. В STM32 есть схема POR, которая гарантирует что МК не будет работать при напряжении ниже нормы. А у STM32F407 есть еще программируемый фьюзами BOR. Но и без BOR должно работать нормально.

К слову - у Artery и Gigadevice тоже есть POR, но в отличии от STM32 на него надеяться нельзя. Дело в том что уровень POR там такой-же как у STM32 (2В), а минимальное рабочее напряжение у них от 2.4В, 2.6В. Т.е. необходимо принимать доп. меры чтобы сигнал сброса МК снимался когда напряжение питания в норме (внешний супервизор, BOR(есть в GD32F40x)).

Схема POR и BOR работают от питания VDA. Если VDA и VDD отличаются - то могут быть проблемы. А у тебя между ними RC-цепочка, так что в принципе возможно что POR и BOR не реагируют на проблемы с питанием.

Тебе тут советуют убрать код работы с FLASH, чтобы убедиться что это из-за него. По мне - так это лишнее, и так ясно что это из-за него.

От себя посоветую - убрать резистор между VDA и VDD.