Embedded MSP430F4250:EEPROM读取错误数据

Embedded MSP430F4250:EEPROM读取错误数据,embedded,msp430,eeprom,Embedded,Msp430,Eeprom,我们一直在使用MSP430f4250的温度数据记录产品,这是成功的市场在过去15年。它与STM 24C64RP_K配合得很好。最近,我们将STM24C64RP_K(旧)更改为STM24C64RP_T(新),并观察到MSP错误地从EEPROM读取数据。在乞讨会上,我们认为问题是由于EEPROM造成的,因为这是唯一发生的变化。我们与ST进行了交谈,再次检查了新的EEPROM是否工作正常,我们在内部进行了测试,并确保ST进行了审查。我们有点困惑,为什么MSP从新的EEPROM错误地读取数据,而它在过去

我们一直在使用MSP430f4250的温度数据记录产品,这是成功的市场在过去15年。它与STM 24C64RP_K配合得很好。最近,我们将STM24C64RP_K(旧)更改为STM24C64RP_T(新),并观察到MSP错误地从EEPROM读取数据。在乞讨会上,我们认为问题是由于EEPROM造成的,因为这是唯一发生的变化。我们与ST进行了交谈,再次检查了新的EEPROM是否工作正常,我们在内部进行了测试,并确保ST进行了审查。我们有点困惑,为什么MSP从新的EEPROM错误地读取数据,而它在过去15年中从旧的EEPROM正确地读取数据。我们使用的新EEPROM的电路和固件与旧EEPROM相同。我们观察到的一件清楚的事情是,写入周期工作正常,而读取周期工作不正常。任何解决此问题的建议


注:MSP430f4250是使用率很高的闪存:89%和RAM 76%(只剩下0.1KB)。我们怀疑内存溢出发生了。
STM24C64RP_T(新)研究报告:https://1drv.ms/b/s!ArCbXDYx3yjAgQ_7dKTv5eoTe4Wx?e=nIExgQ
代码:https://1drv.ms/t/s!ARCBXDYX3YJAGRDGCSP2YGU6OV?e=yrkJWa
CKT:https://1drv.ms/b/s!ArCbXDYx3yjAgRHEtZEFOuZ1jOaq?e=UM1pS0

详细报告:https://1drv.ms/b/s!ArCbXDYx3yjAgRv0BxxOXU13ORfd?e=x5Cukj在我开发100行代码的过程中,我在EEPROM状态下发现了一个bug,从set_到_读取状态再到stop状态,并且没有获得任何数据。在评论了停止条件之后,事情似乎起了作用

所以实际上我的问题解决了

但仍然有一个问题,它是如何与EEPROM类型“K”而不是与EEPROM类型“T”一起工作的

把所有的事情都放在一边,我想对所有在路上帮助我们的人表示衷心的感谢。每一点都开拓了不同的领域,这对我个人来说是一次伟大的学习


现在,我内心的问题是,即使在错误的EEPROM状态下,EEPROM类型“K”(旧)如何能够容忍工作,而新的EEPROM类型“T”(新)对这种EEPROM状态非常敏感。

我完全测试了EEPROM。我已经改进了I2C启动/停止/TxACK的函数,最后一段代码没有NACK的实践,所以我现在介绍了它。当我只使用EEPROM(T-chip/NEW)和MSP430F4250进行读写时,一切正常。但是仍然使用旧代码,没有任何改变。我们正在缩小MSP覆盖其RAM的范围,但我不确定。我已经确保EEPROM工作正常,通讯正常。数据写入工作正常。更准确地说:如果您看到名为“启动记录器”的代码,其中MSP从EEPROM读取设置字节0x38(0011 1000,根据设置字节,如果0将记录器作为C启动,如果1将记录器作为F启动,则MSB负责C/F),因此在这种情况下记录器应以C启动,但它是从F.crossworksformsp430用于编译代码开始的。MSP在调试/发布模型上运行时的EEPROM读取行为不同。在版本中,对字节的读取也被错误地解释,而在调试中,所有一个字节的读取都被正确地解释。但当涉及到大数据读取时,实际场景再次开始。(如果读取小于500字节,则读取被错误解释,如果读取大于500字节,则所有数据都被正确读取。实际上,这一点是对写入工作的验证。(正确存储数据)这可能是一个电气问题,在这种情况下,该问题与本主题无关。如果是编程问题,请创建一个显示如何从EEPROM读取字节的最小程序,并将其包含在问题中。(要编辑,请单击“编辑”。)