在TMS320TCI6608上做的开发,需要对一个I2C器件进行读写操作。
对单个寄存器的写操作没有问题,但在读操作时在实现Combined format模式时有些疑虑。
将6608以Master模式对I2C器件的单个寄存器进行读操作时,要先对器件进行写操作,再读,顺序如下:
依次发送Device Address、Register Address,在收到第二个Slave ACK后发送Repeated Start bit,再重新发送一次Device Address,接下来作为Slave的该I2C器件会将Register Data送出。Device Address是7-bit器件地址加上R/W状态位,Register Address和Register Data均为8-bit。
现在的问题在于:
1、第一个Device Address的bit0为0,可以将6608配置为Master-Transmitter进行写操作,那么是不是要在发送Repeated Start bit时,把6608配置为Master-Receiver模式以发送第二个Device Address,因为它的bit0为1,也就是读。这个模式转换的过程,只是简单地修改ICMDR寄存器的TRX位就可以了吗?需不需要进行别的操作?
2、sprugv3.pdf的2-9页上指出Master-receiver mode:When you are using any of the 7-bit/10-bit addressing formats, the I2C module enters its master-receiver mode after transmitting the slave address and R/W = 1.
好的,那问题就来了,既然是进入到master-receiver mode,也就是说它原先应该是Master-transmitter mode,那既然写操作是在Master-transmitter mode下进行的,R/W = 0为写,那么如何能够在Master-transmitter mode下使R/W = 1来进入到master-receiver mode实现读操作呢?
附图是对该芯片的读寄存器流程,这里虽然是连续获取的寄存器值,但只需要第一个8-bit的Register Data就可以了:
谢谢!
Andy Yin1:
关于I2C的配置使用请参考如下例子:http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/5847.aspx