一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种自学习异步串行通信时钟误差校正算法的制作方法

2022-07-23 06:46:35 来源:中国专利 TAG:


1.本发明涉及串行通信技术领域,具体为一种自学习异步串行通信时钟误差校正算法。


背景技术:

2.在串行通信中,数据的解析完全依赖本地做定时采样,采样时判断线上是0还是1取出每一个bit的数据。一般一次至少传送1byte, 8位数据的定时累加对时钟的精度有较高的要求。很多电路设计因为成本的原因,通常采用mcu内部的rc振荡器,但rc振荡器误差较大,虽然在晶圆封装过程有trim的动作,但因生产成本的因素,精度控制在1%已经算很好的,并且受温度影响也很大,使得内置振荡器在要求较高的串行通行中受到很大限制。
3.典型的的串行通信数据格式及接收端解析1帧字符数据过程如图 1和图2。串行数据线空闲时处于高电平状态,当数据线上的电平从高电平跳变到低电平时,会使接收端产生下降沿中断触发进入接收中断服务子程序。中断服务程序会有一个delay的动作,将时间基点设在校验位的中间,确保采样点读取到的是每一个bit位的中间稳定电平,每读取一位就做一个延时做为下一位的采样点,延时是按波特率计算出的单个bit的时间长度。因为异步串行通行没有同步时钟,能够做为同步参考的只有起始位,只有起始位是固定由高电频跳变到低电平。每读取1bit都要依赖起始位这个零点,以本地时钟累积计算时间偏移采样,对本地时钟误差提出较高要求,误差会随着累积的次数成倍增长,如果累积误差超过1bit的时间长度,将会引起采样错误,无法正确接收数据。一些mcu因内置的rc振荡器一致太差,不良率太高根本无法应用在这些场景。


技术实现要素:

