发一个自适应波特率的程序,看有没有人感兴趣

2020-02-02 09:20发布

搜了下好像坛子里还没人玩这个,个人觉得很有用,特别是产品比较开放的时候可以自动调节波特率,而且也不用愁晶振更换的问题了(例如12M、14M、10M都无所谓..)

点击此处下载 ourdev_630154BNSSDG.doc(文件大小:118K) (原文件名:单片机从机的波特率自适应设置.doc)

原理是测起始位宽度(第一位),并以此为标准设置波特率,呵呵,不是很难哈



(原文件名:串口 TTL电平规范,发送01 s所以低位在前.JPG)


(原文件名:串口 TTL电平规范,发送55.JPG)

注:此办法需要主机发送一个标准信号,例如01H,

我在想一个更好办法,就是多次捕获脉宽,然后取最小值(1B),然后平均~,应该也能实现~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
64条回答
bigZ
1楼-- · 2020-02-04 05:20
LZ用的USBee AX ?。。。。
Ian11122840
2楼-- · 2020-02-04 05:39
 精彩回答 2  元偷偷看……
bigZ
3楼-- · 2020-02-04 08:15
回复【14楼】Ian11122840  船儿舟
回复【13楼】bigz
lz用的usbee ax ?。。。。
-----------------------------------------------------------------------
yes`
我在想,捕获低电平脉宽应该不难,
把低电平宽度存到数组里,a[1,2,3,4,5,6,7,8....],假设最小宽度为1b,那么数组里的值都是1b的整数倍:
例如[b,2b,b,3b,4b,b,b....]
现在的问题是如何求得最小宽度。
可不可以做个循环,每次比较数组里的最小值后,然后来做一个滑动滤波,赋给b,这样就锁定目标宽度了!
-----------------------------------------------------------------------

即使这样还是需要一个前导码用来测脉宽,否则,如果不巧发来的数据正好是2位宽度(如0xC3),这个方法就不很凑效了
Ian11122840
4楼-- · 2020-02-04 14:03
点击此处下载 ourdev_630702F90TTG.pdf(文件大小:198K) (原文件名:MSP430UART串口波特率自动检.pdf)


又找到一篇自适应波特率的办法,这个办法是用的发送OD,看它收到什么



(原文件名:未命名.JPG)


(原文件名:未命名.JPG)
Ian11122840
5楼-- · 2020-02-04 15:35
我觉得上面的办法都很雷人,既然都能让主机发送特定字符了,难道还不知道主机波特率吗??

我现在遇到的情况是,不知道未来主机的波特率是多少,但是允许丢失一些数据(我在做GPS信号采集)

估计我这种情况更典型
bigZ
6楼-- · 2020-02-04 16:22
既然允许丢失一些数据,你说的那个测最小脉宽的办法基本是可行的
大不了每组数据都由前导码开始

一周热门 更多>