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.

[参考译文] MSP430F4250:EEPROM 返回前500字节的垃圾值

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/946101/msp430f4250-eeprom-return-garbage-value-for-first-500bytes

器件型号:MSP430F4250

您好!

这是一个20年前设计的器件问题。

 

简介:

  • MSP430F4250与 M24C64 (EEPROM 至 I2C)相连、用于记录每6秒2字节的日期。 15年来,这一工作没有任何问题。
  • 最近 、M24C64进行了一些工艺技术更改、将其称为 CMOSF8H+(旧处理技术为 CMOSF8H)。  
  • 因此旧的 EEPROM 是 M24C64-(批处理_否) K、它运行良好、而新的 EEPROM M24C64-(批处理_否) T 导致了问题。

问题定义:

  • 使用新的 EEPROM、当我读取存储的样本(字节)时、当它小于250个样本(500字节)时、我将读取所有样本(字节)的垃圾/错误值。
  • 一旦存储的样本大于250个样本(500字节)、并且当我读取它们时、我能够以正确的值读取所有样本(字节)。

观察结果:

  • 我已经查看了代码和 Ckt,找不到任何错误,因为它在过去15年里与旧 的 M24C64-(Batch _No)K 一起工作正常 即使使用 M24C64-(Batch _No) T、如果存储的样本超过250 (500字节)、我也没有问题。

 

问题:

  • 当存储的样本小于250 (500字节)时、为什么我读取样本的垃圾/错误值
  • 在250个样本(500字节)后、假设存储的样本超过251 (501字节)、我可以正确读取所有251个样本。

有人可以帮助我缩小这个问题的范围吗?

 

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

    您是否有该器件两个变体的数据表? 我看到的是"T"型、虽然它很旧(NRND)、但我根本看不到"K"型。

    我的第一个问题是页面大小(样本大小3)、但对于所有页面大小似乎都是相同的。  

    我的第二个问题是时间。 我注意到、例如、较旧的"R"型号的页面写入时间为5ms、而较新的"A"型号的页面写入时间为4ms。 较新的器件往往比旧器件更快、这通常会改善(隐藏)竞争。 但是、可以编写(意外)依赖于速度较慢的器件的代码。

    您如何检查写入完成? 此外、阈值是否恰好/始终为500、还是仅"大约为500的某个位置?

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

    尊敬的 Mc:

    感谢您的响应、 添加了 T 数据表链接。 我无法找到 K 的数据表、我正在尝试。

    第一:我相信我们是按字节而不是按页写入。

    第二步: EEPROM 代码 链接 

    第三步:我已经检查过它多次、恰好在250个样本(500字节)后、我能够正确读取所有样本。

    谢谢你

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

    您是否与 EEPROM 制造商联系过?

    这些是生产 EEPROM 还是预发布样片?

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

    是的、我们已经和他们一起欺骗了。 看了之后、他们看不到芯片功能有什么问题。

    它是一个生产芯片。 市场上提供。

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

    然后,您需要得到一个示波器或逻辑分析器,并仔细查看信号接口*非常*,同时密切注意数据表。 我想您对数据的读取速度略快。

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

    您的链接似乎无法正常工作。 是否可以附加这些文件?

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

    如果是500字节后的情况、它可以正常工作。 这再次令人困惑

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

    很抱歉、附件无法正常工作。 如果您无法访问、请尝试以下链接

    数据表:  

    代码:  

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

    https://1drv.ms/b/s!ArCbXDYx3yjAgRH2BOXkCkPkswkS ( CKT)

    https://1drv.ms/t/s!ArCbXDYx3yjAgRDGcSp2i2ygU6Ov (代码)

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

    这就是为什么我认为你正处于边缘位置。

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

    为了确保我了解您的症状:

    1) 1)如果您从地址0开始写入248个样本(496字节)、然后将它们全部读回、则会得到不正确的值。 (顺便说一下、是否有任何"不正确"的模式?)

    2) 2)如果随后从地址496开始再写入2个样本(再写入4个字节)、然后将它们全部读回、您将获得(全部)正确的值。

    我是否正确描述了这一点?  

    即使只写入几个字节、页面边界也很重要。  

    此外、校验和位于何处?

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

    是的、您是其中一个要点。

    1和2都是正确的。

    校验和为 校验和= 0xBC

    数据从 EEPROM 读取、并在 Tx 之前与校验和进行异或。

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

    我认为这两个规格之间没有太大差异。 他们缩短了毛刺滤波器,这样旧器件本来可以忽略总线上的一些小错误,现在却不是这样了--这确实是一个长射。

    您似乎也不会检查时钟扩展;数据表中并未说明它执行时钟扩展(但并未说明它不执行)。

    此时的一个标准实验将减缓总线速度--可能会向_NOP()宏添加一个或多个 NOP。 此外、正如 Keith 提到的、对于这种诊断、范围很有用。

    症状似乎表明是读取失败,而不是写入失败。 您是读取突发中的所有字节、还是一次读取一个字节?

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

    写操作干净、良好、延迟10ms、读操作有问题。  

    如果我遇到所有存储位的读取错误、添加几个_NOP、确保在某种意义上、即使是10ms 的延迟也可以、因为速度对我来说不是一个要求苛刻的因素。

    这个问题再次出现了代码/ckt/器件、它在线路下运行15年、现在在读取前500个字节时出现错误..... 哈哈

    我睡不了几次哈哈哈……

    感谢 MCK、我将尝试在读取周期中添加一些延迟/NOP、并使用示波器对其进行测试。  

    当有人发现一些错误时、请告诉我。

    愉快的周末!