4.本发明的目的在于提供一种自学习异步串行通信时钟误差校正算法,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:一种自学习异步串行通信时钟误差校正算法,其算法包括如下步骤:
6.s1、做正态分布取样,选取一个小批量需要使用的mcu,通过逻辑分析仪或示波器等手段,选出内置振荡器频率误差在中心值的mcu,以选定mcu设1bit时长的定时器值,定时器值将会做为定时器基准值固化到程序里;
7.s2、通信协议约定上位机定时发送握手信号,约定发送和接收都有校验位或校验字,以供对方判断收到的数据是否正确;
8.s3、设备上电后程序判断误差校正标志位,如果没有校正记录,将自动进入误差校正子程序;
9.s4、进入误差校正子程序后mcu关闭所有中断,mcu等待串行线的电平跳变,如果是从1跳变到0,马上打开计时器开始计时,直到由0 跳变到1计时结束;
10.s5、退出误差校正子程序进入正常串行收发程序,收发程序里的定时器值设为基
准值 补尝值。
11.优选的,所述步骤s1中,mcu采用国产内置16mrc荡器。
12.优选的,所述步骤s1中,mcu采用1起始位 8数据位为一个字符帧。
13.优选的,所述步骤s2中,发送握手信号是用于防止下位机因长时间无法收到串行数据,而导致无法完成误差校正。
14.优选的,所述步骤s2中,上位机发送握手信号的时间间隔为 0.1-2h。
15.优选的,所述步骤s4中,计时器的值与标定的定时器作比较,如果相差范围太大,抛弃重新抓取,连续抓取两次,如果两次的值相等,将定时器基准值减去计数器值作为误差补尝值存放到memory,同时将校准标志位置1。
16.优选的,所述步骤s4中,相差范围判断标准值为大于基准值的 1/2。
17.优选的,所述步骤s5中,在定时器的值设定完毕后,进行采样校验位,并判断数据解析是否正确,如果正确,则结束程序,如果不正确,则重新进行误差校正子程序。
18.与现有技术相比,本发明的有益效果如下:
19.本发明提出的误差校正算法,其能够大幅提高定时采样精度,能让误差较大的内置据荡器应用在较高精度要求的串行通行中,实测在一对一或一对多的串行通行中效果良好,该算法在mcu时钟误差很大的情况下,采样时序却非常一致,时间余量十分充足,既降低了mcu 在使用过程中的成本,又获得良好的一致性,产生良好的经济效益。
附图说明
20.图1为典型串行数据格式及解析时序的示意图。
21.图2为字符帧解析流程示意图。
22.图3为特征值取样计时的示意图。
23.图4为误差补偿值计算流程示意图。
24.图5为具有误差校正算法的字符帧解析流程示意图。
25.图6为未加误差校正算法的sample1示意图。
26.图7为未加误差校正算法的sample2示意图。
27.图8为增加了自学习误差校正算法的sample1示意图。
28.图9为增加了自学习误差校正算法的sample2示意图。
具体实施方式
29.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.实施例一:
31.一种自学习异步串行通信时钟误差校正算法,其算法包括如下步骤:
32.s1、做正态分布取样,选取一个小批量需要使用的mcu,mcu采用国产内置16mrc荡器,通过逻辑分析仪或示波器等手段,选出内置振荡器频率误差在中心值的mcu,以选定mcu设1bit时长的定时器值,定时器值将会做为定时器基准值固化到程序里;
33.s2、通信协议约定上位机定时发送握手信号,用于防止下位机因长时间无法收到串行数据,而导致无法完成误差校正,约定发送和接收都有校验位或校验字,以供对方判断收到的数据是否正确;
34.s3、设备上电后程序判断误差校正标志位,如果没有校正记录,将自动进入误差校正子程序;
35.s4、如图3、图4,进入误差校正子程序后mcu关闭所有中断,mcu 等待串行线的电平跳变,如果是从1跳变到0,马上打开计时器开始计时,直到由0跳变到1计时结束,计时器的值与标定的定时器作比较,如果相差范围太大,抛弃重新抓取,连续抓取两次,如果两次的值相等,将定时器基准值减去计数器值作为误差补尝值存放到memory,同时将校准标志位置1;
36.s5、退出误差校正子程序进入正常串行收发程序,收发程序里的定时器值设为基准值 补尝值。
37.实施例二:
38.一种自学习异步串行通信时钟误差校正算法,其算法包括如下步骤:
39.s1、做正态分布取样,选取一个小批量需要使用的mcu,mcu采用国产内置16mrc荡器,mcu采用1起始位 8数据位为一个字符帧,通过逻辑分析仪或示波器等手段,选出内置振荡器频率误差在中心值的 mcu,以选定mcu设1bit时长的定时器值,定时器值将会做为定时器基准值固化到程序里;
40.s2、通信协议约定上位机定时发送握手信号,用于防止下位机因长时间无法收到串行数据,而导致无法完成误差校正,上位机发送握手信号的时间间隔为0.1h,约定发送和接收都有校验位或校验字,以供对方判断收到的数据是否正确;
41.s3、设备上电后程序判断误差校正标志位,如果没有校正记录,将自动进入误差校正子程序;
42.s4、如图3、图4,进入误差校正子程序后mcu关闭所有中断,mcu 等待串行线的电平跳变,如果是从1跳变到0,马上打开计时器开始计时,直到由0跳变到1计时结束,计时器的值与标定的定时器作比较,如果相差范围太大,抛弃重新抓取,连续抓取两次,如果两次的值相等,将定时器基准值减去计数器值作为误差补尝值存放到memory,同时将校准标志位置1;
43.s5、退出误差校正子程序进入正常串行收发程序,收发程序里的定时器值设为基准值 补尝值。
44.实施例二:
45.一种自学习异步串行通信时钟误差校正算法,其算法包括如下步骤:
46.s1、做正态分布取样,选取一个小批量需要使用的mcu,mcu采用国产内置16mrc荡器,mcu采用1起始位 8数据位为一个字符帧,通过逻辑分析仪或示波器等手段,选出内置振荡器频率误差在中心值的 mcu,以选定mcu设1bit时长的定时器值,定时器值将会做为定时器基准值固化到程序里;
47.s2、通信协议约定上位机定时发送握手信号,用于防止下位机因长时间无法收到串行数据,而导致无法完成误差校正,上位机发送握手信号的时间间隔为1h,约定发送和接收都有校验位或校验字,以供对方判断收到的数据是否正确;
48.s3、设备上电后程序判断误差校正标志位,如果没有校正记录,将自动进入误差校正子程序;
49.s4、如图3、图4,进入误差校正子程序后mcu关闭所有中断,mcu 等待串行线的电平跳变,如果是从1跳变到0,马上打开计时器开始计时,直到由0跳变到1计时结束,计时器的值与标定的定时器作比较,如果相差范围太大(例如基准值的1/2),抛弃重新抓取,连续抓取两次(防止抓到错误数据),如果两次的值相等,将定时器基准值减去计数器值作为误差补尝值存放到memory,同时将校准标志位置1;
50.s5、退出误差校正子程序进入正常串行收发程序,收发程序里的定时器值设为基准值 补尝值,在定时器的值设定完毕后,进行采样校验位,并判断数据解析是否正确,如果正确,则结束程序,如果不正确,则重新进行误差校正子程序。
51.实例验证:
52.本实例是一个智能疏散系统,上位机一对多下位机通信,mcu采用国产内置16mrc荡器。采用1起始位 8数据位为一个字符帧,校验采用校验字节。图6和图7是未加自学习误差校正算法的sample1和 sample2解析上位机发送的数据情况,上方线代表上位机发送的数据,下方线的跳变沿代表本机每一个bit位的采样点。上位机发送的数据是00000000b,采用相同的定时值,但sample1因mcu内置振荡器时钟频率偏快,下位机读到的值变成了00011111b,已经完全无法正确的解析数据。sample2又因为mcu时钟偏慢,最后一位采样点时间余量已不多。
53.图7和图8是在sample1和sample2上增加了自学习时钟误差校正算法后的数据解析情况。从示波器抓的时序图看到,在mcu时钟误差很大的情况下,采样时序却非常一致,余量充足,既降低了mcu的使用成本,又获得良好的一致性,产生良好的经济效益。
54.尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献