基于异步通信的时钟校正方法及电能表技术

技术编号:39326455 阅读:13 留言:0更新日期:2023-11-12 16:04
本发明专利技术公开了一种基于异步通信的时钟校正方法及电能表。所述校正方法用于校正MCU内部RC的时钟误差,在启用内部RC作为MCU的时钟源后,MCU接收外部模块通过异步通信方式发送的数据,所述外部模块内部带有独立的时钟源,所述MCU通过接收数据时高低电平变化特征之间的时长计算出内部RC的偏差值,然后基于该偏差值对内部RC进行校正。本发明专利技术不仅解决了内部RC无法校正的问题,而且具有占用资源少、校正效率高、无需额外能耗等优点。无需额外能耗等优点。无需额外能耗等优点。

【技术实现步骤摘要】
基于异步通信的时钟校正方法及电能表


[0001]本专利技术涉及一种智能电能表的内部时钟的校正方法,还涉及一种电能表。

技术介绍

[0002]时钟系统是智能电能表重要的硬件组成部分,它为整个电能表的软件功能运转提供稳定的时钟节拍,保证程序稳定、有序的运行。作为时钟系统核心的晶体振荡器具有极高的准确性,非常适合作为电能表系统的时钟源。随着用电环境的越来越复杂,用户对电能表的稳定性也提出了更高的要求。例如,更快的通信速度,更准确的时间,更加灵敏的电压,电流数值采集,更加准确的电能计量等等。上述功能的实现,都离不开晶体精确的时钟信号。
[0003]但是,一旦晶体振荡器发生故障而停振,将会导致电能表数据错乱,通信失败,拉合闸误动作甚至其它一些不可预料的严重后果。电能表在晶体停振后,一般会切换使用内部高频RC作为临时的时钟源,但是该时钟源精度较低,并且容易受温度影响,如果误差超过一定限度,将会导致MCU与外设通信异常,无法保证电能表正常工作运行。现有技术中暂无实时校正内部高频RC精度的有效手段。

技术实现思路

