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.

[参考译文] TMS320F28035:I2C EEPROM 示例代码

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/689948/tms320f28035-i2c-eeprom-sample-code

器件型号:TMS320F28035

朋友们、您好!

我正在使用 I2C EEPROM (AT24C04)、因为我已经从 control-Suit 导入了示例代码。

仅当我写入2或4字节数据并再次从 EEPROM 读回时、示例代码才会正常工作、

但是、当我更改以下内容时;

#define I2C_MAX_buffer_size    6//2

#define I2C_NUMBYTES            8//4

具有 6字节数据的 MsgBuffer [ I2C_NUMBYTES ]

无法执行对 EEPROM 地址寄存器的读取。  

供参考:我在观察窗口中观察到未生成寄存器就绪访问中断标志、我没有修改示例代码、除了上面提到的2行和6字节的缓冲区

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

    中国

    F28035 I2C 的最大 FIFO 大小仅为4字深。 如果要向 EEPROM 发送额外的数据、然后将其读回、则需要操作 I2CA_Writedata 函数以正确写入大于 FIFO 深度的字数。 一种方法是在将下一个字写入 FIFO 之前添加一个对 TX FIFO 状态的检查、以确保它有空间。 需要对接收端进行类似的更改。

    此致、

    标记

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

    Mark、您好!

    感谢您的回复。  

    是的、我已经在 I2CA_Writedata 和 ReadData 函数中进行了如下更改:

    在 I2CA_WriteData 函数中;  

    while (I2caRegs.I2CSTR.bit.XRDY = 0){};//在发送前添加

    类似地、 I2CA_ReadData 函数是相反的;  

    while (I2caRegs.I2CSTR.bit.XRDY = 0){};//针对地址设置部分  

    是否有任何用于连续读取寄存器的示例代码?

    除了 control-Suit 提供的 TI 样片之外、是否还有其他样片?

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

    这些都是我们当前拥有的 I2C 示例代码。

    您需要编写某种方法来检查传输的当前状态以及待传输的字数。 即、写入前两个字节、然后等待、直到有空间将额外的数据写入 FIFO 以继续传输。 该示例是一个非常简单的状态机。 持续传输步骤可能需要另一种状态?

    此致、
    标记