STM32: UART DMA не запускается правильно - PullRequest
0 голосов
/ 20 апреля 2020

Я использую два STM32H743, подключенных через RS232. Эти два модуля подключены к одному источнику питания. Они используют UART с DMA. Когда я включаю модули одновременно, UART и DMA запускаются правильно. Но когда я перезагружаю один из модулей, когда другие находятся в активном состоянии, UART и DMA модуля сброса не запускаются, поэтому они не могут связываться друг с другом.
Эта проблема также встречалась ранее с серией STM32F4. MCU подключен к FPGA, и они общаются через UART. Когда FPGA запускается до MCU, DMA и UART не запускаются должным образом. Что может вызвать эту проблему? Нужно ли иметь состояния High-Z или плавающий вывод перед запуском UART?

1 Ответ

0 голосов
/ 21 апреля 2020

Периферийные устройства UART и DMA обычно имеют детектор ошибок, поэтому имеют свои флаги в регистре состояния. При возникновении ошибки, STM32 HAL прекратит любую продолжающуюся передачу и будет ждать, пока вы не обработаете этот сбой. Вы можете проверить с помощью модуля отладки регистры состояния HAL, чтобы устранить проблему, и добавить обработку к ней в своем коде. Сначала вы можете перезагрузить периферийное устройство, запустив DeInit () и сразу после запуска процедуры Init () периферийного устройства с ошибкой, и сбросить любой другой фрагмент кода, например, конечные автоматы и прочее, которое использует данные из этого периферийного устройства.

...