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.

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);  就要进入了发送中断了??


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

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

    7.2.1.1 START and STOP Conditions

    ---------------------

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

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

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

  • 感谢解答

    还有一些问题,

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

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

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

    感谢解答

  • 感谢解答

    还有一些问题,

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

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

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

    感谢解答