Synwit SWM系列单片机的UART FIFO详解

控制/MCU

1833人已加入

描述

关于 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填入数据后再开启发送中断;否则开启发送中断后会立即触发发送中断

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分