打印
[应用相关]

STM32 USART RX使用DMA接收的话,如何判断接收完一帧数据呢

[复制链接]
楼主: axiom
手机看帖
扫描二维码
随时随地手机跟帖
61
如果要使用DMA作为USART接收控制器的话,必须要有一个固定的数据帧格式,比如:数据头+设备号+数据长度+数据包;根据数据帧格式进行接收配置DMA。帧格式是为了防止从机在通信中停机或者数据丢包的情况下,不至于导致之后的数据通信都瘫痪。

使用特权

评论回复
62
janesnf| | 2014-3-20 11:41 | 只看该作者
mark! 单片机菜鸟学习学习

使用特权

评论回复
63
lyzhangxiang| | 2014-7-8 16:53 | 只看该作者
不错的老帖子

使用特权

评论回复
64
loodao| | 2014-8-25 15:51 | 只看该作者
modbus的协议不就可以做到吗

使用特权

评论回复
65
罗菜鸟| | 2014-11-5 23:11 | 只看该作者
你们真是太幼稚,STM32的UART有个中断叫RX IDLE

使用特权

评论回复
66
sunguoqiang| | 2014-12-24 16:53 | 只看该作者
如果发送方发送的一帧数据分成几段了(比如发送方系统中有很多中断导致发送时有可能会被中断)此时 会产生几次IDLE中断不太不好处理

使用特权

评论回复
67
zhshw0614| | 2016-2-17 14:39 | 只看该作者
乌月明星稀 发表于 2013-8-26 21:32
如果要使用DMA作为USART接收控制器的话,必须要有一个固定的数据帧格式,比如:数据头+设备号+数据长度+数 ...

我用SPI1 DMA1方式读取外部AD数据,把DMA接收到的AD数据和其他变量数据数组重新组合之后再通过SPI3 DMA2发出去,数据会出错,如果不重新组合,直接把收到的数据数组转发出去不会出错,这是什么原因,有什么好的解决办法

使用特权

评论回复
68
li123452| | 2016-4-6 13:40 | 只看该作者
项目要求波特率921.6Kbps,字节超时10us,帧超时1ms。

使用特权

评论回复
69
hugo0chen| | 2016-4-23 13:23 | 只看该作者
mark 真是好贴一枚

使用特权

评论回复
70
c~琳| | 2016-11-21 15:54 | 只看该作者
devenkong 发表于 2010-10-18 23:53
无论是串口还是SPI口,作为通信接口有多种处理方式,没有说timeout和定长接收或者中断中处理一定是哪种好, ...

总结的很全面,学习啦

使用特权

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

本版积分规则