工具与软件:
我有问题。
使用 EEPROMProgramNonBlocking ()写入 EEPROM 后、EEPROMStatusGet ()返回0x00000800。
用户指南未解释该值。
头文件"EEPROM.h"也不会定义该值。
我测试了100多个器件、只有一个存在此问题。
是否可能是 CPU 故障?
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.
工具与软件:
我有问题。
使用 EEPROMProgramNonBlocking ()写入 EEPROM 后、EEPROMStatusGet ()返回0x00000800。
用户指南未解释该值。
头文件"EEPROM.h"也不会定义该值。
我测试了100多个器件、只有一个存在此问题。
是否可能是 CPU 故障?
尊敬的 Masataka-San:
读取0x800中未发布的内部数据手册第11位表明状态机的状态无效。 根据位描述、应该使用 EESUPP 寄存器来采取纠正措施。 数据表中有几条关于如何处理 EEPROM 错误情况的注释。
■如果字写入要求将块写入复制缓冲区、那么可能失败或者
在后续操作期间掉电。 控制字机制用于跟踪内容
发生故障时 EEPROM 所处的步骤。 如果未完成、EESUPP 寄存器会进行指示
部分完成。
复位后、在向 EEPROM 写入任何数据之前、软件必须读取 EESUPP 寄存器
并检查是否存在任何可能表示写入或擦除操作的错误情况
当系统因压降而复位时的进度。 PRETRY 或 ERETRY 位为的话
置位后、外设应通过设置然后清除 EEPROM 软件中的 R0位来复位
复位(SREEPROM)寄存器并等待 EEDONE 寄存器中的 WORKING 位清零
然后再次检查 EESUPP 寄存器的错误指示器。 此过程应允许
EEPROM 以便从写入或擦除错误中恢复。 在少数情况下、可以使用 EESUPP 寄存器
执行此操作后继续记录错误、在这种情况下、应重复此复位。 之后
恢复时、应用程序应在初始时重写正在进行编程的数据
发生故障。
8.2.4.2 EEPROM 初始化和配置
在写入任何 EEPROM 寄存器之前、必须通过启用 EEPROM 模块的时钟
EEPROM 运行模式时钟门控控制寄存器(RCGCEEPROM)(见400页)和
必须执行以下初始化步骤:
1.插入延迟(6个周期加上函数调用开销)。
2.查询 EEPROM 完成状态(EEDONE)寄存器中的 WORKING 位、直到其清零为止
EEPROM 已经完成其上电初始化。 当 working=0时、继续
3.读取 EEPROM 支持控制和状态(EESUPP)中的 PRETRY 和 ERETRY 位
非常重要。 如果任一位置位、则返回错误、否则继续。
4.在处使用 EEPROM 软件复位(SREEPROM)寄存器复位 EEPROM 模块
系统控制寄存器空间中的偏移量0x558。
5.插入延迟(6个周期加上函数调用开销)。
6.查询 EEPROM 完成状态(EEDONE)寄存器中的 WORKING 位来确定其时间
清除。 当 working=0时、继续。
7.读取 EESUPP 寄存器中的 PRETRY 和 ERETRY 位。 如果任一位被置位、则返回
一个错误、否则 EEPROM 初始化完成、软件可以将该外设用作
正常。
重要提示:在重置后未能执行这些初始化步骤可能会导致操作不正确
则会在稍后写入 EEPROM 时导致永久数据丢失。
如果 ESUPP 寄存器中的 PRETRY 或 ERETRY 位被置位、则 EEPROM 无法运行
才能恢复它的状态。 如果发生这种情况时电源稳定、则表示致命错误、并且
可能表明 EEPROM 存储器已超过其指定寿命
写入/擦除规范。 如果在这个返回代码时电源电压不稳定
观察到、电压稳定后重新尝试操作可能会清除错误。
除了查看0x800之外、 您是否 在完成 EEPROM 编程时遇到任何问题以及从 EEPROM 进行的后续读取是否成功?