430f5438A系统时钟从xt2返回默认配置

[复制链接]
1844|14
 楼主| qe123 发表于 2016-1-15 12:34 | 显示全部楼层 |阅读模式
我在使用430f5438A单片机,我使用外部xt2   22.118MHz的晶振,正常能跑起来,但有的时候会出现系统时钟返回默认配置的情况。我的单片机接有uart0和外部中断。我仔细看程序发现我在设置寄存器出错了,但是还能运行,这句 UCSCTL6 |= XT2DRIVE2(晶振的工作范围是24~32MHz)设置错了。应该设置成UCSCTL6 &= ~XT2DRIVE_1(晶振的工作范围是16~24MHz).这个寄存器设置错会导致系统时钟有返回默认值的情况吗?


SetVcoreUp(PMMCOREV_3);                     // Set VCore to 1.8MHz for 20MHz
  unsigned char i;
  P5SEL |= BIT2 + BIT3;                     //P5.2和P5.3选择为晶振XT2输入  
  UCSCTL6 &= ~XT2OFF;
  UCSCTL3 |= SELREF_2;  
  UCSCTL4 |= SELA_2;  
  do
  {
    UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
    SFRIFG1 &= ~OFIFG;                          // 清除振荡器失效标志
    for (i = 0xFF; i > 0; i--);                 // 延时,等待XT2起振
  } while (SFRIFG1 & OFIFG);                    // 判断XT2是否起振
  UCSCTL6 |= XT2DRIVE0;
  UCSCTL4 |= SELS_5 + SELM_5;                   //选择MCLK、SMCLK为XT2,
  return;
dirtwillfly 发表于 2016-1-15 14:17 | 显示全部楼层
一般时钟配置错误,会导致外部晶振不能正常起振。然后系统就会使用默认的dco
vivilzb1985 发表于 2016-1-15 22:36 | 显示全部楼层
能适用系统内部的DCO的就尽量用内部的,这样可以少一个晶振的设计。
firstblood 发表于 2016-1-18 17:31 | 显示全部楼层
晶振的设置时非常关键的。
 楼主| qe123 发表于 2016-1-19 11:15 | 显示全部楼层
dirtwillfly 发表于 2016-1-15 14:17
一般时钟配置错误,会导致外部晶振不能正常起振。然后系统就会使用默认的dco ...

这两天一直在找这个问题的原因,我发现有时候我脱下衣服用手一摸就变慢了,而且用打火机一打就慢,但是没有看到重启(led指示灯),在程序运行过程中就返回到DOC了,搞不懂
dirtwillfly 发表于 2016-1-19 17:03 | 显示全部楼层
qe123 发表于 2016-1-19 11:15
这两天一直在找这个问题的原因,我发现有时候我脱下衣服用手一摸就变慢了,而且用打火机一打就慢,但是没 ...

你是不是触摸的离晶振比较近?
有时候晶振不起振,用手触摸一下就好了。手会影响起振电容
angerbird 发表于 2016-1-19 20:42 | 显示全部楼层
这个是需要将相关的寄存器配置好的。
 楼主| qe123 发表于 2016-1-20 08:15 | 显示全部楼层
dirtwillfly 发表于 2016-1-19 17:03
你是不是触摸的离晶振比较近?
有时候晶振不起振,用手触摸一下就好了。手会影响起振电容 ...

昨天我把程序修改了,只剩下时钟设置和io,在while中只有一个io输出,接到示波器,正常的时候是1M左右,问题是48K左右,很容易出现。触摸的地方是通过外部按键输入的,单片机检测键值,没有直接摸晶振
 楼主| qe123 发表于 2016-1-20 08:15 | 显示全部楼层
angerbird 发表于 2016-1-19 20:42
这个是需要将相关的寄存器配置好的。

是按照ti官方给的xt2 配置的
dirtwillfly 发表于 2016-1-20 12:18 | 显示全部楼层
qe123 发表于 2016-1-20 08:15
昨天我把程序修改了,只剩下时钟设置和io,在while中只有一个io输出,接到示波器,正常的时候是1M左右, ...

奇怪的问题。还没遇见过变化那么大的
dirtwillfly 发表于 2016-1-20 18:07 来自手机 | 显示全部楼层
ti工程师的回答,觉得比较有道理,分享给大家:
dirtwillfly 发表于 2016-1-20 18:07 来自手机 | 显示全部楼层
首先,对于你的静电测试方式,我有非常大的疑问。非常的不规范。在这样情况下造成任何芯片的损坏都是很正常的。一般冬天人体所带的静电可能会高达万伏,如果你是直接去干扰芯片而不是外壳之类就更不能接受了 第二,你是怎么确认芯片没有复位的 第三,F5438A应该是有fail-safe功能的,当检测到外晶振失效时会自动将时钟从原有时钟切到低速时钟。当你去摸芯片的时候,晶振摸死了,时钟就被切走了,并不会复位。
android2 发表于 2016-1-21 19:25 | 显示全部楼层
系统默认的dco的多高频率的
baimiaocun2015 发表于 2016-1-21 20:56 | 显示全部楼层
这个不很清楚的,一般的XT2接外部晶振的,主频就是这个的。
309030106 发表于 2016-1-27 17:21 | 显示全部楼层
一般冬天人体所带的静电可能会高达万伏,

怎么作防静电处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

623

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部