[0004]本专利技术提出了一种基于异步通信的时钟校正方法及电能表,其目的是:对内部高频RC的精度进行实时校正,解决内部高频RC精度低、无法保证电能表正常运行的问题。
[0005]本专利技术技术方案如下:一种基于异步通信的时钟校正方法,用于校正MCU内部RC的时钟误差;启用内部RC作为MCU的时钟源后,MCU接收外部模块通过异步通信方式发送的数据,所述外部模块内部带有独立的时钟源,所述MCU通过接收数据时高低电平变化特征之间的时长计算出内部RC的偏差值,然后基于该偏差值对内部RC进行校正。
[0006]作为所述时钟校正方法的进一步改进:所述外设模块的TXD引脚与MCU的定时器的捕获引脚相连接;MCU通过定时器根据接收固定数据时捕获到的指定的两个上升沿或下降沿之间的计时时差,得到内部RC的偏差值。
[0007]作为所述时钟校正方法的进一步改进:外设模块向MCU发送数据时,发送的数据的第一个字节为已知的固定数据。
[0008]作为所述时钟校正方法的进一步改进:设外设模块的波特率为Bd,固定数据中指定的两个上升沿或下降沿之间间隔N个bit的时间,定时器捕获到的计时时差为T,则内部RC的偏差值为:Offset=N/(Bd*T)。
[0009]作为所述时钟校正方法的进一步改进:MCU得到内部RC的偏差值后,判断偏差值是否在预设的范围内:如果不在范围内且Offset大于1,则降低内部RC的频率;如果不在范围内且Offset小于1,则提高内部RC的频率。
[0010]作为所述时钟校正方法的进一步改进:所述MCU通过修改内部ADJ_REG寄存器的值来调整内部RC的频率,设ADJ_REG寄存器的当前值为Old_ADJ,ADJ_REG寄存器的最低位对应
的内部RC的频率的调校步长为LSB_ADJ,则将ADJ_REG寄存器的值设置为Old_ADJ+(Offset

1)/LSB_ADJ。
[0011]作为所述时钟校正方法的进一步改进,具体步骤为:步骤1、将外设模块的TXD引脚与MCU的定时器的捕获引脚相连接;步骤2、开启MCU的外部晶体停振检测功能,检查外部晶体停振标志位;当MCU检测到外部晶体振荡器停振时,将MCU时钟切换到内部RC,然后执行步骤3;步骤3、外设模块以异步通信方式向MCU发送数据,发送的数据的第一个字节为已知的固定数据;步骤4、MCU通过定时器根据接收固定数据时捕获到的指定的两个上升沿或下降沿之间的计时时差,得到内部RC的偏差值;步骤5、判断偏差值是否在预设的范围内:如果不在则调整内部RC的频率,然后返回步骤3,如果在预设范围内则等待一段时间后,返回步骤3。
[0012]作为所述时钟校正方法的进一步改进:步骤3至5中的任一步骤中,进一步判断外部晶体振荡器是否重新起振,如果重新起振,则停止当前步骤的执行,将外部晶体振荡器作为MCU的时钟源,并执行步骤2。
[0013]作为所述时钟校正方法的进一步改进:MCU与外设模块进行异步通信时,如果通信失败,则对MCU的波特率进行调整,直至通信正常。
[0014]本专利技术还提供了一种电能表,所述电能表包括MCU、外部晶体振荡器和计量芯片,所述MCU和外部晶体振荡器及计量芯片分别相连接,外部晶体振荡器作为MCU的时钟源,MCU通过计量芯片获取计量数据,当外部晶体振荡器停振时,MCU启动内部RC作为时钟源,然后采用上述时钟校正方法对内部RC进行校正,校正时,将计量芯片作为所述外设模块。
[0015]相对于现有技术,本专利技术具有以下积极效果:本专利技术在外部晶体振荡器停振后,以外设模块内部独立的时钟源作为基准,以异步通信时的数据为媒介,通过将数据传输时的高低电平变化特征的间隔时长与MCU内部定时器的计时时差相比较得到内部RC的偏差值,继而实现对内部RC的精准校正,不仅解决了内部RC无法校正的问题,而且具有占用资源少、校正效率高、无需额外能耗等优点。
附图说明
[0016]图1为具体实施方式中所接收到的数据波形图。
具体实施方式
[0017]下面结合附图详细说明本专利技术的技术方案:
实施例一
[0018]一种基于异步通信的时钟校正方法,用于校正MCU内部RC的时钟误差。具体步骤为:步骤1、将外设模块的TXD引脚与MCU的定时器T1的捕获引脚相连接。同时,外部模块与MCU通信连接。
[0019]所述外部模块内部带有独立的时钟源,其精度高于MCU的内部RC的精度。外部模块
可以是计量芯片,也可以是红外模块、485模块或者通讯模块。
[0020]步骤2、开启MCU的外部晶体停振检测功能,检查外部晶体停振标志位。当MCU检测到外部晶体振荡器停振时,将MCU时钟切换到内部RC,然后执行步骤3。
[0021]本实施例中,通过配置OSC_CONFIG(外部时钟控制寄存器)=ERR_ON开启停振检测功能,然后判断停振标志位(OSC_STATE)是否置位,如果未置位,表示外部晶体振荡器正常,不进行后续步骤,直接结束。如果置位,则配置SYS_CLK_REG = RC_CLK(系统时钟为内部RC),T1_CONFIG=RC_CLK(T1时钟源切换为内部RC),T1_DIV=0(T1时钟不分频),然后初始化循环次数计数为0,并执行步骤3。
[0022]步骤3、外设模块以异步通信方式向MCU发送数据,发送的数据的第一个字节为已知的固定数据。
[0023]具体的,初始化计量芯片读取功能,读取计量芯片寄存器数据,如果读取失败,对MCU与计量芯片通信的波特率进行
±
20%左右的偏差微调,直到可与计量芯片正常通信。
[0024]本实施例以计量芯片HT7017为例,其与MCU通讯波特率默认为4800,读取数据时,第一个字节固定返回为0x6A。
[0025]步骤4、MCU通过定时器根据接收固定数据时捕获到的指定的两个上升沿或下本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于异步通信的时钟校正方法,用于校正MCU内部RC的时钟误差,其特征在于:启用内部RC作为MCU的时钟源后,MCU接收外部模块通过异步通信方式发送的数据,所述外部模块内部带有独立的时钟源,所述MCU通过接收数据时高低电平变化特征之间的时长计算出内部RC的偏差值,然后基于该偏差值对内部RC进行校正。2.如权利要求1所述的基于异步通信的时钟校正方法,其特征在于:所述外设模块的TXD引脚与MCU的定时器的捕获引脚相连接;MCU通过定时器根据接收固定数据时捕获到的指定的两个上升沿或下降沿之间的计时时差,得到内部RC的偏差值。3.如权利要求2所述的基于异步通信的时钟校正方法,其特征在于:外设模块向MCU发送数据时,发送的数据的第一个字节为已知的固定数据。4.如权利要求3所述的基于异步通信的时钟校正方法,其特征在于:设外设模块的波特率为Bd,固定数据中指定的两个上升沿或下降沿之间间隔N个bit的时间,定时器捕获到的计时时差为T,则内部RC的偏差值为:Offset=N/(Bd*T)。5.如权利要求4所述的基于异步通信的时钟校正方法,其特征在于:MCU得到内部RC的偏差值后,判断偏差值是否在预设的范围内:如果不在范围内且Offset大于1,则降低内部RC的频率;如果不在范围内且Offset小于1,则提高内部RC的频率。6.如权利要求5所述的基于异步通信的时钟校正方法,其特征在于:所述MCU通过修改内部ADJ_REG寄存器的值来调整内部RC的频率,设ADJ_REG寄存器的当前值为Old_ADJ,ADJ_REG寄存器的最低位对应的内部RC的频率的调校步长为LSB_ADJ,则将ADJ_REG寄存器的值设置为O...

【专利技术属性】
技术研发人员:尹西科姜文浩许芹贺岩贾斌马金臣秦宗亚李海岩刘军蕾
申请(专利权)人:烟台东方威思顿电气有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1