打印

关于STM32F2的USART使用DMA的问题,请教一下大家

[复制链接]
4401|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kuyu20|  楼主 | 2013-6-26 10:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
usart3,接收和发送都用DMA,都是非循环模式,接收完成有中断,波特率115200,用的是带自动切换方向的max13487芯片(RS485)。
问题是这样的:1.接收完后了,中断里设个标志,主程序里判断这个标志,将接收到的数据立马用DMA再发送出去,但是电脑串口接收到的数据不是其发发出的数据。如果stm32接收完毕后,延时一点点时间再发送出去,则电脑接收到的数据是正确的。不知道是max13487切换来不及导致的数据错误,还是stm32接收完成后,要等一段时间才能转发?
2.DMA的发送在非循环模式下,只能发送一次(已经执行了关闭DMA-设置发送数据量-开启DMA的动作),必须重新初始化设置DMA通道后,才能再次发送。是不是必须这样?stm32F1就不需要重新初始化通道,只需要执行关闭DMA-设置发送数据量-开启DMA的动作就可以再次发送。是什么原因呢?
沙发
airwill| | 2013-6-26 12:37 | 只看该作者
不知道是max13487切换来不及导致的数据错误,还是stm32接收完成后,要等一段时间才能转发?
都有可能, 可以用示波器观测波形验证一下

使用特权

评论回复
板凳
kuyu20|  楼主 | 2013-6-26 19:38 | 只看该作者
我认为可以忽略13487的切换方向导致的问题,因为自动切换是它的特点,如果自动切换前还要延时一段时间,那这个功能就太失败了,还不如不要!

使用特权

评论回复
地板
cjhk| | 2013-6-26 20:45 | 只看该作者
不是很了解   楼主  帮你顶一个   不错哦   

使用特权

评论回复
5
qingqiu647| | 2013-7-4 01:32 | 只看该作者
切换485收发状态时,加点延时

使用特权

评论回复
6
baiyunfei.k.f| | 2013-7-4 13:45 | 只看该作者
应该是485切换的原因,至于DMA发送,F2我没用过,F1正如你所说

使用特权

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

本版积分规则

14

主题

65

帖子

1

粉丝