I2C通信总线
NXT的I2C通信总线能力很强大,使无限扩张的输入和输出成为可能。最初由飞利浦公司开发,I2C代表Inter-Integrated 电路。虽然I2C接口的物理位置在NXT输入端口上,但它实际上可以用于输入和输出。
因为I2C数据传输是顺序进行的,所以它只需要使用三根电线。一线用于发送和接收数据(SDA),而其他提供同步时钟信号(SCL)。SDA是第6针,时钟是第5针,也就是蓝色和黄色的NXT电缆。地是第2针或第3针,也就是黑色或红色的NXT电缆。
■注意旧的NXT 固件I2C通信有一些问题,因此,请确保您正在运行1.05以上的固件。
■注意如果您I2C程序出现挂起或崩溃,你需要重启I2C硬件电源,拔出连接线然后重新连接NXT。
I2C通讯
幸运的是,NXT支持详细的底层i2c通信,但您应该了解几个基本点。I2C 总线都有一个主——NXT——和多达127个从设备。然而,每个端口的硬件限制大约只能有八个从。每个从有一个特有的7 位地址。当NXT想要与设备通信时,它将发送这7位地址并加上一位读取控制位。然后从设备将会回复一个一位的应答。下图是具体通讯过程。
PCF8574
PCF8574:此I/O扩展器是最有用的I2C设备之一。它是单个的集成电路,其中包括八个针脚,可以输入或输出。下图所示,在其中只标记了P0 -P7八个I/O引脚。因为其他未标记的引脚在本系列教程中不会被使用。
You use address pins A0, A1, and A2 to generate one of eight possible addresses for the expander. That means you can have eight PCF8574s on the same I2C bus by connecting the address pins either high to VDD or low to VSS. A PCF8574 with all address lines tied to VSS will have the address 40 hexadecimal (0x40) or 64 decimal. There’s an alternate version of the part with an A suffix that has a base address of 70 hexadecimal (0x70) or 112 decimal. Figure 13-3 illustrates how to compute the address for the two devices.
使用地址针脚A0、A1、A2可以修改设备的物理地址。这意味着您可以通过将地址针脚连接到VSS或VDD在相同的I2C总线上连接八个PCF8574芯片。PCF8574所有地址针与VSS相连他的地址为0x40(十六进制)或64(十进制)。还有一个是升级版本PCF8574A 的地址为0x70(十六进制)或112(十进制)。如下图所示。