Sto provando a comunicare con la periferica UART utilizzando DMA sia per RX che per TX. Sto usando la libreria HAL fornita da ST (Generato con STCubeMX).STM32F4 Gestione errore periferico durante il trasferimento DMA (RX)
Sto gestendo un canale UART con 1.5MBaud - quindi per non perdere dati, ho configurato il DMA in modalità diretta, con buffer circolare e gestito le interruzioni di mezzo trasferimento per occuparmi dei dati e mantieni il DMA online per altri dati a venire.
Il problema è che a volte riesco a vedere nel registro di stato della UART che il bit di errore del frame è attivo e talvolta anche il flag di errore di sovraccarico è attivo.
Posso gestire i byte persi (utilizzando crc sui pacchetti strutturati), ma il problema è che la periferica smette di ricevere dati, ma il DMA non genera errori o interrompe il trasferimento.
Quindi se provo a ricevere i dati e la bandiera è bloccata sul sistema.
Ho visto che l'HAL fornisce una funzione __ debole che dovrebbe gestire UART_Error, ma non viene mai chiamata - e lo stato nell'handle HAL rimane normale. solo uno sguardo al registro può dire che c'è un problema.
Come devo rilevare/gestire questo tipo di errori?
Grazie