串口FIFO的问题

今天看了数据手册了解到串口接收数据先是发送到Receive Shift Register (RSR)寄存器中,当这8bit满了之后再shift到Receive FIFO Data Register (FRDR)寄存器中

然后现在问题来了,FRDR是一个8bit的寄存器,手册上说它有16stage,好像是说最多可以接收16Bytes?

如果这样的话,它接受的数据要到哪里去读呢——since FRDR只有8bit,通过R_SCIFA_GetReadDataRegisterAddress读到FRDR的地址之后,是只能读8bit吗还是能读16Bytes?

 

  • 这个寄存器是FIFO缓冲区的出口,入口是外部的UART口,数据从UART口进到这个FIFO缓冲区,这个缓冲区只能保存16个字节,超出之后就会溢出,如果缓冲区收到了16个字节,你第一次读FRDR就会读到第一个字节的数据,此时缓冲区就会空出一个字节的空间,第二次读就会读到第二个字节的数据,这时如果没有收到数据就会看到FIFO缓冲区有两个字节的空间。通过FDR寄存器可以知道里面收到了多少数据,这个数据会随着读取FRDR减小,随着收到数据增加