close

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_slave_addr.JPG

I2C_MUX_control_reg.JPG

 

經過這樣的設定後, 就可以直接透過I2C bus, 控制掛在此MUX底下的slave device

但有個地方比較奇怪的是,我們依然是透過一般的I2C語法去控制此slave device而不是還需要

特別將command包裝有關I2C MUX的control register, 這是怎麼辦到的呢?

 

查了一下電路圖

I2C_MUX_block_diagram.JPG

 

一開始提到的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或許有不同的作法, 但至少弄懂一個, 其他的也比較好猜

arrow
arrow
    全站熱搜

    kaogold3 發表在 痞客邦 留言(1) 人氣()