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.

[参考译文] PGA450-Q1:循环通电时擦除 EEPROM

Guru**** 2611705 points
Other Parts Discussed in Thread: PGA450-Q1

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/670541/pga450-q1-eeprom-wiped-on-power-cycling

器件型号:PGA450-Q1

对此可能有影响的人员、

在我们的解决方案中、我们在 pga450中遇到了一些有关 EEPROM 保持的问题。 在下电上电后、pga450似乎擦除 EEPROM 值[11:30]的一定次数且为空;防止将 EEPROM 配置为配置执行任何进一步的测量操作。 看起来模块的标称行为是开启的、接收 UART 命令以进行测量并返回正确的值;直到在一个看似随机的功率周期数之后、EEPROM[11:30]为0x00。 我们使用自定义算法来计算 pga450使用的阈值、但似乎没有任何立即明显的存储器溢出源、我们不会写入 EEPROM、也不会在8051W 源代码中使用任何函数。 请告诉我过去是否出现过类似问题、是否存在现有解决方案。 感谢您的时间和支持、如果您认为项目源代码可以帮助您确定问题源代码、我将愿意在私人对话中分享该项目源代码。

此致
Armon Chojnacki

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

    我们立即认为、如果这些值被部分取消、EEPROM 就会被削弱/未充分编程。

    1) 1)有多少器件发生了此故障?
    2) 2)受影响的 EEPROM 值是否始终重置为‘0x00’,或者某些位是否随机保留其值?
    3) 3)您对 EEPROM 进行编程的分步详细过程或代码是什么?

    如 PGA450-Q1数据表第7.3.15.3.2节中所述、通过8051W 和 SPI 对 EEPROM 进行编程、步骤3要求用户等待至少70ms、以便 EEPROM 存储器在内部完全应用。 EE 程序例程是否可能违反此计时要求,并在70ms 到期之前通过与器件通信(非 EE_STATUS 轮询)中断器件的内部 EEPROM 编程?
    下面是数据表中描述所需例程的部分片段:
    7.3.15.3.2通过8051W 和 SPI 对 EEPROM 进行编程
    以下是 EEPROM 存储器编程过程:
    将数据写入 EEPROM 缓存–使用8051W MOVX 汇编指令将数据放置在外部存储器地址0x0400至0x041F 中。
    2.向 EE_CTRL 寄存器中的 WRITE 位写入1。
    3.持续轮询 EE_CTRL 寄存器中的 EE_STATUS 位以了解编程状态。 EEPROM 编程需要70ms 才能完成。

    通常、对于器件 EEPROM 保留故障、单个单元格或行将变为零、但不会成为 EEPROM 存储器空间的全部或大部分。

    器件复位是否可能会强制提前寄存器清零、然后再将其烧写/编程到 EEPROM 存储器空间?
    在对 EEPROM 进行编程以检查 EEPROM 值是否被真正保留后、您的批量编程例程是否涉及器件的完全断电、等待和加电? 最好使用不进行编程的程序来执行此步骤、以排除无意编程问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Akeem:

    最近、我们的制造部将我们的100块电路板发送给我们进行内部现场试验、其中我们可能有20块电路板遇到了这个问题。 这个问题似乎是零星的、但是我通过以~1000倍的比例对 PGA450进行功率循环来重现条件的大部分结果。 这是我们将电路板上的 PGA450视为标称方式、因为我们将 MCU 用于大多数逻辑/控制、并且考虑到我们将电池用作电源、我们希望降低器件的总电流消耗。
    这些值似乎始终设置为0x00、并且始终是子集 EEPROM[11:30]、在触发突发之前访问(只读)、以获取带通滤波器的 ESFR 配置值、如 TI 在 PGA450上提供的示例固件(命令5 ()中所示。  
    对于编程、器件将加载自定义固件、该固件可将 PGA450的功率保持在高电平、以便能够执行编程。 自定义 SPI 电缆从 TI-GER 板连接到被测器件(根据数据表 sldU019b)、并加载 GUI。 PGA450被置于微复位模式、EEPROM 值按照制造商(0xAA)提供的值进行验证、并调用一个包含系统配置设置的网格;最后对 EEPROM 进行编程。 PGA450被置于微激活模式、SPI 电缆被移除、然后断电。 如果需要 OTP 编程、将在 EEPROM 闪存之前执行 OTP 编程、并且在编程之前应用 VDD-VOTP 跳线、并在将 PGA450置于微激活模式之前移除该跳线。

    任何可能用于写入 EEPROM 的代码都已从我们的8051W 固件中删除、但我们仍然看到相同的行为、 我曾认为、由于我们未能满足 PGA450数据表中规定的前提条件1V/ms 下降时间、我们可能会面临代码执行错误的问题、 但是、固件中不再有任何函数允许在堆栈指针溢出时写入 EEPROM。 如果您认为可以帮助评估我们面临的问题、我愿意分享原理图和固件。

    此致
    Armon Chojnacki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Armon:
    根据您的描述、您的编程流程看起来是正确的。
    对 EEPROM 进行初始编程后、器件断电后、是否等待、然后再次通电以检查 EEPROM 是否在下电上电后已保留?

    如果您想向我发送原理图和编程代码、我可以查看它们以确保没有违规行为。 如果您不想在 E2E 上公开这些文件、可以将它们作为附件发送到私人消息中。