Sunday, September 24, 2017

PCA9540之应用(2-channel I2C multiplexer)

        这是一款来自NXP的很老的芯片了,现在都升级为PCA9640了。是一颗很容易理解的二选一开关,在很多场合都可以应用到这种简易的IIC开关,便于系统的扩展。之所以把这么一颗简单的IIC开关拿出来,只是因为前段时间犯了一个错误导致花费了一些时间,故而记录一下。

        

器件地址

这是器件地址,很好理解,按照上篇讲到的7位地址则为0x70,即111(MSB),000(LSB)。而且这个地址全部是全固定地址,硬件无法改变,从另外一个角度来讲,一个Master下只能接一个这种开关,无法扩展多个。


控制寄存器


很明确,这里就是后三位用于开关的通道选择,由于本器件只有两个通道,所以3bit已经足以达到目的。


状态表

也很清晰,0x00是上电默认状态,此时任何一个通道都没有选通;0x04则选通的为通道0;0x05则选通的为通道1. 其中D3至D7位无需考虑,有用的只有低3位。


写寄存器

        这是写操作,请注意的是这里。这里是直接写控制寄存器,并没有常规理解上的寄存器地址。也就是说,在发送完器件地址,收到响应后直接发送控制寄存器值即可,无需先发送地址。如果一定要说地址偏移量,也可以说成是0.也即offset设置为0.因为此类IIC器件的功能非常简单,并没有太多的内容需要操作,所以并没有分区分块的操作。


读寄存器

        这是读操作。从上图可以看出,也是非常简单,只需要将R/W位改为1即可,也是没有所谓的地址的。

        当初所犯之错误就在这里,想当然的将读写地址设置为0x00。这样在写的时候还好,没有实际影响,但是在读的时候实际是有一个"地址" 的动作,这样实际写入的就是0x00,也就是说将此前已经实际写入的寄存器值(0x04或0x05)又覆盖掉了,覆盖成0x00,故而一个通道都没有打开。


--------
Any feedback, please contact @ support@itestgroup.com

No comments:

Post a Comment