I2Cスレーブアドレスが確認されない(時々)
I2Cを使用して、リモート接続されたFRAM(RamtronのFM24C04)と通信しようとしています。このメモリはボードに組み込まれており、システムにいつでもシステムから着脱できます(メモリを取り外す前に通信は適切に終了します)。 問題は次のとおりです。ちょうどFRAMが含まれているカードを挿入した後、時々、それはアドレスを認識しません。 信号測定 信号を測定して何が起こっているのかを確認しましたが、タイミングはどちらの場合も(正常に機能していても機能していなくても)良いようです。 正しいI2C通信(3バイトの読み取り): I2C FRAMアドレスが確認されていません(スレーブアドレスは正しく送信されています): この問題を解決するために既に行われたアクション(成功なし) 電源シーケンスを確実に順守するために、FRAMが埋め込まれたカードが挿入された後に追加される遅延。 I2Cは、確認応答しないスレーブアドレスの検出後に生成を停止します I2Cバス構成 1つのマスター(STのSTM32F205マイクロコントローラー) 3つのスレーブ(MicrochipのEEPROM 24AA1025、Maxim ICのRTC DS1339C、およびRamtronのリモートFRAM FM24C04 1つのI2Cレベルシフター(マキシムICのMAX3373E)を使用して、マスターとFRAM間の通信が可能 バス周波数を100 kHzに設定 編集済み(2013-04-17) まず、コメントありがとうございます。 たくさんの提案があるので、これが私が行った調査の説明です。 回路図 次の図は、I2Cバスの簡略図を示しています。 I2C_SDAおよびI2C_SCL信号はマイクロコントローラーに直接接続され、FRAM_SDAおよびFRAM_SCL信号はFRAMに接続されます。FRAMに接続されたSDAおよびSCL信号は、MurataのBLM18フェライトを使用してフィルタリングされることに注意してください。 FRAMは次のように接続されます。 NC(ピン1)->未接続 A1(ピン2)-> GND A2(ピン3)-> GND VSS(ピン4)-> GND SDA(ピン5)-> FRAM_SDA SCL(ピン6)-> FRAM_SCL WP(ピン7)-> GND(書き込み保護なし) VDD(ピン8)-> + 5V FRAMカードの説明 このカードは、FRAMのみを組み込んだ「ISAのような」カードです。 調査 周波数を遅くする SCL周波数を50kHzと10kHzに設定してテストを実行しました。SCL信号をオシロスコープで測定して、期待した周波数であることを確認しました。 これらの変更は問題を解決しませんでした。タイミングを確認したところ、FRAMデータシートの仕様の範囲内でした。 電源シーケンスの確保 …