Ultra96のI2C Mux(TCA9548APWR)へのアクセス方法

Ultra96にはPSのI2CからTI社のTCA9548APWRというI2C Muxを経由して、7つのI2Cバスに分岐する。

せっかくFPGAなんだから、PLのピンに接続しておけばいいのに、どうして、こういう風に部品を増やすかな?

ここからはデバッグのための手法です。

DeviceTreeにTCA9548APWRの定義が行われているなら、まず、削除する。

TCA9548APWRは次のようにSlave Addressの後にMux Bitに1を立てることで該当のI2Cバスにスイッチする。

Address R/W Mux bit

そして、Ultra96にログインして次のように0x01を書き込むとMuxの1番目にスイッチする。

ちなみに0x75はTCA9548APWRのSlave Adressです。

$ i2cset -y 0 0x75 0x01

そして、次のようにi2cdetectを実行するとスイッチしているI2Cバスを探索する。

$ i2cdetect -y -r 0

ちなみにI2CデバイスのLinux Kernelドライバがない場合、DeviceTreeでTCA9548APWR経由のアクセスを表現するのは面倒です。

write: 2019/07/01/ 22:28:18