Silicon Labs:CP2112でSMBus(I2C)のリード/ライトを行うと、スレーブアドレスが1ビットずれてしまってSMBusデバイスと通信できません。対処方法を教えてください
CP21xx
SMBus(I2C)のスレーブアドレスは7ビット長で、リード/ライトを識別するためのビット(1ビット)を付けて8bitとして通信を行っています。リード/ライトビットがbit0に配置されますので、スレーブアドレスはbit7~bit1に配置されます。
例えば、スレーブアドレス 111 0000 と通信したい場合には、CP2112では1ビット分シフトして、スレーブアドレス1110 000x として取り扱ってください。CP2112の制御には、AN496で紹介されているAPIをご使用になる場合が多いですが、このAPIではslave addressは0x02~0xFEの範囲で指定することになっています。slave addressを0x00~0x7Fの範囲で設定すると、期待値から1ビットずれたアドレスが出力されることになります。
Experienced FAE
Free consultation is available.
From specific product specifications to parts selection, the Company FAE will answer your technical concerns free of charge. Please feel free to contact us.