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.

[参考译文] MSP430F2618:MSP430芯片 InfoB 闪存故障

Guru**** 2391415 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/918171/msp430f2618-failure-of-msp430-chip-infob-flash

器件型号:MSP430F2618

您好!

我想问一下 MSP430芯片闪存的故障。

当我们的芯片上电时、在 InfoB 闪存区域中备份8MHz 时钟校准信息(CALBC1_8MHZ_INFOB、CALDCO_8MHZ_INFOB)。 此校准信息存储在 InfoA (CALBC1_8MHZ、CALDCO_8MHZ)中。 (我知道这是一种愚蠢的设计、但它确实存在并导致了问题)。 上电后的时钟初始化代码如下:

 

以下是写入闪存的函数(CALBC1_8MHZ_INFOB、CALDCO_8MHZ_INFOB)。

 

最近、发现一些电路板(100块电路板中有4到5块电路板)工作异常。 通过 BSL、CALBC1_8MHZ_INFOB、CALDCO_8MHZ_INFOB 读取闪存信息与 CALBC1_8MHZ、CALDCO_8MHZ 不一致。 有一些小问题。 具体差异如下图所示:

 

现在、我们怀疑其中一个原因可能是闪存写入过程中出现错误、外部工具异常或电源异常、这会导致写入过程中出现问题? 还是静态电可能会在后续存储过程中导致问题? 但是、根据读取的闪存数据、异常电路板中只有两个闪存不正确、这是有一定规律的。 因此、我们更怀疑写入闪存操作是由异常引起的、但我仔细检查了写入过程、未能找到异常。

我们当前的运营是否存在任何违规行为或可能的错误? 或者这种异常的可能原因是什么? 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!  

    1.我不知道为什么要在 flashBUpdate()中启用看门狗?  

    2.为什么要禁用中断? 并且 在 flashBUpdate()返回之前不会再次启用中断。  

    FN1值是多少? 如用户指南 slau144j 第7.3.1节所述、Fftg 需要介于257KHz ~476kHz 之间。 可以仔细检查一下吗?  

    谢谢、  

    Lixin  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的答复。

    在 flashBUpdate()中启用看门狗的操作主要是为了防止看门狗复位。 但这可能不是必需的、因为写入闪存操作不会导致看门狗复位。 我们认为它不应影响写入闪存操作的正确性。

    禁用中断的目的是防止在闪存写入过程中触发中断并影响闪存过程。 在随后的操作中、有一个启用中断的操作。

    FN1代表三频除法。 在1MHz 的主频率下、闪存频率为333kHz、满足257KHz~476kHz 的频率要求。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我找不到 MCLK 的设置。 如果确认 MCLK 为1MHz、闪存写入编码似乎没有问题。 唯一的问题是擦除操作。 在代码示例中,有一个虚拟写入“* Flash_ptr = 0;”。 但在您的代码中看不到它。 请尝试添加它并查看是否有任何改进。  

    FCTL3 = FWKEY;//清除锁定位
    FCTL1 = FWKEY + ERASE;//设置擦除位
    *闪存_ptr = 0;//虚拟写入以擦除闪存段

    FCTL1 = FWKEY + WRT;//为写入操作设置 WRT 位