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