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.

[参考译文] AM6422:sdk8.6 IIC 写入错误

Guru**** 2774335 points

Other Parts Discussed in Thread: AM6422

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1605784/am6422-sdk8-6-iic-write-error

器件型号: AM6422

您好:

  我们正在使用 SDK 8.6 进行开发、在 FreeRTOS 下、我们编写了一个测试程序、每 10ms 在地址 0xFF00 处写入一次 EEPROM、数据范围为 0 至 100。 然后、它从该地址读回数据以进行验证。 有时、读取的数据会显示为 0、这与写入的数据不一致。 目前、特别是在地址 0xFF00 处发生该误差的概率相对较高。 使用的组件与开发板一致、并且代码直接调用库函数。  

uint16_t tmp1=0、tmp1ak=0、tmpwdata=0x1234;
#define TestAddr 0xff01
uint16_t EEtesti=0;
空 EEtest()

  uint16_t i=0;
  int32_t 状态=正常;
  if (eepromHandle[CONFIG_EEPROM0]、TestAddr、(uint8_t *)&tmp1、2)!= SystemP_Success)
  {
    DebugP_log(“Read error addr =%d\r\n“、TestAddr);
  }
  DebugP_log(“tmp1 =%d\r\n“、tmp1);
  for (eetesti=0;eetesti<100;eetesti++)
  {
    WDG_CPLD();
    STATUS = EEPROM_WRITE (gEepromHandle[CONFIG_EEPROM0]、TestAddr、(const uint8_t*)&eetesti、2);
    if (status != OK)
    {
      DebugP_LOG(“====== 写入错误=%d\r\n“、TestAddr);
    }
    tmp1BAK = 0;
    if (eepromHandle[CONFIG_EEPROM0]、TestAddr、(uint8_t *)&tmp1bak、2)!= SystemP_Success)
    {
      DebugP_log(“Read tmp1bak error addr =%d\r\n“、TestAddr);
    }
    if (eetesti!=tmp1BAK)
    {
      DebugP_log(“write erri =%d、tmp1Bak =%d\r\n“、eetesti、tmp1Bak);
      EEPROM_Read (gEepromHandle[CONFIG_EEPROM0]、TestAddr、(uint8_t *)&tmp1BAK、2);
    }
  }
}

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

    您好、

    您使用的是哪款器件? AM64x-EVM 还是 AM64x-SK?

    这里使用的从器件地址是什么?

    此致、

    Tushar

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

    您好:

       EVM 与地址 0x50 搭配使用、并配备 128K at24cm1 模型、写入地址设置为 0xff00。

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

    您好、

    感谢您提供上述详细信息。 我将尝试在我最后重现这个问题

    请指定您正在使用哪个内核?

    此致、

    Tushar

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

    您好:

       在 FreeRTOS 下、在 R5F0-0 内核上使用 AM6422 SDK 8.6、从器件地址为 0x50、EEPROM 大小为 128KB。

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

    您好:

       SDK8.6 AT24C 系列 EEPROM 的 I2C 接口是否有任何问题、未来是否会对此器件进行任何更改?

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

    您好:

    您能与我们分享您的 example.syscfg 文件吗?

    此致、

    Tushar

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

    e2e.ti.com/.../0412.example.rar

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

    感谢您共享 example.syscfg 文件。 我已经检查了以上,它看起来不错。

    我已经在设置中尝试过相同的方法、它可以正常工作。 我能够读取和写入数据。

    请将以下项目与您的项目进行比较、并确认该项目有效。

    Project - empty_am64x-evm_r5fss0-0_nortos_ti-arm-clang.zip

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

    您好、

       根据我们的配置和代码、大多数读取/写入操作都正常运行。 但偶尔会出现将数据写入地址 0xff00 后读回的错误问题。 我们目前不确定这是由驱动程序中的潜在错误还是硬件问题引起的。 因此、我们想问一下、EEPROM 驱动程序是否有任何后续修改、或者之前是否遇到过类似类型的问题。

      实际上、硬件设计与 EVM 开发板的硬件设计完全相同、但对于我们自己设计的硬件、目前 5 个板中有 3 个会遇到该问题。 我们也不确定地址 0xff00 是否有任何特殊操作。

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

    另一个注意事项:您的末尾的示例程序只执行一次写入。 我提到的现象是间歇性的、不一致。 那么、您是否可能因为执行的操作数量太少而未遇到它?

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

    请确认您的读取大小未超过 0x100。 请参阅下图。

    因此、我们想问一下、以后是否对 EEPROM 驱动程序进行了任何修改、或者以前是否遇到过类似类型的问题。

    没有进行任何修改、我们之前也没有遇到过这一问题。

    此致、

    Tushar

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

    您好、

      感谢您的答复。我们已确认您提供的数据。 写入长度仅为 2 个字节、不会超过指定的大小。

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

    您在应用程序中运行了多少项任务?

    您是否尝试过使用单个任务复制它?

    请提供示例工程、以便可以在 TI EVM 上复制上述行为。

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

    您好、

       感谢您的答复。 我们目前仅运行一个任务、它定期将 2 个字节写入 EEPROM 中的地址 0xff00。 根据我们的测试、问题似乎与元件本身有关。 交换元件后、我们发现该现象与特定元件有关、因此现在应确定此问题的根本原因。

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

    您好:

    感谢您的答复。

    交换组件后、我们发现此现象是特定组件引起的、因此现在应该确定此问题的根本原因。

    这是否意味着您已用其他组件更换了 EEPROM、但问题不会出现?

    如果是这种情况、则问题可能出在通过微芯片提供的 At24CM01 EEPROM 上。 有关 EEPROM 行为、请联系 Microchip 支持团队。

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

    您好、

      是的、您的理解是正确的。

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

    您好、

    指定的专家目前已离职。 请期待收到延迟的回复。

    感谢您的耐心。

    此致、

    Vaibhav

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

    您好、

       我们最近进行了一次发现。 以前、据报告、通过 AM6422 上的 IIC 接口连接的 EEPROM 存在读写错误。 硬件人员卸下了遇到此问题的 AT24C 设备并将其焊接到 STM32F407 硬件设置中。 他们使用模拟 IIC 接口的程序发现读写操作非常稳定。 这种现象表明问题可能不在于器件本身。 驱动程序库中是否可能出现错误? 或者是否可能与硬件设计相关? 硬件设计严格遵循评估板的原理图。 我们希望您能帮助我们分析这一点。

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

    您好、

    感谢您分享详细的见解。

    指定的专家不在办公室、请期待收到延迟的回复。

    此致、

    Vaibhav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此现象表明设备本身可能不存在问题。 驱动程序库中是否可能出现错误?

    如前所述、更换 I2C 器件后、读取/写入操作保持稳定。 这意味着驱动程序本身工作正常。 对我来说、它看起来是硬件设计方面的问题。  

    我正在将您的问题转接到我们的专家以供进一步评论。

    此致、

    Tushar

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

    你好 wanglili 王 ,

    您能否发布与 EEPROM 和 I2C 相关的原理图?

    谢谢您、

    Stan

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

    您好:

      感谢您的答复!  实际上、此部件的原理与 am64evm 开发板上的原理相同。 我会给您发送相应部分的屏幕截图。此外,这种现象不会持续发生。 但是、当 EEPROM 器件出现时、它发生在任何使用 TI 硬件的电路板上、但在基于 STM32 的电路板上不会发生。

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

    您好、Wanglili、

    主题所有者当前不在办公室。

    请预计他的回复会有延迟。 他将会回来,并能够 在明天尽早作出反应。

    感谢您的耐心!

    此致

    Anastas Yordanov

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

    您好、Wanglili、

    我很抱歉迟来的答复。 您是否成功解决了该问题?

    从原理图的角度来看、我有以下评论:

    1. 添加与现有去耦电容器并联的 100nF 去耦电容器
    2. 为 WP 添加下拉电阻。 尽管数据表允许 WP 悬空、但他们还建议改用下拉电阻。
    3. 使用更强的拉电阻、例如 4.7k
    4. 此图上没有 SCL 和 SDA 上拉电阻器。 我想它们位于另一部分。 对于 400kHz 速度、我建议使用 3.3-3.6k

    此致、

    Stan