CN103761158A - 基线pic单片机内部振荡器重新校准的一种方法 - Google Patents

基线pic单片机内部振荡器重新校准的一种方法 Download PDF

Info

Publication number
CN103761158A
CN103761158A CN201410027051.3A CN201410027051A CN103761158A CN 103761158 A CN103761158 A CN 103761158A CN 201410027051 A CN201410027051 A CN 201410027051A CN 103761158 A CN103761158 A CN 103761158A
Authority
CN
China
Prior art keywords
chip microcomputer
internal oscillator
receiving end
recalibrating
data
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.)
Pending
Application number
CN201410027051.3A
Other languages
English (en)
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201410027051.3A priority Critical patent/CN103761158A/zh
Publication of CN103761158A publication Critical patent/CN103761158A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Microcomputers (AREA)

Abstract

本发明涉及单片机领域,给出一种重新校准Microchip公司的基线PIC单片机内部振荡器振荡频率的方法。该方法的优点是只需要设计一个需要校准的单片机的软件程序,利用串行异步通信原理,单片机作为发送端,以接收端的异步时钟信号为参考源,单片机在不同振荡频率下,发送特定的数据和当前校准值,通过接收端进行接收。当接收端接收到正确的发送数据时,发送端的发送时钟和接收端的接收时钟一致,以此确定当前的单片机内部振荡器频率,从而获得校准值。这种方法获得的校准值,理论上,可使内部振荡器工作在标称振荡频率的±0.5%以内。

Description

