控制/MCU
关于 UART FIFO
Synwit SWM系列单片机的
UART FIFO
如何配合接收门限中断、接收超时中断完成UART数据接收
如何配合发送门限中断完成UART数据发送
SWM芯片UART有独立的RX FIFO和TX FIFO,深度都是8
——RX FIFO 可以设定当 FIFO 中数据个数大于指定个数时产生中断,通知 APP 将接收到的数据读走。
——TX FIFO 可以设定当 FIFO 中数据个数小于指定个数时产生中断,通知 APP 将需要发送的数据写入 TX FIFO。
通过使用 FIFO 和门限中断,可以大幅减少UART_Handler 中断函数执行的频率,提高芯片执行效率。
接收门限中断与接收超时中断
以如下配置为例:
RXThreshold = 3;
RXThresholdIEn = 1;
TimeoutTime = 10;
TimeoutIEn = 1;
SWM181、SWM260、SWM320
对方发送8个数据的情况
每接收到一个数据,RX FIFO中数据个数加一,当RX FIFO中数据个数大于RXThreshold时,触发接收中断。
对方发送9个数据的情况
只有当接收FIFO中有数据,且在指定时间内未接收到新的数据时,才会触发超时中断。
若应用中希望通过数据间时间间隔作为帧间隔依据,即不管对方发送过来多少个数据,最后都能产生超时中断,可以通过在接收ISR中从RX FIFO中读取数据时总是少读一个(即让一个数据留在RX FIFO中)来实现。
SWM190、SWM211、SWM341
UARTx->TOCR.MODE = 0
与SWM181、SWM260、SWM320情况完全相同
UARTx->TOCR.MODE = 1
不管对方发送几个数据,最后
不管对方发送几个数据,
最后都能触发超时中断
以如下配置为例:
TXThreshold = 4;
TXThresholdIEn = 1;
每发送出一个数据,TX FIFO中数据个数减一,当TX FIFO中数据个数小于等于TXThreshold时,触发发送中断。
初始化时不能开启发送中断,只能在发送FIFO填入数据后再开启发送中断;否则开启发送中断后会立即触发发送中断
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !