慢慢懂 发表于 2014-10-24 10:32:56

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

在使用串口透传时,波特率设置高于38400就会出现都字节丢失的问的,有没有什么好的解决办法(降低波特率除外)?

canspider 发表于 2014-10-24 10:51:01

串口透传是什么?

lmt50211 发表于 2014-10-24 11:02:32

我做的时候在波特率低的时候会出现传送错误???

csaaa 发表于 2014-10-24 11:13:01

hkjabcd 发表于 2014-10-24 11:16:46

是的,串口传数据容易丢失数据,有时需要重复传送

fengyunyu 发表于 2014-10-24 11:17:19

1、建立一个先进先出的队列,保存串口中断收到的数据。2、开启FIFO 3、单独用一个单片机接收数据

慢慢懂 发表于 2014-10-24 12:51:59

lmt50211 发表于 2014-10-24 11:02
我做的时候在波特率低的时候会出现传送错误???

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

慢慢懂 发表于 2014-10-24 12:53:05

canspider 发表于 2014-10-24 10:51
串口透传是什么?

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

慢慢懂 发表于 2014-10-24 12:54:23

hkjabcd 发表于 2014-10-24 11:16
是的,串口传数据容易丢失数据,有时需要重复传送

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

慢慢懂 发表于 2014-10-24 12:56:11

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

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

慢慢懂 发表于 2014-10-24 12:57:49

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

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

miniqq80 发表于 2014-10-24 13:06:07

38400不算高的,应该是你的程序问题

慢慢懂 发表于 2014-10-24 13:14:49

miniqq80 发表于 2014-10-24 13:06
38400不算高的,应该是你的程序问题

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

hemingjing 发表于 2014-10-24 13:15:49

接收端处理有问题吧
旧的数据还没读出来,新的数据又来了。

miniqq80 发表于 2014-10-24 13:18:24

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

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

carney 发表于 2014-10-24 13:20:47

学习下,我写的串口代码也不是很稳定

慢慢懂 发表于 2014-10-24 13:46:28

miniqq80 发表于 2014-10-24 13:18
只测试串口代码,把其他的代码先停掉;单收或者单发先测试一下没有问题 ...

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

miniqq80 发表于 2014-10-24 14:12:51

慢慢懂 发表于 2014-10-24 13:46
试了,透传就是只做串口收发功能,而且这是在一个操作系统里面做的

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

zwjiang8212 发表于 2014-10-24 16:55:12

不用无线,直接用串口对接,有没有问题?

atonghua 发表于 2014-10-24 18:03:34

我也遇到这样的问题啊stm8s,中断接收到电脑发过来的字符串,主函数原样发送到电脑, 115200间隔的丢两个字符,比如abcdefg 会变成adg, 波特率降到76800的时候间接的丢失一个字符 电脑接收到aceg ,波特率是9600的时候就是正常的。请问哪位遇到过这个问题啊?

cnxh 发表于 2014-10-24 18:14:12

会不会是串口转换硬件有问题,2个设备的串口脚直接链接看看,排除硬件原因先

sdf159372008 发表于 2014-10-24 18:15:20

环境干扰,线路干扰,或者是单片机晶振的误差……

慢慢懂 发表于 2014-10-24 18:46:34

zwjiang8212 发表于 2014-10-24 16:55
不用无线,直接用串口对接,有没有问题?

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

慢慢懂 发表于 2014-10-24 18:48:08

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

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

伍师傅32 发表于 2014-10-24 19:31:15

硬件握手 RTS/CTS

lxa0 发表于 2014-10-24 22:28:41

如果是无线传送的话
抗干扰就是重点
所以波特率不能很高
否则误码就会很多

慢慢懂 发表于 2014-10-24 23:03:09

lxa0 发表于 2014-10-24 22:28
如果是无线传送的话
抗干扰就是重点
所以波特率不能很高


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

tangkuan660 发表于 2014-10-24 23:20:49

应该是时钟没有选择2^n吧,比如11.0592M的就比12M晶振用在串口数据传输合适。
页: [1]
查看完整版本: 串口波特率设置过高会丢失数据的问题?