串口波特率设置过高会丢失数据的问题?
在使用串口透传时,波特率设置高于38400就会出现都字节丢失的问的,有没有什么好的解决办法(降低波特率除外)? 串口透传是什么? 我做的时候在波特率低的时候会出现传送错误??? 是的,串口传数据容易丢失数据,有时需要重复传送 1、建立一个先进先出的队列,保存串口中断收到的数据。2、开启FIFO 3、单独用一个单片机接收数据 lmt50211 发表于 2014-10-24 11:02我做的时候在波特率低的时候会出现传送错误???
不会吧,那应该就是你的程序的问题 canspider 发表于 2014-10-24 10:51
串口透传是什么?
就是两个无线模块之间互发数据 hkjabcd 发表于 2014-10-24 11:16
是的,串口传数据容易丢失数据,有时需要重复传送
关键是重复传送的时候有时也会有丢失的情况 啊 csaaa 发表于 2014-10-24 11:13
定时不准也可能,这个没招,环境中有干扰也可能,这个可以用拓展频谱来实现,类似与wifi。再就是加上纠错机 ...
能不能说的具体的,因为以前都没怎么在意过串口的问题,是现在出现了这个问题后才开始关注的 fengyunyu 发表于 2014-10-24 11:17
1、建立一个先进先出的队列,保存串口中断收到的数据。2、开启FIFO 3、单独用一个单片机接收数据 ...
我看了缓存器中的数据,就是在用上位机将数据写到下位机的时候,在接受缓存区中看到了有数据丢失 38400不算高的,应该是你的程序问题 miniqq80 发表于 2014-10-24 13:06
38400不算高的,应该是你的程序问题
又实验了几遍,我也感觉是代码的问题,现在正在找,有没有什么好的检测代码的建议 接收端处理有问题吧
旧的数据还没读出来,新的数据又来了。 慢慢懂 发表于 2014-10-24 13:14
又实验了几遍,我也感觉是代码的问题,现在正在找,有没有什么好的检测代码的建议 ...
只测试串口代码,把其他的代码先停掉;单收或者单发先测试一下没有问题 学习下,我写的串口代码也不是很稳定 miniqq80 发表于 2014-10-24 13:18
只测试串口代码,把其他的代码先停掉;单收或者单发先测试一下没有问题 ...
试了,透传就是只做串口收发功能,而且这是在一个操作系统里面做的 慢慢懂 发表于 2014-10-24 13:46
试了,透传就是只做串口收发功能,而且这是在一个操作系统里面做的
那可能的你的收发时序有问题 不用无线,直接用串口对接,有没有问题? 我也遇到这样的问题啊stm8s,中断接收到电脑发过来的字符串,主函数原样发送到电脑, 115200间隔的丢两个字符,比如abcdefg 会变成adg, 波特率降到76800的时候间接的丢失一个字符 电脑接收到aceg ,波特率是9600的时候就是正常的。请问哪位遇到过这个问题啊? 会不会是串口转换硬件有问题,2个设备的串口脚直接链接看看,排除硬件原因先 环境干扰,线路干扰,或者是单片机晶振的误差…… zwjiang8212 发表于 2014-10-24 16:55
不用无线,直接用串口对接,有没有问题?
用的zigbee,做的就是无线的,不然没意义 atonghua 发表于 2014-10-24 18:03
我也遇到这样的问题啊stm8s,中断接收到电脑发过来的字符串,主函数原样发送到电脑, 115200间隔的丢两个字 ...
我也是这样的问题,准备好好看看代码和时序图 硬件握手 RTS/CTS 如果是无线传送的话
抗干扰就是重点
所以波特率不能很高
否则误码就会很多 lxa0 发表于 2014-10-24 22:28
如果是无线传送的话
抗干扰就是重点
所以波特率不能很高
关键是38400不爽搞啊,用WIFI时57600都没问题 应该是时钟没有选择2^n吧,比如11.0592M的就比12M晶振用在串口数据传输合适。
页:
[1]