Synwit SWM系列单片机之UART FIFO

cathy的头像
cathy 发布于:周二, 02/14/2023 - 15:37 ,关键词:

关于 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个数据的情况

1.png

每接收到一个数据,RX FIFO中数据个数加一,当RX FIFO中数据个数大于RXThreshold时,触发接收中断。

对方发送9个数据的情况

2.png

只有当接收FIFO中有数据,且在指定时间内未接收到新的数据时,才会触发超时中断。

若应用中希望通过数据间时间间隔作为帧间隔依据,即不管对方发送过来多少个数据,最后都能产生超时中断,可以通过在接收ISR中从RX FIFO中读取数据时总是少读一个(即让一个数据留在RX FIFO中)来实现。

SWM190、SWM211、SWM341

UARTx->TOCR.MODE = 0

与SWM181、SWM260、SWM320情况完全相同

UARTx->TOCR.MODE = 1

不管对方发送几个数据,最后

不管对方发送几个数据,最后都能触发超时中断

以如下配置为例:

  • TXThreshold = 4;

  • TXThresholdIEn = 1;

3.png

每发送出一个数据,TX FIFO中数据个数减一,当TX FIFO中数据个数小于等于TXThreshold时,触发发送中断。

初始化时不能开启发送中断,只能在发送FIFO填入数据后再开启发送中断;否则开启发送中断后会立即触发发送中断。

来源:华芯微特32位MCU

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 68