基线PIC单片机内部振荡器重新校准的一种方法
技术领域
本发明涉及单片机领域,主要涉及Microchip公司的具有内部振荡器的基线PIC单片机内部振荡器振荡频率的重新校准。
技术背景
Microchip公司的基线PIC单片机除PIC16F54/57/59这三个型号外,其他型号都具有内部振荡器,内部振荡器的振荡频率在出厂时一般校准在±1%。这些单片机在使用内部振荡器时能够增加1至2根I/O口线,给使用者带来了较大的方便。具有内部振荡器的基线PIC单片机,出厂时就在程序存储器的最后一个单元烧写入一条指令MOVLW XX,其中XX就是校准值,这个单元的地址存放在复位向量中。复位时,自动执行MOVLW XX指令,将校准值装入W,随即程序计数器PC将返回0x000地址处执行用户程序。用户可在0x000处放置指令MOVWFOSCCAL,将校准值写入振荡器校准寄存器OSCCAL中,使片内振荡器工作在标准频率的±1%范围内。由于程序存储器的最后一个单元任何时候都不被保护,在对器件擦除或编程过程中可能会导致出厂时的校准值丢失,校准值丢失可能会造成振荡频率与标准频率偏差过大,这对于一些时序要求严格的单片机应用系统来说,会产生严重的错误。如通信失败、延时或定时时间偏差太大等,使系统不能正常工作。这种情况就必须对单片机的内置振荡器的振荡频率进行重新校准。对内部振荡器进行重新校准,既需要将标称频率的校准值找出来,还要将这个校准值输出出来,这样才能将这个校准值重新写入单片机。目前,常规的校准方法是:在单片机外部构建一个振荡电路或使用一个标准的信号源作为参考时钟,这个参考时钟的频率远低于单片机在标准振荡频率。把参考时钟输出的信号输入到单片机的一个输入引脚,编写单片机固件程序,对输入的参考时钟信号进行采样、对比并逐次调整振荡器校准寄存器的值,找出标准校准值XX,再想办法将这个值XX输出出来,再用编程器将这个值以MOVLW XX的形式写入到单片机程序存储器的最后一个单元中,从而实现对内部振荡器的重新校准。这种方法的一个设计实例由阿尔及利亚奥兰科学技术大学的Noureddine Benabadji发表在《电子设计技术》(2008年8期100页《基线PIC微控制器的内部振荡器的重新校准》)上。这种方法首先需要搭建一个振荡器或备有标准信号源,其次是要设计显示电路将校准值显示出来,增加了硬件、软件的设计难度。本发明的方法不需要设计任何硬件,只需要编写单片机软件,利用串行异步通信原理,单片机作为发送端,在不同振荡频率下,发送特定的数据和当前校准值,在接收端进行接收。当接收端接收到正确的发送数据时,发送端的发送时钟和接收端的接收时钟一致,以此来确定当前的单片机内部振荡器频率,也就是说这种方法是以接收端的异步时钟信号为参考源的。
发明内容
本发明公开一种对具有内部振荡器的基线产品系列PIC单片机的内部振荡器进行重新校准的方法。该方法的实现主要是设计单片机的软件程序,将振荡器的调整值通过计算机串行口,在串口调试助手上显示出来。根据所要校准单片机的内置振荡器的标称值,在程序中设置合适的串行口波特率,并采用1位起始位、8位数据位、1位停止位的帧格式。在程序主循环中,首先将振荡器校准寄存器OSCCAL写入最低的振荡频率的调整值,延时50ms以上,使振荡器输出稳定,然后将特定的十六进制数据(例如0x55、0xAA等)及振荡器校准寄存器的当前数值(校准值)从单片机的串行口输出,随后,向振荡器校准寄存器OSCCAL写入下一个相邻的调整值,重复上述过程,使调整值从最小到最大周而复始的循环。图1为程序流程图。在接收端采用相同的波特率进行接收,如果单片机的当前振荡频率在串行口通信的允许误差范围内,就会正确的接收到单片机所发送的十六进制数据及振荡器校准寄存器的当前数值(校准值)。一般串行口的时钟误差允许范围在±4.5%,经实测,采用不同的计算机进行接收,可以得到18至21个正确的接收值,取这些正确接收值的中间值,就是找到的校准值,理论上,该校准值可使内部振荡器工作在标称振荡频率的±0.5%以内,从而实现对内部振荡器的重新校准。
附图说明
图1是通用程序流程图;
图2是实施例主程序流程图;
图3是实施例模拟串行口9600波特率发送子程序流程图。
具体实施方式
本发明的一个实施例是对SOT-23封装的PIC10F202单片机进行内部振荡器的重新校准。这个单片机只有6个引脚,只有内部振荡器,内部振荡器的标称值是4MHz,指令周期是1μs。由于PIC10F202单片机没有串行口,所以采用软件模拟的方法实现串行口而且只需要模拟出10位帧格式的串行口输出时序。如果采用9600的波特率,则传输1位数据的时间约为104μs,通过Microchip公司的集成开发环境MPLAB IDE的模拟仿真MPLAB SIM功能,按标称值4MHz计算每条指令的执行周期,用汇编语言设计串行口发送子程序,使包括起始位、停止位在内的每一位数据的发送时间均精确为104μs。图3是串行口发送子程序流程图。PIC10F202的振荡器校准寄存器OSCCAL的高7位是校准位,最低位为1/4内部振荡频率输出使能位。校准位以二进制补码的形式存储,这7位由高到低为1000000时为最小频率,0000000时为中心频率,0111111为最大频率,共128个值。由于单片机的主程序设计为周而复始的死循环,为简便起见,没有判断环节,并置初始校准值为中心频率0000000,延时、输出0x55、0xAA和当前振荡器校准寄存器OSCCAL中的值后,对振荡器校准寄存器OSCCAL的值加2并写入OSCCAL中,来设置下一个校准值,当OSCCAL的高7位为1111111时,OSCCAL的值加2,就会使OSCCAL的高7位变为0000000,这样处理既能使128个校准值依次进行设置,而且不会影响OSCCAL最低位的值。主程序流程图如图2所示。在程序的开始可以设置OSCCAL最低位的值为1,使能1/4内部振荡频率输出,通过GP2引脚可以用频率计或示波器检验输出结果。在该实施例中,实现上述功能的PIC10F202单片机的程序,经过优化仅使用了69个程序存储单元。

Claims (7)

1.基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:需要校准内部振荡器的PIC单片机作为串行口通信的发送端,通过单片机内部程序依次改变单片机内部振荡器的振荡频率,在不同的振荡频率下,将特定字符或数据以及当前的校准值在约定的波特率和数据帧格式下通过单片机串行口送出,根据串行口异步通信原理,接收端在相同波特率及相同数据帧格式下,如果发送端的时钟与接收端的时钟相同,在接收端就能获得正确的数据,通过观察串行口接收端数据的正确性,就能找出内部振荡器的校准值。
2.根据权利1所述的基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:需要校准内部振荡器的PIC单片机的串行口,可以是通过软件模拟的串行口。
3.根据权利1所述的基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:PIC单片机振荡频率的改变是通过改变单片机内部振荡器校准寄存器OSCCAL中的校准值来实现的。
4.根据权利1和权利3所述的基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:单片机内部振荡器校准寄存器OSCCAL中的校准值的改变是由小到大或者由大到小依次改变,并且周而复始循环进行的。
5.根据权利1和权利4所述的基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:特定字符或数据可以是0x55、0xAA等十六进制数据或其他ASCII码字符,这些特定字符或数据以及当前校准值,在每次单片机内部振荡器校准寄存器OSCCAL中的校准值的改变后都从单片机串行口发送一次。
6.根据权利1、权利4和权利5所述的基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:接收端获得的正确数据为18至21个,这些正确数据所对应的校准值是依次相邻的,这些正确数据的中间值所对应的校准值产生的单片机内部振荡器的频率精度可以达到接收端时钟的±0.5以内。
7.根据权利1和权利6所述的基线PIC单片机内部振荡器重新校准的一种方法,其特征在于:接收端可以是计算机或其他可以进行串行口通信并显示数据的设备或装置。
CN201410027051.3A 2014-01-16 2014-01-16 基线pic单片机内部振荡器重新校准的一种方法 Pending CN103761158A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410027051.3A CN103761158A (zh) 2014-01-16 2014-01-16 基线pic单片机内部振荡器重新校准的一种方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410027051.3A CN103761158A (zh) 2014-01-16 2014-01-16 基线pic单片机内部振荡器重新校准的一种方法

