I2C MUX其實跟一般的I2C device一樣
會有特殊的Slave address來定址這個MUX
不同的是他還會多出一個control register,
來指定掛在MUX底下的各個slave device(以channel分)
以PCA9544這顆I2C MUX IC來說
一開始CPU(或micro-controller)透過I2C bus的兩條線(SDA & SDL)傳送slave address
此時R/W bit為write, 因為要接著寫入control register作slave channel selection
其格式如下
經過這樣的設定後, 就可以直接透過I2C bus, 控制掛在此MUX底下的slave device
但有個地方比較奇怪的是,我們依然是透過一般的I2C語法去控制此slave device而不是還需要
特別將command包裝有關I2C MUX的control register, 這是怎麼辦到的呢?
查了一下電路圖
一開始提到的control register的I2C指令透過I2C-BUS-CONTROL單元之後,
輸出成為SWITCH CONTROL LOGIC的選擇
這個選擇導致CPU的SCA/SCL就直接被short到slave channel上的SCX/SDX
所以透過PCA9544的特殊command就能夠達到transparent的將SDA/SCL直接導向slave address.
這真是太神奇了, 傑克
終於一解我心中的疑惑
雖然不同I2C MUX或許有不同的作法, 但至少弄懂一個, 其他的也比較好猜
