一种mcu芯片分频时钟校正装置及方法
【专利摘要】本发明公开了一种MCU芯片分频时钟校正装置及方法,其该装置包括有时钟模块,时钟分频电路,校正寄存器,校正接口、存储器及校正装置,其中,时钟模块,时钟分频电路,校正寄存器,校正接口、存储器设置于芯片内部,校正装置设置于芯片外部;在时钟校正时,由外部的校正装置将校正值通过校正接口写入校正寄存器,时钟模块根据校正值调整时钟,经过时钟分频电路将时钟输出,外部校正装置根据时钟输出,调整校正值直到找到时钟偏差最小的校正值,并计算出与实际频率之间的偏差值,将校正值和时钟偏差写入芯片内部存储器中。本发明利用时钟晶振的偏差值来实现时钟精度的提高,可以在现有的时钟振荡器的精度的基础上大大提高时钟精度。克服了由外部设备写入固定校正值的做法所带来精度的限制,且对芯片本身不需要进行电路升级,节省外部晶振和外部IO。
【专利说明】-种MCU芯片分频时钟校正装置及方法
【技术领域】
[0001] 本发明涉及一种时钟校正方法,尤其涉及一种MCU芯片的时钟校正装置和方法。
【背景技术】
[0002] 现在芯片中,特别是MCU的设计当中通常都会使用时钟校正功能,但是受到成本 的限制和工艺技术约束,目前的内部时钟在校正以后仅仅能够达到0. 5%?2%的精度,这 样的时钟精度水平对于需要异步通信或者是对于时钟精度要求较高的系统则往往不够,需 要通过精度更加准确外部晶振才能解决,而使用外部晶振会增加硬件成本,而且外部晶振 需要增加新的10,特别是对于设计尺寸较小的系统增加新的10会导致整个硬件面积变大, 导致方案不可实现。
[0003] 专利申请2004100864081提供了一种监控时钟校正方法及装置,该监控时钟校正 方法及装置,由外部提供一时钟信号源,并从监控芯片任一输入端输入后,由监控芯片内部 的缓存器输出一信号启动校正控制单元,同时也启动两个计数单元,第一计数单元累计外 部基准时钟数目,第二计数单元累计监控芯片内部时钟产生组件的时钟数目,第一计数单 元累计外部基准时钟数到达一定数目而停止计数时,在同一时间第二计数单元也停止累计 由监控芯片内部时钟产生器产生的时钟数目,并产生一中断信号通知监控芯片内部的微处 理单元,比较第一计数单元所累计的外部基准时钟数目和第二计数单元所累计的监控芯片 内部振荡器产生的时钟数目,即可对监控芯片内部振荡器做校正。
[0004] 然而当系统需要一个高精度的时钟时,同时因为硬件成本和产品尺寸等原因,不 能够增加外部晶振时,一个高精度的内部时钟震荡器就成为解决这一问题的好方法。但是 要在芯片内部提供高精度的时钟,需要内部增加很多的时钟校正电路,例如要想达到0.5% 的精度,目前至少需要校正电阻或者校正电容有8档选择,即校正电阻(电容)值范围 2~7?2~0,当需要进一步提高精度,需要将校正档位提高到10档甚至以上,这样校正电阻 的范围至少2~9?2~0。而在这样宽的范围内做到器件的匹配是比较困难的,需要增加更多 的额外校正电路来提高器件的匹配性。
【发明内容】
[0005] 为解决上述问题,本发明的目的在于提供一种MCU芯片分频时钟校正装置及方 法,该装置及方法将内部时钟的偏差值保存到芯片,利用该偏差值对分频时钟进行校正,可 以在现有的时钟振荡器的精度的基础上大大提高时钟精度。
[0006] 本发明的另一个目的在于提供一种MCU芯片分频时钟校正装置及方法,该装置及 方法节省外部晶振,节省外部10,简单易实施,不需要增加额外的电路来实现。
[0007] 为实现上述目的,本发明的技术方案如下。
[0008] -种MCU芯片分频时钟校正装置,其特征在于所述装置包括有在时钟模块(内部 晶振),时钟分频电路,校正寄存器,校正接口、存储器及校正装置,其中,时钟模块,时钟分 频电路,校正寄存器,校正接口、存储器设置于芯片内部,校正装置设置于芯片外部;时钟模 块用于产生内部时钟,时钟分频电路用于产生分频时钟,校正寄存器用于配置时钟校正值, 时钟模块(内部晶振)连接时钟分频电路,与校正装置进行通讯;校正寄存器连接校正接 口,校正接口分别与校正装置和存储器进行通讯;校正接口用于与外部校正装置通信,将校 正值写入校正寄存器中,将最后的校正值和偏差写入存储器中;同时,校正寄存器将校正值 反馈给时钟模块,外部的校正装置用于时钟采样和时钟的精度计算。
[0009] 所述存储器,为非易失性存储器。
[0010] 一种MCU芯片分频时钟校正方法,其特征在于在时钟校正时,由外部的校正装置 将校正值通过校正接口写入校正寄存器,时钟模块根据校正值调整时钟,经过时钟分频电 路将时钟输出,外部校正装置根据时钟输出,调整校正值直到找到时钟偏差最小的校正值, 并计算出与实际频率之间的偏差值,将校正值和时钟偏差写入芯片内部存储器中。本发明 利用时钟晶振的偏差值来实现时钟精度的提1?,可以在现有的时钟振荡器的精度的基础上 大大提高时钟精度。克服了由外部设备写入固定校正值的做法所带来精度的限制,且对芯 片本身不需要进行电路升级,节省外部晶振和外部10。
[0011] 所述的每一个校正值对应一个时钟偏差,通过对每一个校正值的所对应的时钟偏 差比较,可以得到最小的时钟偏差值。
[0012] 所述时钟模块的偏差可以通过测试输出时钟多个周期的方法达到很高的精度。
[0013] 进一步,所述精度的调整方法为:
[0014] 精度=fout/(ftest*N),其中fout为被测试晶振的输出频率,ftest为外部测试 电路的时钟,大于等于10*f〇ut,N为被测试晶振的周期;
[0015] 可以通过增大N值达到想要达到的偏差精度。
[0016] 更进一步,当实际设置定时器时钟或者是通信频率时,先根据偏差值算出实际的 晶振频率,然后可以根据实际的晶振频率调整定时器的分频系数;fdesign为内部晶振的 时钟设计值,Μ为理论上的分频系数,fidv为要求的分频时钟,那么芯片的实际振荡频率为 freal = M*fout,先根据实际晶振频率计算出偏差值,delta = freal/fdesign-1,将偏差值 写入芯片的存储器中,当实际设置定时器时钟或者是通信频率时可以根据实际的晶振频率 调整定时器的分频系数,实际分频系数=fdesign* (1-delta)/fdiv。
[0017] 在实际应用中,大部分的通信应用或者时钟定时频率较低,例如uart的通信速率 一般为9. 6KHz或者4. 8KHz,而时钟定时的频率更低,一般是计数1秒或者1分钟。主时钟 的时钟频率是比较高的,一般达到10MHz?20MHz。两者之间的比值达到1000:1以上,经过 偏差校正之后的通信时钟偏差或者定时器时钟偏差就变成主时钟晶振和通信时钟之间的 比值,因此经过本发明所实现的MCU芯片分频时钟校正装置和方法之后,实际通信时钟偏 差可以达到0. 1%以下,时钟定时器的时钟偏差可以达到1*1〇~(-7)以下,大大提高了实际 应用的时钟精度。
【专利附图】
【附图说明】
[0018] 图1是本发明所实施的硬件结构图。
[0019] 图2是本发明所实施的时钟校正流程图。
[0020] 图3是本发明所应用的时钟校正的流程图。
【具体实施方式】
[0021] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对 本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并 不用于限定本发明。
[0022] 图1所示,为本发明实现的MCU芯片分频时钟校正装置的电路图,图中所示,在芯 片内部一般有内部晶振,时钟分频电路,校正寄存器,校正接口以及存储器,在芯片的外部 有校正装置。
[0023] 其中,时钟模块,时钟分频电路,校正寄存器,校正接口、存储器设置于芯片内部, 校正装置设置于芯片外部;时钟模块用于产生内部时钟,时钟分频电路用于产生分频时钟, 校正寄存器用于配置时钟校正值,时钟模块(内部晶振)连接时钟分频电路,与校正装置进 行通讯;校正寄存器连接校正接口,校正接口分别与校正装置和存储器进行通讯;校正接 口用于与外部校正装置通信,将校正值写入校正寄存器中,将最后的校正值和偏差写入存 储器中;同时,校正寄存器将校正值反馈给时钟模块,外部的校正装置用于时钟采样和时钟 的精度计算。
[0024] 由于校正过程一般在芯片测试阶段或者是在芯片烧录阶段完成,所述的校正装 置,在测试阶段用测试机实现,在烧录阶段则用烧录器实现。
[0025] 图2所示,校正方法是:在时钟校正时,由外部的校正装置将校正值通过校正接口 写入校正寄存器,时钟模块根据校正值调整时钟,经过时钟分频电路将时钟输出,外部校正 装置根据时钟输出,调整校正值直到找到时钟偏差最小的校正值,并计算出与实际频率之 间的偏差值,将校正值和时钟偏差写入芯片内部存储器中。
[0026] 所述的每一个校正值对应一个时钟偏差,通过对每一个校正值的所对应的时钟偏 差比较,可以得到最小的时钟偏差值。
[0027] 在实际应用中,考虑到工艺的偏差,内部晶振产生的时钟在没有校正时会有20% 的偏差,一般会先对时钟晶振进行时钟校正,如图2所示。时钟通过分频得到一个低速的时 钟输出,外部采用一个高速的时钟晶振对该时钟进行采样,当时钟偏快(这里指的是内部 晶振,偏快是针对设计值而言的,内部晶振偏快,时钟输出也会随之偏快)时,修改时钟校 正值(这个时钟校正值一般是一个多比特的数,具体的位宽在设计时已经确认,例如如果 我们的校正值是8比特的话,那么时钟校正值可以从0x00 -直到OxFF,每一个校正值都会 对应一个不同内部时钟频率,可以通过计算找到最小的值),使时钟输出变慢,当时钟偏慢 时,修改时钟校正值,使时钟输出变快。
[0028] 例如默认的校正值为0x80,校正值增大则时钟频率减慢,校正值减小则时钟频率 增快,采用默认校正值测量(测量是将实际时钟频率freal = M*fout和fdesign进行比 较)时发现时钟频率偏慢,修改校正值为0x7F,重新测试时钟频率,如果依旧偏慢则再次减 小(一般会有一个预设的步长,按照预设的步长进行减小,可以采用预设的步长进行估算, 快速得到最佳的校正值)时钟校正值,直至找到时钟偏差最小的校正值为止。
[0029] 图3所示,在校正的基础上进一步进行时钟偏差的计算,delta = freal/ fdesign-1,针对需要的精度时根据实际需求而定选择好校正周期的个数N,并将校正值 (最小偏差对应的校正值)和偏差值写到芯片的flash (此处可以是0ΤΡ或者EEPR0M等非 易失性存储器)中保存。当进行时钟分频设置时,将偏差值从flash中读出,计算得出实际 的分频值即可。
[0030] 假设我们目前主时钟的频率为20MHz (fdesign),异步通信速率为4. 8KHZ,芯片偏 差值为-1. 002 %这样我们可以选择芯片输出一个4. 8KHz (理论上的分频系数Μ为4166) 的时钟进行时钟的校正。芯片测试时采用50MHz的时钟(ftest)进行采样,采样的周期为 20次(N)。由于米样的时钟和被米样的时钟存在一定的相位偏差,因此会出现一个周期的 采样误差,因为采样误差=fdi VAN*ftest)远远小于校正后的时钟分频精度,因此可以忽 略。采样误差为4. 8*10~3/(20*50*10~6) =4. 8*10~(-6)。因为误差值远远小于校正后的 精度可以忽略。时钟输出的分频系数为20*10~6*(1-1. 002% )/4. 8*10~3 = 4125,最后时 钟输出的偏差为 20*10~6*(1-1· 002% )/4125/4. 8*10~3-1 = -2. 02~10(-5)。可以看出此 时的通信频率精度比较时钟校正的精度有了很大的提高。
[0031] 如果实际芯片中有多个需要高精度时钟定时的应用,可以考虑针对每一个分频时 钟进行单独的时钟偏差计算,然后将每一个分频时钟的偏差都写入芯片的flash当中,设 置时钟分频值时选择对应的偏差值进行计算即可。
[0032] 本发明通过校正结合时钟偏差的计算,能够有效地大幅度提高时钟精度,且节省 外部晶振,节省外部10,简单易实施,不需要增加额外的电路来实现,成本低廉。
[0033] 总之,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明 的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之 内。
【权利要求】
1. 一种MCU芯片分频时钟校正装置,其特征在于所述装置包括有时钟模块、时钟分频 电路、校正寄存器,校正接口、存储器及校正装置,其中,时钟模块,时钟分频电路,校正寄存 器,校正接口、存储器设置于芯片内部,校正装置设置于芯片外部;时钟模块用于产生内部 时钟,时钟分频电路用于产生分频时钟,校正寄存器用于配置时钟校正值,时钟模块连接时 钟分频电路,与校正装置进行通讯;校正寄存器连接校正接口,校正接口分别与校正装置和 存储器进行通讯;校正接口用于与外部校正装置通信,将校正值写入校正寄存器中,将最后 的校正值和偏差写入存储器中;同时,校正寄存器将校正值反馈给时钟模块,外部的校正装 置用于时钟采样和时钟的精度计算。
2. 如权利要求1所述的MCU芯片分频时钟校正装置,其特征在于所述存储器,为非易失 性存储器。
3. -种MCU芯片分频时钟校正方法,其特征在于在时钟校正时,由外部的校正装置将 校正值通过校正接口写入校正寄存器,时钟模块根据校正值调整时钟,经过时钟分频电路 将时钟输出,外部校正装置根据时钟输出,调整校正值直到找到时钟偏差最小的校正值,并 计算出与实际频率之间的偏差值,将校正值和时钟偏差写入芯片内部存储器中。
4. 如权利要求1所述的MCU芯片分频时钟校正方法,其特征在于所述的每一个校正值 对应一个时钟偏差,通过对每一个校正值的所对应的时钟偏差比较,可以得到最小的时钟 偏差值。
5. 如权利要求1所述的MCU芯片分频时钟校正方法,其特征在于所述时钟模块的偏差 可以通过测试输出时钟多个周期的方法达到很高的精度。
6. 如权利要求5所述的MCU芯片分频时钟校正方法,其特征在于所述精度的调整方法 为: 精度=f〇ut/(ftest*N),其中fout为被测试晶振的输出频率,ftest为外部测试电路 的时钟,大于等于10*f〇ut,N为被测试晶振的周期; 可以通过增大N值达到想要达到的偏差精度。
7. 如权利要求6所述的MCU芯片分频时钟校正方法,其特征在于当实际设置定时器时 钟或者是通信频率时,先根据偏差值算出实际的晶振频率,然后可以根据实际的晶振频率 调整定时器的分频系数;fdesign为内部晶振的时钟设计值,Μ为理论上的分频系数,fidv为 要求的分频时钟,那么芯片的实际振荡频率为freal = M*fout,先根据实际晶振频率计算 出偏差值,delta = freal/fdesign-Ι,将偏差值写入芯片的存储器中,当实际设置定时器 时钟或者是通信频率时可以根据实际的晶振频率调整定时器的分频系数,实际分频系数= fdesign*(1-delta)/fdiv〇
【文档编号】G06F1/14GK104122936SQ201410347218
【公开日】2014年10月29日 申请日期:2014年7月21日 优先权日:2014年7月21日
【发明者】齐凡, 谢韶波, 温志超 申请人:深圳市芯海科技有限公司