富士通

F²MC-8LファミリーFAQ目次へ

FAQ

I2Cについて

  1. マスタ送信(スタートコンディション発生)を実行しても転送終了割り込み(INTbit=1)が発生しないのですが、どうしたらよいですか?
  2. ストップコンディション割り込みに対応していますか。
  3. マスタ時にスタートコンディション発生後、通信相手のスレーブがSDAラインをLow駆動し通信異常を起こしているにも関わらずマスタはクロックを出しつづけます。どうしたらよいですか。
  4. SCL=H,SDA=Lの状態でクロック制御レジスタ(ICCR)のENbit=1設定した場合の動作について教えてください。(対象:89960Series)

1. マスタ送信(スタートコンディション発生)を実行しても転送終了割り込み(INTbit=1)が発生しないのですが、どうしたらよいですか?

I2CバスのレベルがSCL=L, SDA=Lである可能性があります。本状態でスタートコンディションを発生させると、マスタはクロック出力できない為、転送終了割り込みを発生(INTbit=1)しません。この状態に陥ると、BBbit=0,ALbit=1の状態になりますので、BBbit, ALbitにて検出し、I2Cをディセーブルにして本状態を解除してください。

2. ストップコンディション割り込みに対応していますか。

ストップコンディション割り込みには対応していません。BBbitをソフトで監視してストップコンディションを検出する必要があります。

3. マスタ時にスタートコンディション発生後、通信相手のスレーブがSDAラインをLow駆動し通信異常を起こしているにも関わらずマスタはクロックを出しつづけます。どうしたらよいですか。

F2MCファミリ搭載のI2Cでは、マスタ時にスタートコンディション発生後、SCLがフリーであれば、9クロック必ず出力される仕様になっています。9クロック出力後に、INTbitにて割り込みが発生し、割り込み処理に遷移致します。本割り込みルーチン内で各フラグをチェックする必要があります。なお、バスエラー発生時にはバスエラー発生直後にバスエラー割り込みが発生し、I2Cはハードで自動的にディセーブル状態となります。

4. SCL=H,SDA=Lの状態でクロック制御レジスタ(ICCR)のENbit=1設定した場合の動作について教えてください。(対象:89960Series)

仕様上、SCL=H, SDA=Lの状態でSMBusバッファが選択されていると、ENbitを動作許可 した瞬間、I2Cマクロ内部でスタートコンディションを検出してしまいます(バス上はSCL=H, SDA=Lのまま)。この後、SDA=LがHに切り替わるとI2Cは不正ストップコンディションを検出した事になりバスエラーを発生します。 I2Cバッファが選択されている場合は問題ありません。