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.

[参考译文] MSP430FR2476:信息段中的闪存(在0x1800处):无法再写入闪存

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1369129/msp430fr2476-flash-in-the-information-section-at-0x1800-can-no-longer-write-to-flash

器件型号:MSP430FR2476

工具与软件:

你好。  在我们写入到闪存(0x1800)信息段的512字节长度的应用程序中、一些相当新的器件无法成功写入。  是否可能损坏此部分、或以某种方式将其锁定以使其无法访问?

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

    尊敬的 Jeff:

    在更新信息存储器中的值之前/之后、您是否禁用/启用 FRAMWrite 保护?

    示例:


    SYSCTL_enableFRAMWrite (SYSCTL_FRAMWRITEPROTECTION_DATA);

    //在此将新值写入信息存储器

    SYSCTL_protectFRAMWrite (SYSCTL_FRAMWRITEPROTECTION_DATA);

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

    很可能。  没有找到这些例程、但我正在这样做:

    SYSCFG0 = FRWPPW | PFWP;//写入密码 A5以解锁 FRAM 保护寄存器


    //启用程序写保护
    用于(I = 0;I < size;I++)
    {
       *FRAM_WRITE_PTR++= buf[i];


    //写入密码 A5以解锁 FRAM 保护寄存器
    //启用程序写保护
    //启用数据写保护

    SYSCFG0 = FRWPPW | DFWP | PFWP;

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

    尊敬的 Jeff:

    抱歉。  这些是执行与您正在执行的操作相同的 MSP430 driverlib 函数。

    但是、查看您的代码、看起来您通过设置 PFWP = 1、写入存储器(不确定位置)来启用程序写保护、然后最后一条指令、您可以同时启用程序和信息部分写保护。

    请尝试以下操作:

    	uint8_t state; 
    	
    	/* Retain FRWPOA bits */
    	state = SYSCFG0 & 0x00FF;
    
        /* Disable write protect for INFO section */
    	SYSCFG0 = FRWPPW | (state & ~DFWP);
    
        /* Write your data */
    	myINFOdata = 0xaa55;
    
        /* Enable write protect for INFO section */
        SYSCFG0 = FRWPPW | (state | DFWP);