搜索
bottom↓
回复: 27

串口波特率设置过高会丢失数据的问题?

[复制链接]

出0入0汤圆

发表于 2014-10-24 10:32:56 | 显示全部楼层 |阅读模式
在使用串口透传时,波特率设置高于38400就会出现都字节丢失的问的,有没有什么好的解决办法(降低波特率除外)?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入8汤圆

发表于 2014-10-24 10:51:01 来自手机 | 显示全部楼层
串口透传是什么?

出0入0汤圆

发表于 2014-10-24 11:02:32 | 显示全部楼层
我做的时候在波特率低的时候会出现传送错误???
头像被屏蔽

出0入0汤圆

发表于 2014-10-24 11:13:01 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2014-10-24 11:16:46 | 显示全部楼层
是的,串口传数据容易丢失数据,有时需要重复传送

出100入101汤圆

发表于 2014-10-24 11:17:19 | 显示全部楼层
1、建立一个先进先出的队列,保存串口中断收到的数据。2、开启FIFO 3、单独用一个单片机接收数据

出0入0汤圆

 楼主| 发表于 2014-10-24 12:51:59 | 显示全部楼层
lmt50211 发表于 2014-10-24 11:02
我做的时候在波特率低的时候会出现传送错误???

不会吧,那应该就是你的程序的问题

出0入0汤圆

 楼主| 发表于 2014-10-24 12:53:05 | 显示全部楼层
canspider 发表于 2014-10-24 10:51
串口透传是什么?

就是两个无线模块之间互发数据

出0入0汤圆

 楼主| 发表于 2014-10-24 12:54:23 | 显示全部楼层
hkjabcd 发表于 2014-10-24 11:16
是的,串口传数据容易丢失数据,有时需要重复传送

关键是重复传送的时候有时也会有丢失的情况 啊

出0入0汤圆

 楼主| 发表于 2014-10-24 12:56:11 | 显示全部楼层
csaaa 发表于 2014-10-24 11:13
定时不准也可能,这个没招,环境中有干扰也可能,这个可以用拓展频谱来实现,类似与wifi。再就是加上纠错机 ...

能不能说的具体的,因为以前都没怎么在意过串口的问题,是现在出现了这个问题后才开始关注的

出0入0汤圆

 楼主| 发表于 2014-10-24 12:57:49 | 显示全部楼层
fengyunyu 发表于 2014-10-24 11:17
1、建立一个先进先出的队列,保存串口中断收到的数据。2、开启FIFO 3、单独用一个单片机接收数据 ...

我看了缓存器中的数据,就是在用上位机将数据写到下位机的时候,在接受缓存区中看到了有数据丢失

出0入0汤圆

发表于 2014-10-24 13:06:07 | 显示全部楼层
38400不算高的,应该是你的程序问题

出0入0汤圆

 楼主| 发表于 2014-10-24 13:14:49 | 显示全部楼层
miniqq80 发表于 2014-10-24 13:06
38400不算高的,应该是你的程序问题

又实验了几遍,我也感觉是代码的问题,现在正在找,有没有什么好的检测代码的建议

出0入4汤圆

发表于 2014-10-24 13:15:49 | 显示全部楼层
接收端处理有问题吧
旧的数据还没读出来,新的数据又来了。

出0入0汤圆

发表于 2014-10-24 13:18:24 | 显示全部楼层
慢慢懂 发表于 2014-10-24 13:14
又实验了几遍,我也感觉是代码的问题,现在正在找,有没有什么好的检测代码的建议 ...

只测试串口代码,把其他的代码先停掉;单收或者单发先测试一下没有问题

出0入0汤圆

发表于 2014-10-24 13:20:47 | 显示全部楼层
学习下,我写的串口代码也不是很稳定

出0入0汤圆

 楼主| 发表于 2014-10-24 13:46:28 | 显示全部楼层
miniqq80 发表于 2014-10-24 13:18
只测试串口代码,把其他的代码先停掉;单收或者单发先测试一下没有问题 ...

试了,透传就是只做串口收发功能,而且这是在一个操作系统里面做的

出0入0汤圆

发表于 2014-10-24 14:12:51 | 显示全部楼层
慢慢懂 发表于 2014-10-24 13:46
试了,透传就是只做串口收发功能,而且这是在一个操作系统里面做的

那可能的你的收发时序有问题

出0入0汤圆

发表于 2014-10-24 16:55:12 | 显示全部楼层
不用无线,直接用串口对接,有没有问题?

出0入0汤圆

发表于 2014-10-24 18:03:34 | 显示全部楼层
我也遇到这样的问题啊stm8s,中断接收到电脑发过来的字符串,主函数原样发送到电脑, 115200间隔的丢两个字符,比如abcdefg 会变成adg, 波特率降到76800的时候间接的丢失一个字符 电脑接收到aceg ,波特率是9600的时候就是正常的。请问哪位遇到过这个问题啊?

出0入0汤圆

发表于 2014-10-24 18:14:12 | 显示全部楼层
会不会是串口转换硬件有问题,2个设备的串口脚直接链接看看,排除硬件原因先

出0入0汤圆

发表于 2014-10-24 18:15:20 | 显示全部楼层
环境干扰,线路干扰,或者是单片机晶振的误差……

出0入0汤圆

 楼主| 发表于 2014-10-24 18:46:34 | 显示全部楼层
zwjiang8212 发表于 2014-10-24 16:55
不用无线,直接用串口对接,有没有问题?

用的zigbee,做的就是无线的,不然没意义

出0入0汤圆

 楼主| 发表于 2014-10-24 18:48:08 | 显示全部楼层
atonghua 发表于 2014-10-24 18:03
我也遇到这样的问题啊stm8s,中断接收到电脑发过来的字符串,主函数原样发送到电脑, 115200间隔的丢两个字 ...

我也是这样的问题,准备好好看看代码和时序图

出0入0汤圆

发表于 2014-10-24 19:31:15 | 显示全部楼层
硬件握手 RTS/CTS

出0入0汤圆

发表于 2014-10-24 22:28:41 | 显示全部楼层
如果是无线传送的话
抗干扰就是重点
所以波特率不能很高
否则误码就会很多

出0入0汤圆

 楼主| 发表于 2014-10-24 23:03:09 | 显示全部楼层
lxa0 发表于 2014-10-24 22:28
如果是无线传送的话
抗干扰就是重点
所以波特率不能很高

关键是38400不爽搞啊,用WIFI时57600都没问题

出0入0汤圆

发表于 2014-10-24 23:20:49 | 显示全部楼层
应该是时钟没有选择2^n吧,比如11.0592M的就比12M晶振用在串口数据传输合适。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 14:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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