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

tms570 i2c中断问题

请教下各位大神,公司需要用I2C操作片外eeprom,板子是tms570 1227

1.stop condition的中断和接收发送中断分不清   stop中断具体有什么作用  

在我的理解中,如果是发送 每次设定了data count,当那个多数据发送完毕后,系统自动产生一个stop  condition。那此时stop condition的产生时候可以认为发送完成了呢?

2. 如果我使用发送和接收中断  我还需要进行 i2cIsBusBusy(i2cREG1)  i2cIsStopDetected(i2cREG1)   i2cIsMasterReady(i2cREG1)   这三个操作吗,是否可以认为进入发送或者接收中断后 bus处于free  master也ready了  stopcondition也被detect到了???

3. 看技术手册  有个地方描述互相冲突 :(1)Generated when the transmitted data has been copied from the data transmit
register (I2CDXR) into the transmit-shift register (I2CXSR)    page1768

(2)A transmit interrupt is generated just after the START condition in master transmitter mode   page1768

一个说发送中断是 数据从DXR转移到了XSR后产生,一个是START condition之后产生。   到底怎么理解?

如果我在程序里面是 这样

/* Transmit Start Condition */
i2cSetStart(i2cREG1);
/* Send the Word Address */
i2cSendByte(i2cREG1, Slave_Word_address);
/* Tranmit DATA_COUNT number of data in Polling mode */
i2cSend(i2cREG1, DATA_COUNT, TX_Data_Master);

岂不是 第一句话i2cSetStart(i2cREG1);  就要进入了发送中断了??

问题比较多  感谢大神的解答 谢谢

gaoyang9992006:

http://www.ti.com.cn/cn/lit/ug/swru367c/swru367c.pdf

7.2.1.1 START and STOP Conditions

———————

发送完成是会产生一个STOP CONDITIONS,同时也应该是主机发送完成,因此也会产生一个发送完成的中断标志。

gaoyang9992006:

第二个问题, 你的想法是正确的,如果处于STOP状态,那就是没有数据在发送了,如果处于START,那就是应该在发送中。

gaoyang9992006:

应该是两个原因均可产生那个中断吧。应该不冲突,如果你启用了那个中断,才可以,如果没有启用,也就是只在那个标志位进行置位而已。

cc liu1:

回复 gaoyang9992006:

感谢解答

还有一些问题,

1、slave address是自动发出去的吗? 如果不是发送函数是哪一个?

还是自己用sendbyte 函数发?  假如我的slave add是0x1234,现在是transmitter,如果自己要将0x1234和方向用sendbyte,那操作寄存器又有什么意义呢?

2、 start condition bit 和 stop condition bit是自动发的(set对应的寄存器之后)? 当自己是receiver时 ,acknowledge bit也是自动发送的吧?

感谢解答

cc liu1:

回复 gaoyang9992006:

感谢解答

还有一些问题,

1、slave address是自动发出去的吗? 如果不是发送函数是哪一个?

还是自己用sendbyte 函数发?  假如我的slave add是0x1234,现在是transmitter,如果自己要将0x1234和方向用sendbyte,那操作寄存器又有什么意义呢?

2、 start condition bit 和 stop condition bit是自动发的(set对应的寄存器之后)? 当自己是receiver时 ,acknowledge bit也是自动发送的吧?

感谢解答

赞(0)
未经允许不得转载:TI中文支持网 » tms570 i2c中断问题
分享到: 更多 (0)