可以参考这篇**

[复制链接]
7591|32
 楼主| 发霉的味道 发表于 2007-2-5 16:20 | 显示全部楼层 |阅读模式
我想做一个波特率自动检测的程序,用汇编写,我试过检测起始脉冲的宽度来计算波特率,可是不行,有哪位高人能否提供一下思路,还有就是能否实现在未知波特率的情况下识别字串呢??
iC921 发表于 2007-2-5 16:29 | 显示全部楼层

我还不知道波特率是什么意思呢

 楼主| 发霉的味道 发表于 2007-2-5 16:32 | 显示全部楼层

汗!!

我说的是51的串口通信呀!
 楼主| 发霉的味道 发表于 2007-2-5 16:35 | 显示全部楼层

每5分钟看一次是否有人回复!!

我在线等哦,真的很希望有高手指点一下,感激不尽!!!
yjinter 发表于 2007-2-5 16:42 | 显示全部楼层

假设主机A,从机B,从机自动检测波特率

以下是步骤:
1、A发0X55,发一个等待20MS
2、B不断切换波特率去接收,一旦接收到0X55,立刻返回一个0XAA。此时波特率就是A的发送波特率。
3、A收到0XAA,马上终止发送0X55。
A,B同步完毕。保守点还可以再重新确认一次。
yjinter 发表于 2007-2-5 16:45 | 显示全部楼层

过程中,B可能会出现帧错误,做好错误处理就OK

 楼主| 发霉的味道 发表于 2007-2-5 16:46 | 显示全部楼层

谢谢答复!!

这种在已知同步字符的情况下,那么在未知字符以及未知波特率的情况下呢??能否指点下??
hq_y 发表于 2007-2-5 16:46 | 显示全部楼层

我觉得hotpower有一个波特率自动检测的帖子:你可以搜索一下

 楼主| 发霉的味道 发表于 2007-2-5 16:49 | 显示全部楼层

!!

我拜读过hotpower大侠的这个贴子,内容是反汇编别人的HEX文件,也是采用已知同步字符的方式.我想知道在未知字符的情况下如何处理.
yjinter 发表于 2007-2-5 16:53 | 显示全部楼层

见下

只要A发送的是经过校验(CRC8,奇偶)的一串字符,B去校验就可以了。
yjinter 发表于 2007-2-5 16:55 | 显示全部楼层

搞别人的^%&%^#$%#$%,那就没做过了。

 楼主| 发霉的味道 发表于 2007-2-5 16:57 | 显示全部楼层

呜呜......

我是想知道在未知波特率以及所发送字符的情况下,让程序处理得到正确的波特率,再进行通信.
yjinter 发表于 2007-2-5 16:59 | 显示全部楼层

看看串口协议吧。。说不定能总结个规律出来^_^

 楼主| 发霉的味道 发表于 2007-2-5 17:02 | 显示全部楼层

???

如果能总结出规律我还问什么啊,你说是吧.
wjsue 发表于 2007-2-5 17:07 | 显示全部楼层

没戏

未知波特率以及所发送字符???没有通用办法!!!
假如对方发的是全零,或紧跟起始脉冲后的位是n个0,然后是全1,你有办法知道波特率???
 楼主| 发霉的味道 发表于 2007-2-5 17:13 | 显示全部楼层

如何知道!!

谢谢指点!!洗耳恭听!!
wjsue 发表于 2007-2-5 17:25 | 显示全部楼层

一般情况下

  开始时,统计每一个0的宽度,保存最小的宽度;统计每一个1的宽度,保存最小的宽度。这两个最小宽度中最小的就是1位的宽度了,这样就可以知道波特率了。
  当然,前提是你接收的的位必须出现过010或101才行。
 楼主| 发霉的味道 发表于 2007-2-5 17:34 | 显示全部楼层

!!

这个思路值得一试,还有其他思路吗?各位大侠!!多多指点!!
电子尘埃 发表于 2007-2-5 22:30 | 显示全部楼层

啊,有重吗?哈哈,晚上无聊过来顶沉广告贴

 楼主| 发霉的味道 发表于 2007-2-6 08:46 | 显示全部楼层

!!!

大侠!!你就别笑了,不懂就问,这很正常啊.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

58

帖子

0

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