OpenEdv-开源电子网

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

stm32F407 DMA方式模拟串口发送偶尔出错

[复制链接]

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
发表于 2021-1-23 10:53:33 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 ColeSofCJ 于 2021-1-23 10:55 编辑

    如图,因为不小心把串口收发端搞反了,而stm32F407不支持收发端软件切换,且115200bps使用软件模拟串口误码率太高不能满足使用要求,故使用DMA+定时器方式模拟串口。现在的问题是模拟串口发送时,偶尔会出错(加不同的前导字节,出错的数据不一样,但前导字节固定后,每次出错都是一样的情况,且出错的几率不固定,有时候几率高,有时候几率低),如附件所示,加前导字节用处不大,有谁知道是啥原因,该如何解决吗?

DMA模拟串口发送出错.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2020-11-1
在线时间
32 小时
发表于 2021-4-29 22:49:50 | 显示全部楼层
请问一下,问题解决了吗?
回复

使用道具 举报

13

主题

91

帖子

0

精华

高级会员

Rank: 4

积分
749
金钱
749
注册时间
2020-6-24
在线时间
311 小时
 楼主| 发表于 2021-8-17 09:23:40 | 显示全部楼层
1030503514 发表于 2021-4-29 22:49
请问一下,问题解决了吗?

  没有,DMA控制端口实现串口收发,理论上没有问题,但误码率太差,不仅是比不上硬件串口,连模拟的软件串口都比不上,所以没法用。真要用的话,也发不了长数据,需要把长数据分割成一个一个的数据片段,并加上CRC校验再发送,接收端针对每一个收到的数据进行CRC校验,校验通过的才接收,返回接收成功指令(同样带CRC校验)。发送端若没有收到正确的接收成功指令,则需重复发送直到发送内容被成功接收! 这样做一是比较复杂,二是收发效率低,另外就是只能采取自定义协议进行收发,无法和其它开放的网络进行连接!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 06:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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