[STM32F1] 如何获取串口接收到数据的长度

[复制链接]
5900|13
 楼主| xialu0908 发表于 2014-3-20 16:26 | 显示全部楼层 |阅读模式
soso 发表于 2014-3-20 19:24 | 显示全部楼层
可以修改数据接收规则和触发效果来确认,如果你是利用ARM的话可以设置相应的中断
cool_coder 发表于 2014-3-20 20:11 | 显示全部楼层
如果用DMA的话从DMA计数就可以知道; 如果用中断或查询方式接收, 就只能靠软件自己计数了.
huzi2099 发表于 2014-3-21 00:09 | 显示全部楼层
这个问题的提法本身就有问题,串口受到的是数据流本身就没有长度的问题.
关键是接收端如何处理数据,或者说如何按照规则处理数据流的分组.
总结一下就三个方法
1.按时间分,视两段数据中间的停顿为分割依据,这方法不会有问题开销也小,缺点就是停顿时间降低了传输速率
2.按特定标识分割,每个段前面或后面加上特定的识别符号,识别符号过短可能会误判(比如插拔接口时会乱数据)
3.按特定长度区分段,比如人为规定好每8个字节一包,这个方法开销小速率高,但是只要有一个字节错后面全错.

当然也可组合使用1,2,3再加校验,要结合你的硬件出错概率带宽占用...综合考虑.
hwl1023 发表于 2014-3-21 11:52 来自手机 | 显示全部楼层
DMA+串口空闲中断
huzi2099 发表于 2014-3-21 11:59 | 显示全部楼层
hwl1023 发表于 2014-3-21 11:52
DMA+串口空闲中断

这个不行
hwl1023 发表于 2014-3-25 15:06 | 显示全部楼层
huzi2099 发表于 2014-3-21 11:59
这个不行

怎么不行,那里有问题?
huzi2099 发表于 2014-3-25 21:17 | 显示全部楼层
hwl1023 发表于 2014-3-25 15:06
怎么不行,那里有问题?

空闲中断是在受到完整数据包括校验位后产生的.每收到一个字节都会来这个中断.
hwl1023 发表于 2014-3-25 22:41 | 显示全部楼层
huzi2099 发表于 2014-3-25 21:17
空闲中断是在受到完整数据包括校验位后产生的.每收到一个字节都会来这个中断. ...

https://bbs.21ic.com/icview-224315-1-1.html
huzi2099 发表于 2014-3-26 10:22 | 显示全部楼层
hwl1023 发表于 2014-3-25 22:41
https://bbs.21ic.com/icview-224315-1-1.html

是和发送端有关系
hwl1023 发表于 2014-3-27 16:00 | 显示全部楼层
huzi2099 发表于 2014-3-26 10:22
是和发送端有关系

szyijitong 发表于 2014-4-7 18:20 | 显示全部楼层
自己加个变量啊
szyijitong 发表于 2014-4-7 18:20 | 显示全部楼层
收一次加1
huzi2099 发表于 2014-4-7 23:42 | 显示全部楼层
szyijitong 发表于 2014-4-7 18:20
收一次加1

单单计数有时候也不行,比如一旦乱数据出错无法恢复到正常包计数.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部