サイト内検索

Silicon Labs:CP2112でSMBus(I2C)のリード/ライトを行うと、スレーブアドレスが1ビットずれてしまってSMBusデバイスと通信できません。対処方法を教えてください

CP21xx

SMBus(I2C)のスレーブアドレスは7ビット長で、リード/ライトを識別するためのビット(1ビット)を付けて8bitとして通信を行っています。リード/ライトビットがbit0に配置されますので、スレーブアドレスはbit7~bit1に配置されます。

Article header cp2112%e3%81%a7smbus%ef%bc%88i2c%ef%bc%89%e3%81%ae%e3%83%aa%e3%83%bc%e3%83%89%ef%bc%8f%e3%83%a9%e3%82%a4%e3%83%88%e3%82%92%e8%a1%8c%e3%81%86%e3%81%a8%e3%80%81%e3%82%b9%e3%83%ac%e3%83%bc%e3%83%96%e3%82%a2%e3%83%89%e3%83%ac%e3%82%b9%e3%81%8c1%e3%83%93%e3%83%83%e3%83%88%e3%81%9a%e3%82%8c%e3%81%a6smbus%e3%83%87%e3%83%90%e3%82%a4%e3%82%b9%e3%81%a8%e9%80%9a%e4%bf%a1%e3%81%a7%e3%81%8d%e3%81%be%e3%81%9b%e3%82%93%e3%80%82%e5%af%be%e5%87%a6%e6%96%b9%e6%b3%95%e3%82%92%e6%95%99%e3%81%88%e3%81%a6%e3%81%8f%e3%81%a0%e3%81%95%e3%81%841  1

例えば、スレーブアドレス 111 0000 と通信したい場合には、CP2112では1ビット分シフトして、スレーブアドレス1110 000x として取り扱ってください。CP2112の制御には、AN496で紹介されているAPIをご使用になる場合が多いですが、このAPIではslave addressは0x02~0xFEの範囲で指定することになっています。slave addressを0x00~0x7Fの範囲で設定すると、期待値から1ビットずれたアドレスが出力されることになります。

経験豊富なFAEが
無料でご相談を承ります。

特定製品の仕様からパーツの選定まで、当社のFAEが皆様のテクニカルなお悩みに無料で回答します。ぜひ、お気軽にご相談ください。