mcu是430f2418
主时钟是外部8M ,低速时钟外部32.768 。 32.768用来做485通信的波特率。
程序运行初始化时钟部分如下。
出现不运行的时候使用示波器观察8M起振,32k没起振 。试过外部12pf ,内部6pf 。 外部不焊 内部12.5pf 。都不行
ps:晶振是kds的 12.5pf 圆柱状音叉型晶振。
- static void Init_clock(void)
- {
- DCOCTL=0x60;
- BCSCTL1=0x07;
- BCSCTL2=0x8a;//0x8a SMCLK=/2,0X88 SMCLK=/1
- // BCSCTL3=0x84; //6pF
- BCSCTL3=0x8C; //12.5pF
- //P5SEL=0X70;
- volatile unsigned int i;
- do
- {
- RED_LED_ON();
- GREEN_LED_ON();
- POWER_ON();
- IFG1 &= ~OFIFG; // Clear OSCFault flag
- for (i = 0xffff; i > 0; i--); // Time for flag to set
- }
- while ((IFG1 & OFIFG));
- }
复制代码
很遗憾告诉你,这个片子看什么晶振注意事项也没有用。。。。我早年深受其害,追这个问题追了近两年
参考其ErrataSheet,可以看到有这么一个问题“XOSC8”,而TI专门给了一个文档来提出针对性解决方法“XOSC8 Guidance”,其中有一个方案是改用ESR大于40K欧姆的晶振,我多年来找不到这种晶振,所有晶振厂家,包括TDK,epson这一类的国际大厂,都说无法保证ESR大于40K欧姆,只能保证ESR不大于某个值。其它还有几个解决办法,但都并不能妥善解决,暂时解决的机器,总会有一部分机器在持续运行一段时间后出现该故障,持续运行时间一周到半年不等。
后续发现新批次的芯片Erratasheet上把XOSC8删除了,我高兴过一阵,也确实买过一批新批次的芯片,2000片,未采取任何措施的情况下任何问题也没有,但是,我估计是TI批次管理不严格,后期再采购(都是通过lierda采购的),印着新批次号的芯片仍然存在该问题,可以这么说吧,这次采购的这一批正常,下一批就不正常了,但是再下一批,也许会碰到能正常的
没有任何办法,唯一的解决办法是使用有源晶振或者外部时钟输入
一周热门 更多>