串口波特率自适应是怎么做的?
答案:2 悬赏:10 手机版
解决时间 2021-01-30 01:16
- 提问者网友:最爱你的唇
- 2021-01-29 21:05
串口波特率自适应是怎么做的?
最佳答案
- 五星知识达人网友:孤老序
- 2021-01-29 21:23
这几天闲着没事情,找点事情做,搜集了一下串口通讯波特率自适应得技术文章。颇长了一番见识,这里把心得写一下:
首先,从技术上的必要性上该技术可分为两类:
一、接收端工作频率固定,使用典型波特率通讯。程序员比较喜欢这种情况,无论是测量计算还是比对查表,都相对简单。
然后,从技术实现方式的方式上也可分为两类:
一、具有独立的同步字符。使用串行通讯时,要先进行同步操作,即接收端通过对比接收到的字符与同步字符的差异调整波特率,或者通过定时器测量同步字符的位宽计算波特率。
二、没有独立的同步字符。即不管波特率如何,可以直接通讯。这里面通常又有两种情况。1、通讯命令开始字符固定,比如一些短消息模块使用AT指令集,每条指令都是以AT开始的,这样虽然是命令但是有同步的作用,只不过要求必须在真实命令到来前调整波特率,判断必须快速准确。2、随机字符可以同步波特率,这种方法在周立功的文章里有描述。这种情况,其实也是有限制的:即字符最后一位必须是0,且同步字符只能是独立的字符,不能有连发字符。
没有一种方法是万能的,各种方法都有自己的使用范围。应该说字符比对比较简单,速度快但适用范围小,容易中断化处理;定时器测量比较麻烦,但适用范围差,必须主程序处理。像短消息模块那种没有独立同步字符的设计支持的波特率通常是有限的。
在此理论的指导下,我认为具体程序编制可参考以下两种:
1、 RC震荡时钟源,主程序检测IO口—RXD,使用定时器计算波特率。细分可考虑a、使用同步字符,b、使用任意ASCII码。
2、 固定频率时钟源、仅支持有限典型波特率。细分可考虑a、反复使用同步字符,扩大支持波特率范围;b、迅速比对支持无同步命令
首先,从技术上的必要性上该技术可分为两类:
一、接收端工作频率固定,使用典型波特率通讯。程序员比较喜欢这种情况,无论是测量计算还是比对查表,都相对简单。
然后,从技术实现方式的方式上也可分为两类:
一、具有独立的同步字符。使用串行通讯时,要先进行同步操作,即接收端通过对比接收到的字符与同步字符的差异调整波特率,或者通过定时器测量同步字符的位宽计算波特率。
二、没有独立的同步字符。即不管波特率如何,可以直接通讯。这里面通常又有两种情况。1、通讯命令开始字符固定,比如一些短消息模块使用AT指令集,每条指令都是以AT开始的,这样虽然是命令但是有同步的作用,只不过要求必须在真实命令到来前调整波特率,判断必须快速准确。2、随机字符可以同步波特率,这种方法在周立功的文章里有描述。这种情况,其实也是有限制的:即字符最后一位必须是0,且同步字符只能是独立的字符,不能有连发字符。
没有一种方法是万能的,各种方法都有自己的使用范围。应该说字符比对比较简单,速度快但适用范围小,容易中断化处理;定时器测量比较麻烦,但适用范围差,必须主程序处理。像短消息模块那种没有独立同步字符的设计支持的波特率通常是有限的。
在此理论的指导下,我认为具体程序编制可参考以下两种:
1、 RC震荡时钟源,主程序检测IO口—RXD,使用定时器计算波特率。细分可考虑a、使用同步字符,b、使用任意ASCII码。
2、 固定频率时钟源、仅支持有限典型波特率。细分可考虑a、反复使用同步字符,扩大支持波特率范围;b、迅速比对支持无同步命令
全部回答
- 1楼网友:风格不统一
- 2021-01-29 21:47
先噶频率,串口出错的话,然后降低频率试探,直到正确,还可以加一个io口测量电平时间来计算
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