CN105790756B - 一种利用uart通讯校准时钟的方法及装置 - Google Patents

一种利用uart通讯校准时钟的方法及装置 Download PDF

Info

Publication number
CN105790756B
CN105790756B CN201610152390.3A CN201610152390A CN105790756B CN 105790756 B CN105790756 B CN 105790756B CN 201610152390 A CN201610152390 A CN 201610152390A CN 105790756 B CN105790756 B CN 105790756B
Authority
CN
China
Prior art keywords
uart
value
clock
internal oscillator
calibration
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610152390.3A
Other languages
English (en)
Other versions
CN105790756A (zh
Inventor
钱志恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Synodata Security Technology Co Ltd
Original Assignee
Hangzhou Synodata Security Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Synodata Security Technology Co Ltd filed Critical Hangzhou Synodata Security Technology Co Ltd
Priority to CN201610152390.3A priority Critical patent/CN105790756B/zh
Publication of CN105790756A publication Critical patent/CN105790756A/zh
Application granted granted Critical
Publication of CN105790756B publication Critical patent/CN105790756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03LAUTOMATIC CONTROL, STARTING, SYNCHRONISATION OR STABILISATION OF GENERATORS OF ELECTRONIC OSCILLATIONS OR PULSES
    • H03L7/00Automatic control of frequency or phase; Synchronisation
    • H03L7/02Automatic control of frequency or phase; Synchronisation using a frequency discriminator comprising a passive frequency-determining element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03LAUTOMATIC CONTROL, STARTING, SYNCHRONISATION OR STABILISATION OF GENERATORS OF ELECTRONIC OSCILLATIONS OR PULSES
    • H03L7/00Automatic control of frequency or phase; Synchronisation
    • H03L7/24Automatic control of frequency or phase; Synchronisation using a reference signal directly applied to the generator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

一种利用UART通讯校准时钟的方法,利用UART每一帧数据中至少包含了一个逻辑“0”,且其空闲时总是为逻辑“1”的特性,通过对连接到UART的接收信号上的逻辑“0”的宽度进行计数并与设定的波特率进行比较、计算来达到对时钟进行校准。以及提供了一种利用UART通讯校准时钟的装置,包括信号滤波器、脉宽检测器、内部振荡器、每位脉宽计算器、偏差计算器和校准计数器。本发明提供一种有效实现对MCU内部时钟振荡器的校准,保证UART通讯正常的利用UART通讯校准时钟的方法及装置。

Description

一种利用UART通讯校准时钟的方法及装置
技术领域
本发明涉及计算机、通讯领域,尤其是一种校准时钟的方法及装置。
背景技术
UART(Universal Asynchronous Receiver Transmitter)是一种异步串行通信总线,数据帧以起始位开始,紧接着是数据的最低位LSB,数据长度可以是5~8个数据位,数据结束后是1位可选的奇偶校验位,最后是停止位。总线空闲时,处于逻辑“1”状态,起始位总是为逻辑“0”,停止位总是为逻辑“1”。UART的收发双方按约定的波特率进行异步采样,波特率是指每秒传送的位数,实质上给出了UART通讯时每一位数据所占用的时间。
随着模数混合设计技术的发展,目前大多数MCU中都具有可作为系统时钟源使用的内部时钟振荡器,由于受工艺水平的限制和环境因素(如温度、电压)的影响,这些内部时钟振荡器的精度通常在2%~10%之间。通常对于采用一般帧格式,如8位数据、1位停止位、无奇偶校验的方式进行通讯时,其理论上要求通讯双方的时钟偏差小于5%,因此将MCU内部时钟振荡器用于UART通讯,容易造成波特率不匹配而无法正常通讯。
专利号200710124118提出一种单片机系统时钟校准方法,其方法是对外部输入的标准脉冲信号进行计数,并与由标准脉冲宽度预置的计数校准常数进行比较、运算,计算出新的频率校准常数,写入到单片机内用于调整RC振荡器频率的寄存器来获得较精准的系统时钟的方法。专利号201010622250提出一种支持动态校准的时钟恢复方法和电路,其方法是利用USB总线上的SOF间隔进行定时,对DCO进行计数、比较、运算,来调整DCO输出频率。专利号200710124118提出的方法应用时必须从外部输入标准脉冲信号,这就要求应用中必须要使用晶振等高精度的时钟源来产生或从通讯的另一方额外给出一个标准脉冲信号,需要增加成本或增加接口信号;专利号201010622250提出的方法必须基于USB连接的应用,无法应用在只有UART通讯的应用中。
MCU在基于UART通讯应用中使用片内振荡器作为系统时钟源时,因内部振荡器受到生产工艺、温度、电压等因素的影响导致输出时钟频率偏差,造成UART通讯波特率异常。
发明内容
为了克服已有MCU在基于UART通讯应用中使用片内振荡器作为系统时钟源时,因内部振荡器受到生产工艺、温度、电压等因素的影响导致输出时钟频率偏差,造成UART通讯波特率异常的不足,本发明提供一种有效实现对MCU内部时钟振荡器的校准,保证UART通讯正常的利用UART通讯校准时钟的方法及装置。
本发明解决其技术问题所采用的技术方案是:
一种利用UART通讯校准时钟的方法,所述方法包括如下步骤:
步骤01:检测UART RXD的下降沿信号,检测到下降沿,则执行步骤2,开始自动校准流程;
步骤02:启动计数器,对内部振荡器输出时钟进行计数;
步骤03:等待UART RXD信号变高,同时检测是否超时,如果UART RXD没有变为高电平且没有超时,则继续等待,直到UART RXD变高或超时,执行步骤04;
步骤04:判断是否超时,如果超时,则退出自动校准流程,重新执行步骤01;如果没有超时则执行步骤05;
步骤05:获取计数器值,该值为M;
步骤06:判断M是否符合自动校准范围内,如果不符合,则退出自动校准流程,重新执行步骤01;如果符合则执行步骤07;
步骤07:计算出每位逻辑“0”的计数值M1;
步骤08:每位实际测量的计数值M1与标准值N进行比较,用于判断调整方向和计算偏差,然后执行步骤09;
步骤09:计算偏差e,当M1>N时,e=M1-N;当M1≤N时,e=N-M1;
步骤10:判断是否在死区外,当e大于死区值时,执行步骤11;否则退出自动校准流程;
步骤11:计算校准值,当M1>N时,对内部振荡器输出时钟频率进行向下调整;当M1≤N时,对内部振荡器输出时钟频率进行向上调整,调整幅度需要根据偏差e和内部振荡器的特性选择合适的算法计算出。
进一步,所述步骤07中,每位逻辑“0”计数值M1的计算过程如下:
7.1,根据允许误差p计算出能够用于自动校准的最大逻辑“0”位数nmax,nmax<(1-p)/(2p),nmax为正整数;
7.2,根据M值所处的范围推算出M值所包含的逻辑“0”的位数n。当N(1-p)≤M≤N(1+p) 时,n=1;当2N(1-p)≤M≤2N(1+p) 时,n=2;依次类推,当nmaxN(1-p)≤M≤nmaxN(1+p)时;n=nmax;如果M值不在这些范围内时,无法有效判断出n,则不进行自动校准;
7.3,根据判断出的n,计算出每位逻辑“0”的计数值M1=M/n。
一种利用UART通讯校准时钟的装置,所述装置包括:
信号滤波器,用于对UART发送方发送的RXD信号进行滤波;
脉宽检测器,用于在经过滤波的RXD信号的下降沿开始对内部振荡器输出的时钟进行计数,直到RXD信号的上升沿结束,可得到一个计数值M;
内部振荡器,用于输出提供MCU工作的时钟;
每位脉宽计算器,用于根据给定波特率下的每位标准计数值N以及允许误差p判断出能够用于自动校准的有效M值,并对符合该范围内的M值计算出被检测脉宽中逻辑“0”的位数n,并计算出每位逻辑“0”脉宽的计数值M1;
偏差计算器,用于根据给定波特率下的每位标准计数值N与实际测量的每位计数值M1进行比较,判断出大小以及差值e;
校准计数器,用于根据偏差计算器给出的结果对内部振荡器进行调整,如果M1>N则需要对内部振荡器输出的时钟频率进行向下调整,反之,则需要对内部振荡器输出的时钟频率进行向上调整;同时根据偏差计算器给出的差值e和内部振荡器的特性计算出调整幅度。
本发明的技术构思为:利用UART每一帧数据中至少包含了一个逻辑“0”,且其空闲时总是为逻辑“1”的特性,通过对连接到UART的接收信号上的逻辑“0”的宽度进行计数并与设定的波特率进行比较、计算来达到对时钟进行校准的目的。本方法并不要求UART通讯双方发送特定的数据,可以使通讯双方保持原有的通讯协议和格式。
本发明的有益效果主要表现在:在UART两线通讯接口上不增加任何信号和成本,即可实现对MCU内部时钟振荡器的校准,保证UART通讯正常。
附图说明
图1是一种利用UART通讯校准时钟的装置的结构图。
图2是一种利用UART通讯校准时钟的方法的流程图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1和图2,一种利用UART通讯校准时钟的方法,包括如下步骤:
步骤01:检测UART RXD的下降沿信号,检测到下降沿,则执行步骤2,开始自动校准流程;
步骤02:启动计数器,对内部振荡器输出时钟进行计数;
步骤03:等待UART RXD信号变高,同时检测是否超时,如果UART RXD没有变为高电平且没有超时,则继续等待,直到UART RXD变高或超时,执行步骤04;
步骤04:判断是否超时,如果超时,则退出自动校准流程,重新执行步骤01;如果没有超时则执行步骤05;
步骤05:获取计数器值,该值为M;
步骤06:判断M是否符合自动校准范围内,本实施例中M的范围为[2250, 2750]、[4500, 5500]、[6750, 8250]和[9000, 11000],如果不符合,则退出自动校准流程,重新执行步骤01;如果符合则执行步骤07;
步骤07:计算出每位逻辑“0”的计数值M1,M1=M/n;
步骤08:每位实际测量的计数值M1与标准值N进行比较,用于判断调整方向和计算偏差,然后执行步骤09;
步骤09:计算偏差e,当M1>N时,e=M1-N;当M1≤N时,e=N-M1;
步骤10:判断是否在死区外,当e大于死区值25时,执行步骤11;否则退出自动校准流程;
步骤11:计算校准值,当M1>N时,对内部振荡器输出时钟频率进行向下调整;当M1≤N时,对内部振荡器输出时钟频率进行向上调整,调整幅度需要根据偏差e和内部振荡器的特性选择合适的算法计算出。
一种利用UART通讯校准时钟的装置,包括:
信号滤波器(1),用于对UART发送方发送的RXD信号进行滤波,以减少高频噪声对于后续处理的影响。
脉宽检测器(2),用于在经过滤波的RXD信号的下降沿开始对内部振荡器(3)输出的时钟进行计数,直到RXD信号的上升沿结束,可得到一个计数值M。
内部振荡器(3),用于输出提供MCU工作的时钟,其输出频率是本发明校准的目标,该振荡器应当具备高精度的校准接口和能力。本实施例中的AS608具有一个能够输出144MHz的内部振荡器,具备一个10位宽的频率校准接口。
每位脉宽计算器(4),用于根据脉宽检测器(2)输出的计数值M和给定波特率下的每位标准计数值N=2500以及允许误差p=10%判断出被检测脉宽中逻辑“0”的位数n,n取值范围[1, 4],并计算出每位逻辑“0”脉宽的计数值M1。
偏差计算器(5),用于根据给定波特率下的每位标准计数值N与实际测量的每位计数值M1进行比较,判断出大小以及差值e。
校准计数器(6),用于根据偏差计算器(5)给出的结果对内部振荡器(3)进行调整,如果M1>N则需要对内部振荡器(3)输出的时钟频率进行向下调整(调慢),反之,则需要对内部振荡器(3)输出的时钟频率进行向上调整(调快);同时根据偏差计算器(5)给出的差值e和内部振荡器(3)的特性计算出调整幅度,可以根据实际需要选择合适的调整算法和死区范围。
本实施例以产品AS608芯片为例,其内部集成了一个能够输出144MHz的内部振荡器,具备一个10位宽的频率校准接口(校准值可为0~1023),校准值越大则输出时钟频率越高,反之,校准值越小则输出时钟频率越低,内部振荡器出厂校准后的精度约为2%,与一个同为基于内部振荡器的MCU进行通讯时,二者误差可以超出5%,而无法通讯成功,采用本发明的方法可以使AS608在UART通讯过程中将其内部振荡器的频率往与其通讯的MCU内部振荡器的偏差方向进行调整,从而保证二者通讯的成功。
本实施例给定UART波特率为57600bps,校准允许误差为10%,死区值为25,结合一种利用UART通讯校准时钟的方法步骤07所述的M1计算过程进行计算。
7.1,根据允许误差p计算出能够用于自动校准的最大逻辑“0”位数nmax,nmax<(1-p)/(2p)=(1-10%)/(2*10%)=4.5,nmax为正整数,则nmax=4;
7.2,根据M值所处的范围推算出M值所包含的逻辑“0”的位数n。当N(1-p)≤M≤N(1+p) 时,n=1;当2N(1-p)≤M≤2N(1+p) 时,n=2;依次类推,当nmaxN(1-p)≤M≤nmaxN(1+p)时;n=nmax。本实施例中,N=144000000/57600=2500,则当2250≤M≤2750时,n=1;当4500≤M≤5500时,n=2;当6750≤M≤8250时,n=3;当9000≤M≤11000时,n=4;当M不在上述范围内时,无法有效判断出n,则不进行自动校准;
7.3,根据判断出的n,计算出每位逻辑“0”的计数值M1=M/n,最后得到的M1总是处于[2250, 2750]范围内。

Claims (3)

1.一种利用UART通讯校准时钟的方法,其特征在于:所述方法包括如下步骤:
步骤01:检测UART RXD的下降沿信号,检测到下降沿,则执行步骤02,开始自动校准流程;
步骤02:启动计数器,对内部振荡器输出时钟进行计数;
步骤03:等待UART RXD信号变高,同时检测是否超时,如果UART RXD没有变为高电平且没有超时,则继续等待,直到UART RXD变高或超时,执行步骤04;
步骤04:判断是否超时,如果超时,则退出自动校准流程,重新执行步骤01;如果没有超时则执行步骤05;
步骤05:获取计数器值,该值为M;
步骤06:判断M是否符合自动校准范围内,如果不符合,则退出自动校准流程,重新执行步骤01;如果符合则执行步骤07;
步骤07:计算出每位逻辑“0”脉宽的计数值M1;
步骤08:每位逻辑“0”脉宽的计数值M1与给定波特率下的每位标准计数值N进行比较,用于判断调整方向和计算偏差,然后执行步骤09;
步骤09:计算差值e,当M1>N时,e=M1-N;当M1≤N时,e=N-M1;
步骤10:判断是否在死区外,当e大于死区值时,执行步骤11;否则退出自动校准流程;
步骤11:计算校准值,当M1>N时,对内部振荡器输出时钟频率进行向下调整;当M1≤N时,对内部振荡器输出时钟频率进行向上调整,调整幅度需要根据差值e和内部振荡器的特性选择合适的算法计算出。
2.如权利要求1所述的一种利用UART通讯校准时钟的方法,其特征在于:所述步骤07中,每位逻辑“0”脉宽的计数值M1的计算过程如下:
7.1,根据允许误差p计算出能够用于自动校准的最大逻辑“0”位数nmax,nmax<(1-p)/(2p),nmax为正整数;
7.2,根据M值所处的范围推算出M值所包含的逻辑“0”的位数n;当N(1-p)≤M≤N(1+p)时,n=1;当2N(1-p)≤M≤2N(1+p)时,n=2;依次类推,当nmaxN(1-p)≤M≤nmaxN(1+p)时;n=nmax;如果M值不在这些范围内时,无法有效判断出n,则不进行自动校准;
7.3,根据判断出的n,计算出每位逻辑“0”脉宽的计数值M1=M/n。
3.一种利用UART通讯校准时钟的装置,其特征在于:所述装置包括:信号滤波器,用于对UART发送方发送的RXD信号进行滤波;
脉宽检测器,用于在经过滤波的RXD信号的下降沿开始对内部振荡器输出的时钟进行计数,直到RXD信号的上升沿结束,可得到一个计数值M;
内部振荡器,用于输出提供MCU工作的时钟;
每位脉宽计算器,用于根据给定波特率下的每位标准计数值N以及允许误差p判断出能够用于自动校准的有效M值,并对符合范围内的M值计算出被检测脉宽中逻辑“0”的位数n,并计算出每位逻辑“0”脉宽的计数值M1;
偏差计算器,用于根据给定波特率下的每位标准计数值N与每位逻辑“0”脉宽的计数值M1进行比较,判断出大小以及差值e;
校准计数器,用于根据偏差计算器给出的结果对内部振荡器进行调整,如果M1>N则需要对内部振荡器输出的时钟频率进行向下调整,反之,则需要对内部振荡器输出的时钟频率进行向上调整;同时根据偏差计算器给出的差值e和内部振荡器的特性计算出调整幅度。
CN201610152390.3A 2016-03-17 2016-03-17 一种利用uart通讯校准时钟的方法及装置 Active CN105790756B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610152390.3A CN105790756B (zh) 2016-03-17 2016-03-17 一种利用uart通讯校准时钟的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610152390.3A CN105790756B (zh) 2016-03-17 2016-03-17 一种利用uart通讯校准时钟的方法及装置

Publications (2)

Publication Number Publication Date
CN105790756A CN105790756A (zh) 2016-07-20
CN105790756B true CN105790756B (zh) 2019-02-12

Family

ID=56392806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610152390.3A Active CN105790756B (zh) 2016-03-17 2016-03-17 一种利用uart通讯校准时钟的方法及装置

Country Status (1)

Country Link
CN (1) CN105790756B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018165923A1 (zh) * 2017-03-15 2018-09-20 深圳大趋智能科技有限公司 基于mPOS的MCU内部震荡校准方法及装置
CN108958092B (zh) * 2017-05-23 2022-11-04 佛山市顺德海尔电器有限公司 单片机时钟异常检测方法及装置、计算机可读存储介质、设备
CN109450607B (zh) * 2018-09-10 2021-02-09 北京中电华大电子设计有限责任公司 一种通用异步收发器的波特率校准方法和装置
CN109150489B (zh) * 2018-09-27 2021-03-19 北京中电华大电子设计有限责任公司 一种通用异步收发器内置传输时钟的校准方法
CN112540641B (zh) * 2020-10-29 2024-04-12 珠海格力电器股份有限公司 一种时钟精度修正方法、装置及存储介质
CN112578181A (zh) * 2020-10-29 2021-03-30 北京中电华大电子设计有限责任公司 一种振荡器异常状态检测电路
CN112099568B (zh) * 2020-11-18 2021-02-09 杭州恒芯微电子科技有限公司 Uart串口主从通信的时钟频率校准和频率测量方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103149970A (zh) * 2013-03-20 2013-06-12 珠海市杰理科技有限公司 时钟校准的方法和系统
CN103955257A (zh) * 2014-03-27 2014-07-30 美的集团股份有限公司 单片机系统时钟的校准方法及装置、空调控制系统
CN104834622A (zh) * 2015-03-31 2015-08-12 深圳市三朋电子有限公司 通过rs232接口进行多个设备时间同步的方法及装置
CN104901687A (zh) * 2015-05-20 2015-09-09 珠海市杰理科技有限公司 时钟频率校准方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3523858B2 (ja) * 2002-05-08 2004-04-26 沖電気工業株式会社 シリアルデータ通信装置及びシリアルデータの送受信方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103149970A (zh) * 2013-03-20 2013-06-12 珠海市杰理科技有限公司 时钟校准的方法和系统
CN103955257A (zh) * 2014-03-27 2014-07-30 美的集团股份有限公司 单片机系统时钟的校准方法及装置、空调控制系统
CN104834622A (zh) * 2015-03-31 2015-08-12 深圳市三朋电子有限公司 通过rs232接口进行多个设备时间同步的方法及装置
CN104901687A (zh) * 2015-05-20 2015-09-09 珠海市杰理科技有限公司 时钟频率校准方法和系统

Also Published As

Publication number Publication date
CN105790756A (zh) 2016-07-20

Similar Documents

Publication Publication Date Title
CN105790756B (zh) 一种利用uart通讯校准时钟的方法及装置
CN102331979B (zh) 应用于usb设备的动态时钟频率校准方法
US7934039B2 (en) Variable oscillator for generating different frequencies in a controller area network
US10419246B2 (en) C-PHY training pattern for adaptive equalization, adaptive edge tracking and delay calibration
CN103150283B (zh) 电子装置
CN109075742B (zh) 波特率校准电路及串口芯片
US10841073B2 (en) Sensor devices, methods, multi-sensor systems/apparatuses capable of calibrating clock signal(s) and outputting integrated data packets according to communication between
CN108965082A (zh) 低功率数据总线接收器
TW201606511A (zh) 用於晶片至晶片通信之系統及方法
CN102467477A (zh) 一种波特率自适应的Modbus中继器和波特率自适应系统及方法
CN106093567A (zh) 一种高精度宽频域频率测量系统及频率测量方法
CN109687867A (zh) 一种无晶振usb设备时钟校准方法及校准电路
CN103176042A (zh) 一种频率测量方法、装置和频率计
US20140105321A1 (en) Transmission interface device capable of calibrating transmission frequency automatically and method thereof
CN103149970A (zh) 时钟校准的方法和系统
CN203574663U (zh) 一种自动波特率检测模块
CN102970300B (zh) 一种异步通信方法
CN109188335B (zh) 电能表时钟偏差检测系统和方法
CN110535621B (zh) 一种串口通讯波特率校正装置及其校正方法
CN206251105U (zh) 用于基站的vcxo软锁相装置
TWI488047B (zh) 單線信號傳輸裝置及傳輸方法
US8645742B2 (en) Semiconductor device operating according to an operation clock and having a serial communication interface performing external communications according to a unit transfer time based on the operation clock
CN112099568B (zh) Uart串口主从通信的时钟频率校准和频率测量方法
CN104348468A (zh) 一种脉宽自适应单总线接收器
CN104168015B (zh) 振荡装置与时脉信号的产生方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant