OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4161|回复: 4

这样理解的各种模式UART发送数据是否有问题

[复制链接]

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2020-5-3
在线时间
19 小时
发表于 2021-1-17 22:03:46 | 显示全部楼层 |阅读模式
30金钱
1    UART 使用普通模式发送N个字节时:第一个字节填入TDR寄存器,等待这个字节全部移入移位寄存器后,再往TDR寄存器填入下一个字节,后面重复以上过程。串口发送期间CPU不能干其他事。

2    UART 使用DMA模式发送N个字节时:由DMA将第一个字节放到TDR寄存器,等到这个字节全部移入移位寄存器后,DMA将下一个字节放到TDR寄存器,后面重复以上过程。串口发送期间CPU不影响干其他事。

3    UART 使用DMA模式+FIFO发送N个字节时:当N<=FIFO的容量时,由DMA一次性将全部数据TDR寄存器和FIFO中,等到发送移位寄存器空时,发送完成。串口发送期间CPU不影响干其他事,但DMA传输的持续时间可能比2短?。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2149

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4915
金钱
4915
注册时间
2015-1-10
在线时间
616 小时
发表于 2021-1-18 10:49:41 | 显示全部楼层
1、2没问题,2的话每次有新的数据发送时需要查看DMA是否发送完
3的话只是把待发送的数据放入FIFO,然后重复2的操作,不会经常出现2的问题,效率高一点
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2021-1-18 17:18:00 | 显示全部楼层
1、DMA发送,CPU只需把数据拷贝到DMA 发送buf即可,发送过程CPU不需介入。
2、ST哪个型号带FIFO?如果是只软件FIFO还是需要CPU管理。
参考uart dma收发实现:https://acuity.blog.csdn.net/article/details/108367512
回复

使用道具 举报

16

主题

136

帖子

0

精华

高级会员

Rank: 4

积分
577
金钱
577
注册时间
2020-11-19
在线时间
113 小时
发表于 2021-1-18 17:56:26 | 显示全部楼层
感觉没什么毛病
八十、八十、八十!
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2020-5-3
在线时间
19 小时
 楼主| 发表于 2021-1-18 23:04:41 | 显示全部楼层
Acuity 发表于 2021-1-18 17:18
1、DMA发送,CPU只需把数据拷贝到DMA 发送buf即可,发送过程CPU不需介入。
2、ST哪个型号带FIFO?如果是只 ...

我用的是H743,带有硬件fifo
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 00:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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