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.

TMS320F28335 的I2C 模块的问题?

Other Parts Discussed in Thread: TMS320F28075

1、ARDY位是做什么用的?

2、不使用FIFO的I2C通讯中,I2CCNT位有用吗?

3、不使用FIFO的I2C通讯中,能否按照先发start +SAR  判断是否接收到ACK,再发数据 判断数据是否发送的完成 XRDY==1?的方式操作?

 试了一旦STT=1,NACK=1、ARDY=1、BB=1 波特率设置的400KHZ   ,程序实现不了,有无大牛使用此种方式实现的?

  • 对于TMS320F2833x 的I2C模块寄存器配置请参考http://www.ti.com/lit/ug/sprug03b/sprug03b.pdf

    下面链接是  基于TMS320F28075芯片的I2C 不使用FIFO的问题讨论,希望对你的问题有所帮助,谢谢!

    e2e.ti.com/.../674494

  • 不使用fifo fifo的相关标志就不要关心和判断。需要启动发送 等待ACK 按时序一步一步走 耗用CPU资源较多。
  • 我用的是F28035,跟你的类似,基本原理一样。

    1.不知道,没用过,但是用到了XRDY,做主机发送的时候,需要这位。

    2.我没使用FIFO,也没用I2CCNT,实现了。

    3.我的大概程序是这么的

    I2caRegs.I2CSAR = I2C_SLAVE_ADDR; //Set slave address
    I2caRegs.I2CCNT = NumBytes + 1; //Set count to NumBytes characters plus 1 address bytes
    I2caRegs.I2CDXR = Word_Address; //Send eeprom low address

    I2caRegs.I2CMDR.bit.TRX = 1; //Set to Transmit mode
    I2caRegs.I2CMDR.bit.MST = 1; //Set to Master mode
    I2caRegs.I2CMDR.bit.FREE = 1; //Run in FREE mode
    I2caRegs.I2CMDR.bit.STP = 1; //Stop when internal counter becomes 0
    I2caRegs.I2CMDR.bit.STT = 1; //Send the start bit, transmission will follow

    然后判断XRDY,发一个byte判断一次。

    这只是我的实现方式,你可以再找找,我记得网上有的,我也是找的别人的资料改的。