打印
[STM32F4]

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

[复制链接]
625|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ColeYao|  楼主 | 2021-1-23 16:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ColeYao 于 2021-1-25 09:31 编辑

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

DMA_TX_Error.png (200.91 KB )

DMA_TX_Error.png

使用特权

评论回复
沙发
ColeYao|  楼主 | 2021-1-25 09:34 | 只看该作者
  DMA+定时器操作IO口模拟串口发送数据时低概率数据出错问题已解决,目前正在调试DMA+定时器操作IO口模拟串口接收数据部分!

使用特权

评论回复
板凳
香水城| | 2021-1-25 15:16 | 只看该作者
低概率出错的原因是啥,是硬件线路方面的原因码?可以分享否?

这里有一篇分享,可以参考下。STM32定时器触发SPI逐字收发之应用示例

使用特权

评论回复
地板
香水城| | 2021-1-25 15:43 | 只看该作者
我刚提到的硬件 主要是怀疑波特率、外部干扰等。我觉得通过定时器触发DMA传输 模拟UART完全可以的。
只是多数时候没必要这么玩!

使用特权

评论回复
5
ColeYao|  楼主 | 2021-1-25 16:06 | 只看该作者
本帖最后由 ColeYao 于 2021-1-25 16:11 编辑
香水城 发表于 2021-1-25 15:43
我刚提到的硬件 主要是怀疑波特率、外部干扰等。我觉得通过定时器触发DMA传输 模拟UART完全可以的。
只是多 ...

  是的,要不是PCB不小心把RxTx弄反了,F407又不支持软件配置交换RxTx引脚,我也不会去费劲心思去搞这种高难度的方案,不过好处也是有的,做出来的板子别人抄了硬件可能会卡死在软件上,对于防抄板有一点点用!  另外,DMA+定时器方式模拟串口看起来很美好(任意IO端口可以用作高波特率串口),但是对单片机内部的资源需求比较高,要不是F407资源比较丰富一点,一般的单片机还真不怎么玩得转!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

372

帖子

5

粉丝