大多数 UCD3138系列 EVM 代码支持 store default all 和 restore default all 命令。 此帖子介绍了正确和错误的使用方法、以及如何使其更容易被滥用。
store default all 命令使用数据闪存来存储大量系统参数、包括增益设置、系统校准和滤波器参数。
有两个闪存块可交替使用。
一个闪存块存储当前数据、另一个闪存块保持被擦除。
当在 PMBus 上接收到一个 store default all 命令时、数据被写入数据闪存块。
这在软件中断中完成、通常需要大约5毫秒。 或更低。 在此期间、中断被禁用、因此建议不要在电源运行时执行此操作。
之后、另一个数据闪存块被擦除。 对于每个擦除的页、此擦除至少需要20ms。
一些 EVM 代码需要擦除的页数多于其他代码。 在某些情况下、擦除可能需要300毫秒才能完成。
如果在擦除过程进行期间运行另一个 store default all 命令、则不会执行。 该程序会检查正在进行的擦除并仅返回。
如果擦除过程因断电而中断、固件将检测到状态并在下一次断电时重新启动。
请注意、在擦除数据闪存时、任何写入程序闪存校验和的尝试都将失败。 这是因为闪存逻辑一次只允许在一个闪存块上运行。 因此、当数据闪存被擦除时、程序闪存写入将被忽略。
如果这不是所需的行为、您可以使命令返回到 ROM 模式检查以完成擦除。 如果擦除未完成、则返回 ROM 模式可以设置新的标志变量、而不是尝试写入 lash。 然后、当数据闪存擦除完成时、您还需要添加代码来检查此标志、然后清除校验和。
通常、最后一种情况不会发生在器件操作中、仅发生在测试中。 通常情况下、在电路板关闭之前、在电路板测试期间会发生默认的全部存储。 在擦除之前、甚至写入完成之前、电路板很可能会被关闭。 显然、至少在写入数据闪存完成之前不应关闭电源。 理想情况下、还应增加擦除完成的时间。