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.

[参考译文] TM4C1290NCPDT:EEPROMStatusGet ()返回值

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1373763/tm4c1290ncpdt-eepromstatusget-return-value

器件型号:TM4C1290NCPDT

工具与软件:

我有问题。
使用 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 进行的后续读取是否成功?

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

    感谢您的答复。

    我正在使用 TivaWare 外设驱动程序库进行编程。

    调用 EEPROMInit ()时返回"EEPROM_INIT_ERROR"。
    EESUPP 寄存器中的 PRETRY 或 ERETRY 位被置位。

    重置 CPU 或关机后再开机未解决问题。

    电源电压稳定。

    可能是 EEPROM 模块故障。

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

    尊敬的 Masataka-San:

     根据您所拥有的器件版本、有一些已知的勘误表可能适用于您。 您还记得吗?是否在进行 EEPROM 操作的过程中断开了器件的电源或对其应用了复位? 请在下面找到它们并相应地应用权变措施。  

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

    感谢你的评分

    程序首次运行时、会将初始值写入​​EEPROM。
    也许在​​写入这些初始值时、功率消失了。

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

    尊敬的 Masataka:

     如果您怀疑电源故障或在 EEPROM 操作过程中断电、则很可能是您看到的问题的原因。 请确保在 EEPROM 操作期间不会发生勘误表中所述的事件(例如任何类型的复位事件断电)。