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.

[参考译文] MSP430I2020:MCU可以#39;不能重置

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1101688/msp430i2020-mcu-can-t-be-reset

部件号:MSP430I2020

您好,

我犯了闪存写入错误,然后MCU无法重置。

我可能会擦除一些重要值,因此无法重置MCU。

我可以通过CCS将新程序加载到MCU。

但它无法再工作了。

如果我通过CCS运行debug,它将无法运行和暂停。

您能否帮助挽救此MCU?

#define FLASH_INFO_START 0x1060
#define MAX_FLASH_INFO   928
#define FLASH_INFO_SIZE sizeof(Flash_I)


#define SIZE_OF_TYPE_NOT_LARGE(type,size) extern char _VerifySize##type[1/(size>sizeof(type))]
#define SIZE_OF_TYPE_IS_MULT_OF(type,size) extern char _VerifySize##type[1/((sizeof(type)%size)==0)]

/* check if struct <= MAX_FLASH_INFO*/
SIZE_OF_TYPE_NOT_LARGE(Flash_I,MAX_FLASH_INFO);
SIZE_OF_TYPE_IS_MULT_OF(Flash_I,2);
#define CheckSegLock()  (FCTL3 & LOCKSEG)
#define ChangeSegLock() FCTL3 = FWKEY | LOCKSEG
#define EnWriteFlash()  FCTL1 = FWKEY | SEGWRT
#define EnSegEraseFlash()  FCTL1 = FWKEY | ERASE
#define EraseSegFlash()  FlashP[0]=0
#define DisWriteFlash() FCTL1 = FWKEY
//#define InitFram() FramDisWPROT()
__always_inline static void InitFlash()
{
    FCTL2 = FWKEY | FSSEL_1 | FN1 | FN3 | FN5;
}
__always_inline static void ClrSegLock()
{
    if (CheckSegLock())
        ChangeSegLock();
}
void FlashWriteAll (void)
{
    uint16_t i;
    uint8_t *FlashP;

    FlashP = (uint8_t *)(&Flash_IP);
    ClrSegLock();
   // EnSegEraseFlash();
    //EraseSegFlash();
    //FlashReadAll();
    EnWriteFlash();
    for(i=0;i<FLASH_INFO_SIZE;i++)
        FlashP[i]=FlashBuf[i];
    DisWriteFlash();
    ChangeSegLock();
}

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

    您好,

    我知道为什么MCU不能重置。

    但我需要知道如何恢复TLV,因为TLV被擦除。

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

    您好,Allen:

    TLV数据是特定于设备的,因此您无法完全恢复它。 如果您可以访问另一台MSP430I2020设备,则可以将其TLV复制到损坏的设备上。 但是,DCO值将不匹配,当然批次信息将无效。 这可能允许您恢复到设备。

    此致,

    Evan