This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F2XX系列的DCO校验问题

Other Parts Discussed in Thread: MSP-GANG

HI TI team:

       关于DCO校验的疑惑如下:

1、F2X 系列MCU是否需要在程序里添加判断DCO被擦除的代码?

if( CALBC1_8MHZ==0xFF )                     // If calibration constant erased
                {
                                while(1);                     // do not load, trap CPU!!
                }

2、F2X系列DCO的值被擦除的可能原因有哪些?下载方式使用的是BSL.

3、如确定DCO被擦除的话,我如何进行重新校验填写的方法?

  • 1、如果程序比较依赖相关的校准数据,可以添加判断的代码。

    2、大部分是擦除flash的时候选了信息flash,小部分是跑飞擦除的或者买到了翻新ic

    3、校准没有好办法,只能调节不同的参数,然后通过输出时钟频率来判断是否准确。确定准确的时候把这时候的参数写到信息flash中相应的地址就可以了

  • 请您不要对information memory segA 和 segB进行操作,里面留有TLV和DCO校准时钟。

    在示例代码中一般会有下面的语句

    if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)

    {
    while(1);// If calibration constants erased
    // do not load, trap CPU!!
    }
    BCSCTL1 = CALBC1_1MHZ; // Set range
    DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation */

    在启动时都先检查DCO1MHZ的校准值是否为0xFF,是则进入while(1)死循环。

    若是DCO数据被擦除,一般的解决办法有两种

    1 利用Timer捕捉外部的32.768K晶振或是时钟源,然后得到1M,8M或是12Mhz之类的DCO的数值,然后在直接写入segment flashA里面

    2 可以通过类似于MSP-Gang之类的工具,它具有校正DCO的功能选项

    另外请以后注意在做BSL的时候,事先把DCO数据读出,做好备份工作。
  • 如果有用外部晶振,不用内部DCO,这些是不是不需要注意呢?
    另外您说BSL下载时候先备份DCO的数据,与SBW,JTAG下载方式有啥区别不同么 ,会容易造成擦除么?
  • 是的

    BSL 下载的时候,默认是不会擦除DCO的信息的。但为防止意外擦除,还是建议您备份一下
  • 信息flash里除了对dco的校准信息,还有adc等的校准信息,所以不要随意擦除信息flash。