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.

[参考译文] MSP430BT5190:MSP430崩溃

Guru**** 2614265 points
Other Parts Discussed in Thread: MSP430BT5190

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/665913/msp430bt5190-msp430-crash

部件号:MSP430BT5190

大家好。

这个问题是随机的, 我不知道原因。

MCU擦除内部闪存,    崩溃的可能性非常低。

请参阅我的代码。

erase_NumberOfBank (0x1万,3);

P.S.代码内存地址0x1万h- 03FFFFh 未使用。

void erase_NumberOfBank (unsigned long int start_address,unsigned char numberofbank)

 unsigned long int *Flash_PTR;//闪存指针
 无符号int j;
 //__disable_interrupt ();// 5xx解决方法:禁用全局
 //擦除时中断。 重新启用
 // GIE (如果需要)
 用于(j=0;j<numberofbank;j++)
 {
  flash_ptr =(unsigned long int *)(start_address + 0x1万*j);//初始化Flash指针
  //while (BUSY和FCTL3);//检查是否正在使用闪存
  FCTL3 = FWKEY;//清除锁定位
  FCTL1 = FWKEY + MERAS;//设置擦除位
  *Flash_PTR =0;//虚拟写入以擦除闪存段
  //while (BUSY和FCTL3);//检查是否已完成擦除
  FCTL1 = FWKEY;//清除位
  FCTL3 = FWKEY + LOCK;//重置锁定位  
  while (busy和FCTL3);//检查是否已完成擦除
 }
 //__enable_interrupt ();
}

谢谢你

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

    您好,Dunk,

    为了更好地了解您正在尝试完成的任务和遇到的问题,我需要有关您的系统的更多信息。

    上面发布的代码设置为擦除三个内存组B,C和D,分别从地址0x1万,0x2万和0x3万开始。 这是否正确?

    您的意思是:

    Dunk WU 说:
    MCU擦除内部闪存,    它崩溃的概率非常低。[/QUOT]

    1. 这是否意味着MCU在进入您发布的闪存擦除例程时正在重置?
    2. 您能否验证设备的DVCC和VCORE引脚上的电容?
    3. 您的系统频率是多少?
    4. 您是否已验证您没有违反系统频率与电源电压规格?

    此致,  
    Caleb Overbay

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

    您好,先生,

    感谢您的回复。

    我有一个应用程序将备份代码存储在三个内存组B,C和D中,并且备份代码会定期更新。

    以下是对您的查询的回复。

    上面发布的代码设置为擦除三个内存组B,C和D,分别从地址0x1万,0x2万和0x3万开始。 这是否正确?
    答复:是的。

    1. 这是否意味着MCU在进入您发布的闪存擦除例程时正在重置?
      回复:是。MCU正在重置或 编程计数器为未知地址。
    2. 您能否验证设备的DVCC和VCORE引脚上的电容?
      回复:请参阅随附的文件。 (msp430bt5190.jpg)
    3. 您的系统频率是多少?
      回复:24MHz
    4. 您是否已验证您没有违反系统频率与电源电压规格?
      回复:是,请确认所附文件。 DVCC 3.28v (系统频率initial.jpg)

    谢谢你

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

    在上面的帖子中,您似乎突出显示您正在VCORE 3级操作设备。 您能否提供用于切换到此核心级别的代码?

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

    您好,先生,

    请参阅随附的文件。 (主要c)

    谢谢你。

    e2e.ti.com/.../1258.main.c

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

    您好,Dunk,

    我认为您将VCORE错误地设置为3级,而且内核没有接收到24 MHz操作所需的电压。 当不对闪存编程时,您的代码似乎运行良好。 当闪存编程开始时,闪存模块需要大量电流。 这种额外的电流消耗会导致VCORE上的电压下降到规格之外,并且设备会重置。

    我看到您的代码中有SetVCoreUp和SetVcoreDown方法,但您没有使用它们。 为了正确更改VCORE设置,需要执行非常具体的操作顺序,而您的代码没有遵循这些顺序。 MSP430x5xx和MSP430x6xx系列用户指南的2.2 4节 介绍了如何正确地增加Vcore以获得更高的MCLK频率。 此外,如果您从TI示例代码复制了SetVCoreUp和SetVcoreDown方法,我建议您使用这些方法来更改VCORE设置。 您还应记住,如果VCORE需要从级别1更改为级别3,您需要逐步改为该级别。 例如,将VCORE设置为级别1,然后设置为级别2,最后设置为级别3。

    此致,

    Caleb Overbay

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

    您好,Caleb,

    感谢您 的建议。

    我将按照你的建议重新设计,如果有任何问题,我将在这里回复你,

    谢谢你