主题中讨论的其他器件:HALCOGEN
您好!
我对使用 I2C 通信(代码)有疑问。
我在查看示例、并尝试编写自己的代码。
我的从器件地址为0x29、在我能够读取之前、我需要设置寄存器:atime、WTIME、ENABLE、CONTROL、CONFIG of the sensor (TCS34725)。
因此、我已经完成了以下操作:
i2cSetSlaveAdd (i2cREG1、0x29);
i2cSetDirection (i2cREG1、I2C_transmitter);
对于(Repeat = 0;Repeat < 2;+Repeat){
i2cSetCount (i2cREG1、2);
i2cSetMode (i2cREG1、I2C_MASTER);
i2cSetStop (i2cREG1);
i2cSetStart (i2cREG1);
i2cSend (i2cREG1、2、transmit、w_atime);
while (i2cIsBusBusy (i2cREG1))
;
while (!i2cIsStopDetected (i2cREG1))(while (!i2cIsStopDetected (i2cREG1))
;
i2cClearSCD (i2cREG1);
对于(延迟= 0;延迟< 210;+延迟)
;
}
这只是一个片段。 第一次与 atime reg 通信时、接下来是循环、我将与 WTIME 通信、以此类推。
在此代码中,我发送 了 Transmit _w_atime [2] = { 0x01, 0xC0 },它们是 atime 寄存器的地址,第二个是我要在 atime 寄存器中写入的内容(这是正确的方法吗?)
我还有以下问题:
- 是否有更快的方法一次性发送数据? 同时与所有五个寄存器进行通信并向它们中的每个寄存器发送适当的数据?
- 我们为什么要使用 for (REPEAT = 0;REPEAT < 2;+REPEAT)循环?
- 当我想从寄存器中读取数据时,如何在 i2cReceive() 函数中指定要从中读取的寄存器,以及在哪个变量中存储我的值?
谢谢!
Marc