[技术相关] SWM芯片UART FIFO应用笔记

[复制链接]
 楼主| 发表于 2023-2-10 09:36 | 显示全部楼层 |阅读模式
本帖最后由 SSWMCU 于 2023-2-10 09:43 编辑

简介
本应用笔记介绍了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;


SWM181SWM260SWM320对方发送8个数据的情况
8.png
每接收到一个数据,RX FIFO中数据个数加一,当RX FIFO中数据个数大于RXThreshold时,触发接收中断。



对方发送9个数据的情况

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

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


SWM190SWM211SWM341UARTx->TOCR.MODE = 0
SWM181、SWM260、SWM320情况完全相同


UARTx->TOCR.MODE = 1
不管对方发送几个数据,最后都能触发超时中断






发送门限中断
以如下配置为例:
TXThreshold = 4;
TXThresholdIEn = 1;

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

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

9.png
发表于 2023-2-22 17:04 | 显示全部楼层
这个FIFO是硬件提供的FIFO吗?
发表于 2023-2-22 17:05 | 显示全部楼层
如果要求实时性高,是不是就不能用FIFO了。
发表于 2023-2-22 17:05 | 显示全部楼层
好像没有用过UART的FIFO,看着还挺有趣的。
发表于 2023-2-22 17:41 | 显示全部楼层
天天向善 发表于 2023-2-22 17:04
这个FIFO是硬件提供的FIFO吗?

是的
发表于 2023-3-2 10:10 | 显示全部楼层
uart fifo 中断怎样产生
发表于 2023-3-2 10:40 | 显示全部楼层
FIFO控制寄存器是用来干什么的
发表于 2023-3-2 11:33 | 显示全部楼层
怎样将fifo读出来的一串数字按照大小顺序拼接起来
发表于 2023-3-2 12:01 | 显示全部楼层
串口缓存区如果满了会怎么样              
发表于 2023-3-2 15:40 | 显示全部楼层
saservice 发表于 2023-3-2 10:40
FIFO控制寄存器是用来干什么的

发送 FIFO
通用发送 FIFO 是一个 32 位宽、8 单元深、先进先出的存储缓冲区。通过写数据(DATA)寄存器
来将数据写入发送 FIFO,数据在由发送逻辑读出之前一直保存在发送 FIFO 中。并行数据在进行
串行转换并通过 MOSI 管脚分别发送到相关的从机之前先写入发送 FIFO。
接收 FIFO
通用接收 FIFO 是一个 32 位宽、8 单元深、先进先出的存储缓冲区。从串行接口接收到的数据在
读出之前一直保存在缓冲区中,通过读 DATA 寄存器来访问读 FIFO。从 MISO管脚接收到的串行
数据在分别并行加载到相关的主机接收 FIFO 之前先进行记录
发表于 2023-3-2 15:45 | 显示全部楼层
51xlf 发表于 2023-3-2 12:01
串口缓存区如果满了会怎么样

溢出,数据会丢
发表于 2023-3-2 15:51 | 显示全部楼层
本帖最后由 华芯微特FAE 于 2023-3-2 15:53 编辑
macpherson 发表于 2023-3-2 10:10
uart fifo 中断怎样产生

您这边可以参考数据手册390页

华芯微特SWM341数据手册V1.20.pdf

21.39 MB, 下载次数: 2

发表于 2023-3-6 15:36 | 显示全部楼层
根据FIFO工作的时钟域分为同步/异步FIFO
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:广东华芯微特集成电路有限公司
简介:华芯微特是一家由留美归国资深技术团队创立的中国芯片设计公司,是国家高新技术企业。2014年进军MCU产业,专注于32位MCU研发设计,并针对细分市场提供参考解决方案。

3

主题

3

帖子

1

粉丝
快速回复 返回顶部 返回列表