TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335 的I2C 模块的问题?

1、ARDY位是做什么用的?

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

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

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

Rayna Wang:

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

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

e2e.ti.com/…/674494

1、ARDY位是做什么用的?

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

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

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

mangui zhang:不使用fifo fifo的相关标志就不要关心和判断。需要启动发送 等待ACK按时序一步一步走 耗用CPU资源较多。

1、ARDY位是做什么用的?

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

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

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

user1792825:

我用的是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判断一次。

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

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335 的I2C 模块的问题?
分享到: 更多 (0)