主题中讨论的其他器件:UCD3138128、 UCD3138、 UCD3138064、 UCD3138064A
我看了之后发现修复方法非常明显。 在"零输出完整性"字中、您需要在 下面添加两行粗体。 我添加了它们、它现在起作用了。
我有一个在对校验和进行编程之前我始终建议使用的序列、该代码对您来说是新的或新的:
-
使用器件 GUI
-
无需对校验和进行编程即可下载
-
返回 GUI 的主屏幕
-
单击设备 ID
-
单击 Command Program 跳转至 ROM
-
单击校验和选项卡
-
单击验证
-
如果校验和全部为零、程序将清除校验和、执行重新创建以将校验和放入是安全的
-
如果校验和是所有 FFs、则程序不会清除校验和、这是不安全的。
-
如果在步骤5中程序不能进入 ROM,则可能不安全,但校验和可能会被清除,设备也不会被重置。 您可以尝试重置按钮或断电、然后再次验证校验和。
-
这适用于典型情况。 如果您的校验和不是特定器件的标准点、例如引导闪存或意外块或其他内容、则必须使用存储器窥视来确认其已清零。
void zero_out_integration_word (void)
{
DecRegs.FLASHILOCK.ALL = 0x42DC157E;//将密钥写入编程闪存互锁寄存器
DecRegs.MFBALR1.ALL = MFBALRX_BYTE0_BLOCK_SIZE_32K;//启用程序闪存写入
program_flash_integration_word = 0;
DecRegs.MFBALR1.ALL = MFBALRX_BYTE0_BLOCK_SIZE_32K +//将程序闪存扩展为4倍实际大小
MFBALRX_BYTE0_RONLY;
UCD3138128
while (DecRegs.PFLASHCTRL_0.bit.Busy!= 0)
UCD3138A64
while (DecRegs.PFLASHCTRL_0.bit.Busy!= 0)
#Elif UCD3138
while (DecRegs.PFLASHCTRL.bit.BUSY!= 0)
UCD3138A
while (DecRegs.PFLASHCTRL.bit.BUSY!= 0)
UCD3138064
while (DecRegs.PFLASHCTL1.bit.BUSY!= 0)
UCD3138064A
while (DecRegs.PFLASHCTL1.bit.BUSY!= 0)
#endif