I want to improve auart real time capability,but I found some problem:
1. FIFO length is fixed,can't be changed,and in DMA mode,it must be opened
2. It can't generate an interrupt when auart rx pin receives one byte data
3. Because AUART DMA timeout function needed at least 1 bit time delay,I added a signal pin to trig driver to read rx buffer.When the AUART received data,then signal pin trigged interrupt,then the program entered the interrupt service.In ISR,I forced to stop DMA and copy DMA data to buffer,then I read receive FIFO.However,I can't get the right FIFO status from the AUART status register.
MCU send data to i.mx28 AUART and trig i.mx28 pinctrl interrupt-->In ISR,memcpy(buffer,DMA Buffer,DMA received length)
I need help,thanks!!!
Hi,
I have delved into this and it seems that the UART status like RXCOUNT field is updated only at the DMA RX interrupt or RX timeout interrupt.
You could wait until the timeout or maybe use the DEBUG registers of the DMA (DEBUG1 and DEBUG2). ("transfer in progress" state vs "transfer done" state in DEBUG1 register or number of bytes remaining for transfer in DEBUG2 register)
Alejandro