msp430g2332用内部时钟时,批量生产时每个板上的频率都不同,与设定的频点会差几十赫兹,怎么办?
Susan Yang:
您现在是否有进行过校准?
user3899012:
回复 Susan Yang:
没有,不知道怎样校准啊!!!
灰小子:
楼主说的内部时钟是dco还是VLO?
配置的频率是多少?
如果是配置较高的频率,差几十Hz也是正产的。
user3899012:
回复 灰小子:
用的是内部DCO,时钟为默认设置,工作在1M上。有什么办法来减小误差呢,论坛上都说的DCO校准,是怎样用呢。
灰小子:
回复 user3899012:
大部分msp430内部都存储有ti出厂时校准dco的参数,msp430g2332也有。
在初始化的时候添加上相关代码就能校准dco,代码见如下例程
*********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/ //****************************************************************************** //MSP430G2xx2 Demo - Basic Clock, Output Buffered clocks with preloaded DCO //calibration constants for BCSCTL1 and DCOCTL. ////Description: Buffer ACLK on P1.0, default SMCLK(DCO) on P1.4 and MCLK/10 on //P1.1. DCO is software selectable to 1, 8, 12, or 16Mhz using calibration //contstants in INFOA. // //ACLK = LFXT1 = 32768, MCLK = SMCLK = Selectable at 1, 8, 12 or 16Mhz ////* External watch crystal installed on XIN XOUT is required for ACLK *//// //* By default, the MSP430 uses XT1 to source ACLK; P2.6/7 configured////* automatically. //MSP430G2xx2 //----------------- ///|\|P2.6/XIN|- //| || 32kHz //--|RSTP2.7/XOUT|- //|| //|P1.4/SMCLK|-->SMCLK = Default DCO //|P1.1|-->MCLK/10 = DCO/10 //|P1.0/ACLK|-->ACLK = 32kHz //D. Dang //Texas Instruments Inc. //December 2010 //Built with IAR Embedded Workbench Version: 3.42A //******************************************************************************#include <msp430.h>int main(void) {WDTCTL = WDTPW +WDTHOLD;// Stop Watchdog Timer//1Mhzif (CALBC1_1MHZ==0xFF)// If calibration constants erased{while(1);// do not load, trap CPU!!}DCOCTL = 0;// Select lowest DCOx and MODx settingsBCSCTL1 = CALBC1_1MHZ;// Set rangeDCOCTL = CALDCO_1MHZ;// Set DCO step + modulation *//* //8Mhzif (CALBC1_8MHZ==0xFF)// If calibration constants erased{while(1);// do not load, trap CPU!!}DCOCTL = 0;// Select lowest DCOx and MODx settingsBCSCTL1 = CALBC1_8MHZ;// Set rangeDCOCTL = CALDCO_8MHZ;// Set DCO step + modulation *//* //12Mhzif (CALBC1_12MHZ==0xFF)// If calibration constants erased{while(1);// do not load, trap CPU!!}DCOCTL = 0;// Select lowest DCOx and MODx settingsBCSCTL1 = CALBC1_12MHZ;// Set rangeDCOCTL = CALDCO_12MHZ;// Set DCO step + modulation*//* //16Mhzif (CALBC1_16MHZ==0xFF)// If calibration constants erased{while(1);// do not load, trap CPU!!}DCOCTL = 0;// Select lowest DCOx and MODx settingsBCSCTL1 = CALBC1_16MHZ;// Set rangeDCOCTL = CALDCO_16MHZ;// Set DCO step + modulation*/P1DIR |= 0x13;// P1.0,1 and P1.4 outputsP1SEL |= 0x11;// P1.0,4 ACLK, SMCLK outputwhile(1){P1OUT |= 0x02;// P1.1 = 1P1OUT &= ~0x02;// P1.1 = 0} }
Susan Yang:
回复 user3899012:
请参考之前的帖子
e2echina.ti.com/…/62646
user3899012:
回复 灰小子:
不好意思,我还想问一下,它校准的原理是怎样的呢?是不是我用的是1M的DCO,就只用校准1M就行了呢?其它的频率都不用去校准。
灰小子:
回复 user3899012:
1、原理就是配置dco相关寄存器到合适的参数
dco的工作原理可以参考数据手册的Digitally-Controlled Oscillator (DCO)部分。
2、是的。使用哪个频率就校准哪个频率。
ti出厂时一般给出1MHz、8MHz、16MHz等几个频率的参数(不同msp430型号可能会不同),如果使用未提供校准参数的频率,就只能自己校准了。
user3899012:
回复 灰小子:
谢谢!!!解了我多时的疑问。