OpenEdv-开源电子网

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

【分享】分享一个可靠的STM2串口DMA发送&接收,高速通信不丢数据

[复制链接]

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
发表于 2020-9-24 10:14:34 | 显示全部楼层 |阅读模式
【1】环形FIFO作为发送和接收缓存

【2】DMA 接收半满中断、溢满中断、串口空闲中断

【3】不定长串口数据接收

【4】高波特率通信不翻车(实测1.5Mbps毫无压力)

详细实现:https://acuity.blog.csdn.net/article/details/108367512

代码仓库:https://github.com/Prry/stm32f0-uart-dma
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-8-7
在线时间
4 小时
发表于 2020-9-24 10:46:28 | 显示全部楼层
感谢,正好在研究这,学习了
回复 支持 反对

使用道具 举报

0

主题

65

帖子

0

精华

高级会员

Rank: 4

积分
523
金钱
523
注册时间
2017-12-21
在线时间
76 小时
发表于 2020-9-24 14:56:27 | 显示全部楼层
有多少个外设串口支持到1.5M的?绝大部分115200
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2020-9-24 15:07:54 | 显示全部楼层
qq215379484 发表于 2020-9-24 14:56
有多少个外设串口支持到1.5M的?绝大部分115200

这里使用高波特率,只是压力测试,验证程序的健壮性和性能。工业应用串口一般不会使用高波特率。高波特率一般用于板间通信,如MCU与MPU之间,MCU与MCU之间。
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-12-18
在线时间
6 小时
发表于 2020-9-25 14:12:27 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

10

主题

123

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1445
金钱
1445
注册时间
2017-10-9
在线时间
122 小时
发表于 2020-10-12 22:24:07 | 显示全部楼层
最近这几天发现串口优先级低了,在接收长数据的时候会丢失一个或几个字节,想使用DMA试试,看看能不能有所改善,打断后还会造成串口中断溢出。
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2020-10-19 10:43:34 | 显示全部楼层
增加STM32F1的实现和测试,无缝切换。
https://github.com/Prry/stm32-ua ... er/stm32f1-uart-dma
回复 支持 反对

使用道具 举报

0

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2017-10-10
在线时间
130 小时
发表于 2020-10-20 11:28:41 | 显示全部楼层
很棒,这段时间就在学习DMA串口这块,感谢分享
回复 支持 反对

使用道具 举报

0

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
357
金钱
357
注册时间
2017-10-10
在线时间
130 小时
发表于 2020-10-20 12:00:14 | 显示全部楼层
翻了翻楼主你的blog,我真是捡到宝了
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2020-10-20 15:24:52 | 显示全部楼层
YukawaManabu 发表于 2020-10-20 12:00
翻了翻楼主你的blog,我真是捡到宝了

一起交流学习
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2020-11-18 11:13:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
489
金钱
489
注册时间
2019-1-12
在线时间
65 小时
发表于 2020-11-18 14:54:54 | 显示全部楼层
嗯,刚在CSDN上看过来的……
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2020-11-18 17:26:48 | 显示全部楼层
xo37 发表于 2020-11-18 14:54
嗯,刚在CSDN上看过来的……

哈哈。欢迎指出不足
回复 支持 反对

使用道具 举报

0

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
489
金钱
489
注册时间
2019-1-12
在线时间
65 小时
发表于 2020-11-19 06:39:02 | 显示全部楼层
Acuity 发表于 2020-11-18 17:26
哈哈。欢迎指出不足

您谦虚了,我到现在没有完整的写过一个STM32的代码呢……
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2019-5-19
在线时间
51 小时
发表于 2021-3-30 10:53:37 | 显示全部楼层
楼主,太厉害了,现在正学习这方面的东西,代码仓库怎么打不开。
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2021-3-30 15:42:36 | 显示全部楼层
dongbaoding 发表于 2021-3-30 10:53
楼主,太厉害了,现在正学习这方面的东西,代码仓库怎么打不开。

GitHub最近经常访问异常。推荐用gitee:
https://gitee.com/Prry/stm32-uart-dma
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2021-1-30
在线时间
68 小时
发表于 2021-4-1 11:31:48 | 显示全部楼层
楼主有尝试过用DMA来传输W25Q128的数据到LCD屏幕上吗?
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2021-4-1 14:58:18 | 显示全部楼层
mmd 发表于 2021-4-1 11:31
楼主有尝试过用DMA来传输W25Q128的数据到LCD屏幕上吗?

没有尝试过,原则上如果spi和LCD外设的DMA都处于总线矩阵上就可以,你可以尝试去做:
1、DMA设为内存到外设模式;
2、内存地址指定为spi外设地址,外设低速为LCD地址。
如果DMA不处于总线矩阵上是不支持的!
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2021-1-30
在线时间
68 小时
发表于 2021-4-1 15:48:42 | 显示全部楼层
感谢楼主回答!!
回复 支持 反对

使用道具 举报

5

主题

56

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2946
金钱
2946
注册时间
2020-6-14
在线时间
220 小时
发表于 2021-5-10 16:29:54 | 显示全部楼层
下了学习,谢谢分享。
回复 支持 反对

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3447
金钱
3447
注册时间
2017-7-4
在线时间
869 小时
 楼主| 发表于 2022-6-19 11:43:46 | 显示全部楼层
增加H743xx支持,无缝切换:
https://blog.csdn.net/qq_2055361 ... 1001.2014.3001.5501
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-23 01:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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