- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PCA9306使用時のLレベル上昇現象について)
PCA9306使用時のLレベル上昇現象について
このQ&Aのポイント
- PCA9306を使用したI2Cレベルシフタで、通信中にLレベルが1.3V程度まで上昇する現象が発生しています。
- 機器側が3.3V系、ケーブル側が5.0Vで、共通のGNDで接続されています。
- 不具合の解決法について情報を求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どちらかの機器が、Hiレベル時にソース出力していないでしょうか? HiレベルとLoレベルの信号衝突が発生しているように見えます。 私の予想では、機器B側のHiレベルがソース出力になっている気がするのですが。 I2Cでは、マスター、スレーブともにSDAはオープンコレクタ(又はオープンドレイン)でLoレベルだけを出力し、Hiレベルはプルアップだけで吊り上げられるようにして、出力端子からHiレベルをソース出力しないようにしなければなりません。 機器Bの出力端子設定に間違いがないか、確認してみて下さい。
その他の回答 (1)
- iijijii
- ベストアンサー率55% (576/1038)
回答No.1
機器側がマスタで間違いないですか?
質問者
補足
説明不足で申し訳ありません。 はい、機器側がマスタで間違いありません。 イメージとしては以下の通りです。 機器A -> レベルシフタ ===(cable)=== レベルシフタ -> 機器B 添付画像は機器A側で測定したものになります。 追加の情報ですが、どうやら機器AからのWriteもしくはACK時のみLレベルが上昇し、機器AのReadに対する機器Bのデータ(SDA)は正常なレベルが出ている様です。
お礼
ご回答ありがとうございます。 機器Bの設定を確認しましたが、ポートは確かにOpen-Drain設定となっていました。 ところで、本来I2Cレベルシフタ/バスバッファにはPCA9600Dを用いるべきと思うのですが、安価だという理由で純粋なレベルシフタであるPCA9306Dを採用しています。 用途外の構成であるから正常に信号伝達が行われず…というオチのような気がして、再設計を検討しています。