Rilevamento della linea inattiva (UART)
Una funzione della UART che scatta quando la linea di ricezione resta silenziosa per il tempo di un intero carattere: il modo in cui l'hardware dice che un messaggio è finito.
Il DMA è ottimo per ricevere dati seriali senza che la CPU tocchi ogni byte, ma richiede di conoscere in anticipo la lunghezza. Un modulo GPS o la risposta a un comando AT inviano righe di lunghezza ignota. Il rilevamento della linea inattiva risolve il problema: quando la linea resta inattiva (alta) per un intero frame dopo l'ultimo carattere, la UART imposta un flag e può generare un interrupt. Sugli STM32 si chiama IDLE.
Lo schema che ne deriva è un DMA circolare su un buffer ad anello più tre interrupt: metà trasferimento, ritorno all'inizio e linea inattiva. Nel gestore si legge di quanto è avanzato il contatore del DMA e si sa esattamente quali byte sono nuovi. Il limite è che la finestra di inattività dura un solo carattere: un mittente che si ferma a metà pacchetto produce due mezzi messaggi. I chip più recenti aggiungono perciò anche un timeout del ricevitore configurabile.