配置了MSP430的内部时钟,但是其中的32768一直不起振,因为xin/xout外部有接器件,想请教下如何在xin/xout外部有接外部器件的情况下,使用32768这个时钟
下面是配置时钟的代码,以及xin/xout两个引脚的原理图
void SystemClock_Init(void)
{
if (CALBC1_12MHZ==0xFF) // If calibration constants erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_12MHZ + DIVA_0 ; // Set range
DCOCTL = CALDCO_12MHZ; // Set DCO step + modulation*/
BCSCTL2 = DIVS_0+DIVM_1;
BCSCTL3 |= LFXT1S_0 ;
delay_us(50);
}
本振回路对分布参数非常敏感,通常不准许回路里有其它无关元件,尤其是振荡器输入回路里,顶多准许在振荡器输出回路加高阻元件,比如一个CMOS门的输入,其它情况则完全不准许。
如果本振回路对应的IO必须复用,又必须用到32768Hz的外置本振,唯一的办法是外置有源晶振,但依然要求有源晶振的输出不能与外电路的输出发生电平竞争。但多数情况下,这种设计无实用意义。
TI 的範例:msp430x20x3_clks.c
//******************************************************************************
//
// test OK!
//
// MSP430F20xx Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK/10
//
// Description: Buffer ACLK on P2.0,
// default SMCLK(DCO) on P1.4 and MCLK/10 on P1.1.
//
//
// ACLK = LFXT1 = 32768, MCLK = SMCLK = default DCO
// //* External watch crystal installed on XIN XOUT is required for ACLK *//
//
// MSP430F20xx
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.4/SMCLK|--> SMCLK = Default DCO
// | P1.1|--> MCLK/10 = DCO/10
// | P1.0/ACLK|--> ACLK = 32kHz
// | |
//
// M. Buccini / L. Westlund
// Texas Instruments Inc.
// October 2005
// Built with IAR Embedded Workbench Version: 3.40A
//******************************************************************************
#include <msp430x20x3.h>
void main(void)
{
WDTCTL = WDTPW +WDTHOLD; // Stop Watchdog Timer
P1DIR |= 0x13; // P1.0, P1.1 and P1.4 outputs
P1SEL |= 0x11; // P1.0, P1.4 ACLK, SMCLK output
while(1)
{
P1OUT |= 0x02; // P1.1 = 1
P1OUT &= ~0x02; // P1.1 = 0
}
}
引用: akii 发表于 2020-8-19 18:34 TI 的範例:msp430x20x3_clks.c //******************************************************* ...
非常感谢
引用: maychang 发表于 2020-8-19 09:54 “因为xin/xout外部有接器件” 这两个引脚接有外部器件,如果32768石英晶体接上去还要起振, ...
還有兩個 10~15pF的電容要接喔 ! 別忘記 !
不错,一起涨知识啦。