打印
[MCU]

晶振调试问题

[复制链接]
759|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lizye|  楼主 | 2019-9-24 22:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原代码:
WDTCTL = WDTPW+WDTHOLD;                   // Stop WDT
  
  PMAPPWD = 0x02D52;                        // Enable Write-access to modify port mapping registers
  P4MAP7 = PM_MCLK;
  PMAPPWD = 0;   
UCSCTL3 |= SELREF_2;                      // Set DCO FLL reference = REFO
  UCSCTL4 |= SELA_2;                        // Set ACLK = REFO  *********

  // Increase Vcore setting to level1 to support fsystem=12MHz
  // NOTE: Change core voltage one level at a time..
  //SetVcoreUp (0x01);
  // Initialize DCO to 12MHz  
  __bis_SR_register(SCG0);                  // Disable the FLL control loop
  UCSCTL0 = 0x0000;                         // Set lowest possible DCOx, MODx
  UCSCTL1 = DCORSEL_5;                      // Select DCO range 24MHz operation
  UCSCTL2 = FLLD_1 + 374;                   // Set DCO Multiplier for 12MHz
                                            // (N + 1) * FLLRef = Fdco
                                            // (374 + 1) * 32768 = 12MHz
                                            // Set FLL Div = fDCOCLK/2
  __bic_SR_register(SCG0);                  // Enable the FLL control loop
  // Worst-case settling time for the DCO when the DCO range bits have been
  // changed is n x 32 x 32 x f_MCLK / f_FLL_reference. See UCS chapter in 5xx
  // UG for optimization.
  // 32 x 32 x 12 MHz / 32,768 Hz = 375000 = MCLK cycles for DCO to settle
  __delay_cycles(375000);

  // Loop until XT1,XT2 & DCO fault flag is cleared
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
                                            // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

该代码调试是可以通过的,
但是,上述代码中其他寄存器的配置都不变
我仅改动  UCSCTL4 为
UCSCTL4 |= SELA_2+SELM0+SELM1+SELS0+SELS1;      // Set ACLK = REFO MCLK =SCLK=DCOCLK =12MHz

就通过不了

使用特权

评论回复

相关帖子

沙发
lizye|  楼主 | 2019-9-24 22:07 | 只看该作者
一直在
do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
                                            // Clear XT2,XT1,DCO fault flags
    SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag
循环中出不来,想问下大虾门是何原因?

使用特权

评论回复
板凳
zhaoxqi| | 2019-9-24 22:11 | 只看该作者

你在哪看到的

使用特权

评论回复
地板
lizye|  楼主 | 2019-9-24 22:14 | 只看该作者
我修改时参照资料的

使用特权

评论回复
5
zhenykun| | 2019-9-24 22:18 | 只看该作者
看下你的外接晶振的啊,XT2IN /XT2OUT是需要外接高频晶振的才可起振的,在XTIN/XTOUT外接低频晶振也是可以起振的

使用特权

评论回复
6
wyjie| | 2019-9-24 22:20 | 只看该作者
所以说,楼主看下你的外部晶振是怎样接的,然后在就这程序的调试一下的,应该是可以跳出这个while循环的

使用特权

评论回复
7
yszong| | 2019-9-24 22:25 | 只看该作者
可能是硬件电路问题   晶振这一块焊接一定要注意   烙铁头停留时间不能过长   底层驱动这块   一定要选择好合适的时钟源  

使用特权

评论回复
8
dengdc| | 2019-9-24 22:30 | 只看该作者
嗯,同时在循环式注意不能出现死循环

使用特权

评论回复
9
huwr| | 2019-9-24 22:34 | 只看该作者

低速晶振32768Hz?

使用特权

评论回复
10
yszong| | 2019-9-24 22:37 | 只看该作者
遇到问题就查找datasheet

使用特权

评论回复
11
jlyuan| | 2019-9-24 22:41 | 只看该作者
晶振用的是16M晶振?还是32768Hz的晶振?

使用特权

评论回复
12
supernan| | 2019-9-24 22:45 | 只看该作者
换个晶振试试。

使用特权

评论回复
13
wyjie| | 2019-9-24 22:50 | 只看该作者
晶振加相匹配的电容没?

使用特权

评论回复
14
zhanghqi| | 2019-9-24 22:53 | 只看该作者

P7SEL   |= 0x03;
P5SEL   |= 0x0C;
UCSCTL6 &= ~XT2OFF;
UCSCTL3 |= SELREF_0;
UCSCTL4 |= SELA__XT1CLK;                       
do{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
SFRIFG1 &= ~OFIFG;
}while (SFRIFG1&OFIFG);
UCSCTL6 &= ~XT2DRIVE0;
UCSCTL4 = SELA__XT1CLK + SELS__XT2CLK + SELM__XT2CLK;

使用特权

评论回复
15
lizye|  楼主 | 2019-9-24 22:57 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先

使用特权

评论回复
16
kkzz| | 2019-10-2 16:11 | 只看该作者
你首先要查看是不是硬件的问题

使用特权

评论回复
17
hudi008| | 2019-10-2 16:12 | 只看该作者
是不能正常工作吗?      

使用特权

评论回复
18
lzmm| | 2019-10-2 16:12 | 只看该作者
代码调试是可以通过的?        

使用特权

评论回复
19
minzisc| | 2019-10-2 16:13 | 只看该作者
UCS包含有五种时钟源,依次是:XT1CLK、VLOCLK、REFOCLK、DCOCLK和XT2CLK。

使用特权

评论回复
20
selongli| | 2019-10-2 16:14 | 只看该作者
1)XT1处于LF模式作为XT1CLK时钟源。ACLK选通为XT1CLK。  
(2)MCLK选通为DCOCLKDIV  
(3)SMCLK选通为DCOCLKDIV  
(4)FLL使能,且将XT1CLK作为FLL参考时钟。  
(5)XIN和XOUT脚设置为通用IO,XIN和XOUT配置为XT1功能前,XT1保持禁用。  
(6)如果可用的话,XT2IN和XT2OUT被设置为通用IO且保持禁止状态。   

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

9757

帖子

2

粉丝