Other Parts Discussed in Thread: C2000WARE
器件型号: TMS320F28035
主题: C2000WARE 中讨论的其他器件
您好:
我一直在应用中使用内部振荡器。 我现在正尝试切换到外部晶体振荡器。 我实现了如下所示的代码。
当我第一次刷写程序时,系统会按预期工作 — LED 闪烁、计时器中断每 1ms 执行一次。 但是、有时在闪烁后、LED 不会闪烁、计时器中断不会执行。
在某些情况下:
- 第一个闪存工作正常。
- 之后 下电上电、LED 不闪烁。
- 再次对程序进行 Re 刷写并不总是能解决问题。
系统似乎并非总是切换到外部振荡器或从外部振荡器正常运行。
您能否提出导致此行为的原因?
我还尝试设置 INTOSC1OFF = 1、但行为保持不变。
下面是用于选择外部振荡器的代码、我也附录了原理图
静态 void CPU_ExtOsclSel (void)
{
/* TI — 推荐的顺序
* XTAL -开启 — 主时钟
* INTOSC1 -打开 — 备份/调试器安全
* INTOSC2 - OFF — 未使用*/
EALLOW;
SysCtrlRegs.CLKCTL.BIT.XTALOSCOFF = 0;//外部晶振开启 (X1/X2 上的 XTALOSC)
EDIS;
DELAY_US (10000);//让晶体稳定 (~10ms)
EALLOW;
SysCtrlRegs.CLKCTL.BIT.XCLKINOFF = 1;//关闭 XCLKIN(未使用)
SysCtrlRegs.CLKCTL.BIT.OSCCLKSRC2SEL = 0;// 0 = X1/X2 上的外部晶体
SysCtrlRegs.CLKCTL.BIT.OSCCLKSRC2SEL = 0;//选择了外部振荡器
SysCtrlRegs.CLKCTL.BIT.OSCCLKSRCSEL = 1;// 1 =使用源 2 (XTAL 或 INTOSC2)
SysCtrlRegs.CLKCTL.BIT.WDCLKSRCSEL = 0;// WDT 时钟源= INTOSC1
SysCtrlRegs.CLKCTL.BIT.INTOSC2OFF = 1;//关闭 INTOSC2
SysCtrlRegs.CLKCTL.BIT.INTOSC1OFF = 0;//使 INTOSC1 保持开启作为备份
EDIS;
}

如果能就造成间歇性行为的原因提供任何指导、我们将不胜感激。
谢谢你。