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.

[参考译文] TMS320F28062F:I2C 不发送控制字节

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/590124/tms320f28062f-i2c-not-sending-control-byte

器件型号:TMS320F28062F
主题中讨论的其他器件:controlSUITEMOTORWARE

我正在尝试通过 I2C 使 EEPROM (24AA08)正常工作。 我遇到的问题是、当我通过 I2C 发送数据(写入 I2CDXR 寄存器)时、控制字节(包含从地址和 r/w 位的字节)不会自动发送。 但是、如果我通过 I2CDXR 寄存器(0xA0)手动发送它、我将获得确认信号、并且可以发送我在 I2CCNT 寄存器中设置的字节数量、 根据我写入 I2CMDR (I2C_I2CMDR_STM_BIT | I2C_I2CMDR_TRX_BIT | I2C_I2CMDR_STT_BIT | I2C_I2CMDR_STP_BIT | I2C_I2CMDR_FREE_BIT)的内容、我还会在末尾获得 STOP 信号 因此、除了未发送控制字节之外、基本上所有内容都起作用。

导致此行为的原因是什么? 是否有任何启用控制字节自动传输的设置? 因为根据 Motorware 和 controlSUITE 中的示例、不需要手动发送此字节。

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

    请确保 I2CMDR 中的 FDF 位(位3)未置位。 设置该位会停止自动发送控制字节。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有趣的是、我使用的是24AA128。
    是否确定未发送? 您是否查看过范围?

    我相信您的从器件地址是0x50、而不是0xA0。
    假设您在24AA08 (B0、B1)中的块选择位为0、那么要加载 I2CSAR 的地址为7位= 0x50 (请记住、R/W 位不是地址的一部分)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从机地址为0x50、但当我发送控制字节时、它是0xA0、这正是您描述的原因。 我在第一篇帖子中写下了我发送到 I2CDXR 寄存器的内容、而不是我写入 I2CSAR 的内容。 是的、我查看了范围、这就是我知道它不会被发送的方式。

    此外、我注意到、当我尝试实现随机/顺序读取时、在配置芯片进行写入操作并写入0xA0控制字节和地址后、我不需要在开始读取操作时再次发送控制字节0xA1、因为它会自动发送。 但是、当我开始读取内部指针所在的位置时、这种方法不起作用、仅当我之前写入地址时才起作用。

    不过,当我回到这个问题时,我必须看看亚当·哈恩的建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、它确实是 FDF 位。 谢谢你。