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.

[参考译文] tms320f28069m:C2000Ware 中的 I2C EEPROM 示例代码:example_2806xI2C_EEPROM.c

Guru**** 2604225 points
Other Parts Discussed in Thread: DRV8301, TMS320F28069M, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/669215/tms320f28069m-i2c-eeprom-example-code-from-c2000ware-example_2806xi2c_eeprom-c

器件型号:TMS320F28069M
主题中讨论的其他部件:DRV8301C2000WARE

我已成功地向 DRV8301板添加了 EEPROM、并且可以使用 TMS320F28069M 处理器的 Example_2806xI2C_EEPROM.c 示例代码对 EEPROM 进行写入和读取。 我能够写入1或2个字节、但不能写入更多字节。 这就是问题所在。 我希望能够一次写入最多4个字节。 我在 I2cMsgOut1消息中添加了额外的字节,并将 NumOfBytes 更改为4,和... 没有。 总线发出地址、芯片 ACK、然后在总线上静音。 此外、中断 i2c_int1a_ISR 停止一起关闭。

有什么想法、可能会出什么问题?

谢谢!

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

    您好、Charlie、

    尝试以下例程:

    e2e.ti.com/.../2475.I2C_5F00_Writing_5F00_Reading_5F00_EEPROM.c

    此致、

    Gautam

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

    您好、Gautam、

    非常感谢您的代码示例。 附件是我遇到问题的示例代码。 您能不能看一下它并理解为什么我无法发送/接收超过2个字节?

    非常感谢。

    Charlie

    e2e.ti.com/.../Example_5F00_2806xI2C_5F00_eeprom.c

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

    您是否仍面临此问题? 如果是、请提供一些后续行动、并告诉我您有哪些具体问题。 如果没有、请发布您为解决问题所做的工作。

    您是否使用示波器监控了总线? 您是否看到 ACK 出现了问题?

    谢谢、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mark、您好!
    不、我的问题尚未解决。

    我使用 C2000Ware 中的示例代码与 EEPROM 进行 I2C 通信(Example_2806xI2C_EEPROM.c、在该字符串的前面附加)。 它是我遇到问题的代码、而不是硬件。

    问题是、我只能将代码设置为写入2个字节、并且一次最多可以写入14个字节。 1字节写入有效、2字节写入有效、但3字节和4字节写入无效。 我没有尝试过超过4个字节的数据。

    当设置为3或4时、中断不再关闭。 如果我禁用代码的写入部分、则读取部分工作正常;中断关闭、它从 EEPROM 读取4个字节

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

    Mark、您好!

    您是否有机会查看该代码或与编写该代码的工程师交谈? 非常感谢您的帮助!

    Charlie

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Charlie、很抱歉再次出现延迟。

    编写此软件的人员不再与公司合作。 它是很久以前创建的。

    此模块的最大 FIFO 深度为4字节、而不是14字节。 这可能是一种类型吗?

    似乎您尚未将 #I2C_NUMBYTES 更新为4。 (第83行)。
    如果您更新 了#I2C_NUMBytes、则写入数据中的 for 循环应写入正确的字数。 在 LIN 379中、您好像将 I2CCNT 寄存器设置为4、但只遍历 for 循环(第388行)中的2个字节。 I2C 仍将等待其他数据字、但无法再次加载这些数据字、因为直到最后一个字完成为止无法重新输入 WriteData。

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

    Mark、您好!

    如果我将 I2C_NUMBYTES 设置为4、则中断不再关闭。 这基本上是我所不理解的。

    感谢您关注此问题。

    Charlie

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

    明天(星期五)、我将有时间再次了解这一点。

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

    我今天无法解决这一问题。 我将在星期一进行介绍。

    谢谢、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我怀疑正在发生的情况是、在写入数据函数中、您要将 I2CCNT 寄存器设置为6 (I2C_NUMBYTES+2)、然后尝试向 FIFO 写入6个字节、但由于 FIFO 只够大4个字节、因此额外的数据会丢失。 I2C 只发送4个字节、所以它在发送停止条件(触发中断的停止条件)之前一直等待其余字节(I2CCNT 字节)。

    您需要调整代码、使其不会溢出 TX FIFO。

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

    TX FIFO 是4个字节、它必须保持地址的高字节和低字节、所以只剩下2个字节用于数据?

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

    非常感谢您解决此问题。 我非常感谢大家的大力支持。

    Charlie