Publications (1)

Publication Number Publication Date
CN103761158A true CN103761158A (zh) 2014-04-30

Family

ID=50528401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410027051.3A Pending CN103761158A (zh) 2014-01-16 2014-01-16 基线pic单片机内部振荡器重新校准的一种方法

Country Status (1)

Country Link
CN (1) CN103761158A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116185133A (zh) * 2023-04-25 2023-05-30 南京芯驰半导体科技有限公司 芯片时钟校准方法、装置、芯片、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2676526Y (zh) * 2003-01-20 2005-02-02 北京安控科技发展有限公司 基带传输调制解调器电路
CN101247123A (zh) * 2007-10-24 2008-08-20 吴明星 一种单片机系统时钟校准方法
US20090161806A1 (en) * 2007-12-19 2009-06-25 Apple Inc. Microcontroller clock calibration using data transmission from an accurate third party
CN102714503A (zh) * 2011-01-20 2012-10-03 联发科技(新加坡)私人有限公司 具有加强的抗噪音功能的连续时钟过采样转换器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN2676526Y (zh) * 2003-01-20 2005-02-02 北京安控科技发展有限公司 基带传输调制解调器电路
CN101247123A (zh) * 2007-10-24 2008-08-20 吴明星 一种单片机系统时钟校准方法
US20090161806A1 (en) * 2007-12-19 2009-06-25 Apple Inc. Microcontroller clock calibration using data transmission from an accurate third party
CN102714503A (zh) * 2011-01-20 2012-10-03 联发科技(新加坡)私人有限公司 具有加强的抗噪音功能的连续时钟过采样转换器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116185133A (zh) * 2023-04-25 2023-05-30 南京芯驰半导体科技有限公司 芯片时钟校准方法、装置、芯片、电子设备及存储介质

Similar Documents

Publication Publication Date Title
US7953828B2 (en) Distributed networked data acquisition device
CN101840368B (zh) 多核处理器的jtag实时片上调试方法及其系统
CN108519889B (zh) 一种基于jtag标准的fpga程序远程升级系统及方法
CN102130951A (zh) 一种服务器及其可编程逻辑器件的远程升级方法
CN102662835A (zh) 一种针对嵌入式系统的程序调试方法及嵌入式系统
CN105302612A (zh) 快速升级电子系统机箱内单片机软件程序的方法
CN105389286A (zh) 一种biss c协议数据采集及显示装置
CN202929519U (zh) 一种多通道相位可调的信号发生器
RU195362U1 (ru) Мезонинный модуль ввода-вывода сигналов по стандартам ARINC 429 и ARINC 825
CN104216324A (zh) 合成孔径雷达任务管理控制器及其相关方法
CN102495552A (zh) 面向星载电子系统的实时仿真系统
CN105653409A (zh) 一种基于数据类型转换的硬件仿真器验证数据提取系统
CN104200846B (zh) 一种嵌入式prom测试系统及实现方法
CN110011878A (zh) 一种四can总线模拟时序通信测试板卡及其测试方法
CN206060731U (zh) 多通道数字信号处理平台
CN105487489A (zh) 一种带被试件同步功能的三通道编码器细分及位置信息采集装置
CN108933841A (zh) 一种射频前端设备的控制方法及装置
CN103761158A (zh) 基线pic单片机内部振荡器重新校准的一种方法
CN105809925A (zh) 一种模拟器信号源的无线控制系统
CN112631976A (zh) 一种可配置硬件ip电路结构
CN101158717B (zh) 伪卫星基带信号生成器的嵌入式处理器的控制方法
CN105183954A (zh) 一种基于pxi的串行总线健康监测平台
CN110750399A (zh) 一种串口误码率测试方法及装置、计算机设备、可读存储介质
CN109117160A (zh) 具有在线升级cpld固件的gnss主机、系统和方法
CN109240185B (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140430