Всем привет.
Есть проблема - периодически МК падает в HardFault во время обмена по UART. Процессор - STM32F405.
Формат общения - Запрос-Ответ - чужое устройство посылает команды по UART, которые МК должен обработать и отправить ответ. Скорость обмена 115200, 8N1.
Работало стабильно, но до того момента, пока обмен не стал более интенсивным.
Подцепил логический анализатор на шину и увидел, что в момент, когда МК отправляет данные, устройство тоже что-то пытается отправить - после чего логика работы МК рушится и он падает в HardFault. На скриншоте записанный обмен - верхняя линии это команды от устройства, нижняя - ответы МК, соответственно.
В момент, когда МК отправляет ответ устройству, тот по непонятной причине сам отправляет какой-то мусор (судя по содержимому) в МК, в результате последний сходит с ума и шлет какой-то адовый по своему размеру буфер (при этом в отладчике видно, что длина данных при отправке была указана верно), после чего падает.
Почему такое происходит и как бороться?
P.S. Падение в HardFault может произойти и через 5-10 минут, а может и через 1,5 часа.