56
© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-1 Inter-Integrated Circuit (I 2 C) 24 24 Inter-Integrated Circuit(I 2 C) ハイライト 本章では次のトピックについて説明します。 24.1 はじめに ............................................................. 24-2 24.2 I 2 C バス の特性 ....................................................... 24-4 24.3 制御と ステータスレジスタ............................................. 24-7 24.4 I 2 C 動作の有効化 ..................................................... 24-13 24.5 単一マスタ環境でマスターとして通信 .................................. 24-15 24.6 マルチマスター環境でマスターとして通信 .............................. 24-28 24.7 スレーブとして通信 .................................................. 24-31 24.8 I 2 C バス接続に関する考慮点 ........................................... 24-46 24.9 PWRSAV 命令 中のモジュール動作..................................... 24-47 24.11 リセットの影響 ...................................................... 24-47 24.12 レジスタ マップ...................................................... 24-48 24.13 電気的仕様 .......................................................... 24-49 24.14 設計の秘訣 .......................................................... 24-53 24.15 関連する アプリケーション ノート ..................................... 24-54 24.16 改版履歴 ............................................................ 24-55

第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit™ (I2C™)

Inter-IntegratedC

ircuit (I 2C)

24

ハイライト

本章では次のトピックについて説明します。

24.1 はじめに ............................................................. 24-224.2 I2C バス の特性 ....................................................... 24-424.3 制御と ステータスレジスタ............................................. 24-724.4 I2C 動作の有効化..................................................... 24-1324.5 単一マスタ環境でマスターとして通信 .................................. 24-1524.6 マルチマスター環境でマスターとして通信 .............................. 24-2824.7 スレーブとして通信 .................................................. 24-3124.8 I2C バス接続に関する考慮点........................................... 24-4624.9 PWRSAV 命令 中のモジュール動作..................................... 24-4724.11 リセットの影響 ...................................................... 24-4724.12レジスタ マップ...................................................... 24-4824.13電気的仕様 .......................................................... 24-4924.14設計の秘訣 .......................................................... 24-5324.15関連する アプリケーション ノート ..................................... 24-5424.16改版履歴 ............................................................ 24-55

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-1

Page 2: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.1 はじめに

Inter-Integrated Circuit (I2C) モジュールは、他の周辺デバイスまたはマイクロコントローラデバイスと通信する際に役立つシリアル インターフェイスです。ここでいう周辺デバイスとは、シリアル EEPROM、ディスプレイ ドライバ、A/D コンバータなどです。

I2C モジュールは以下の I2C システムのいずれかで動作します。

• スレーブ デバイスとして

• シングル マスター システム内でマスター デバイスとして動作する場合(スレーブとして動作する場合あり)

• マルチマスター システム内でマスター / スレーブ デバイスとして動作する場合(バス衝突の検出および調停可能)

I2C モジュールは独立した I2C マスター ロジックと I2C スレーブ ロジックを持ち、各ロジックがそのイベントに基づき割り込みを生成します。マルチマスター システムでは、ソフトウェアによってマスター コントローラとスレーブ コントローラに単純に分けられます。

I2C マスター ロジックがアクティブな時、スレーブ ロジックもアクティブのままとなり、バスの状態を検出したり、シングル マスター システム内で自らに宛てたメッセージやマルチマスター システム内のその他マスターからのメッセージを受信する可能性があります。マルチマスター バス調停の間はメッセージが失われることはありません。

マルチマスター システムでは、システム内での他のマスターとのバス衝突が検出されたとき、モジュールによってメッセージの終了と再起動の手段が提供されます。

I2C モジュールにはボーレート ジェネレータが含まれます。 I2C ボーレート ジェネレータは、デバイス内のほかのタイマーのリソースを消費しません。

  I2C モジュールの主な機能には以下のものが含まれます。

• 独立したマスターおよびスレーブロジック

• マルチマスターがサポートされ調停中にメッセージが失われることを防ぐ

• スレーブ モードで設定可能なアドレス マスク機能付きの 7 ビットおよび 10 ビット デバイス アドレス検出

• I2C プロトコルで定義された一斉呼び出しアドレス検出

• バス リピーター モードのときは、モジュールはスレーブとしてアドレスに関係なくすべてのメッセージを受信する

• 自動 SCLx クロック ストレッチングがスレーブからの要求に対するプロセッサの遅延を生成する

• 100 kHz と 400 kHz のバス仕様をサポート

• Intelligent Peripheral Management Interface (IPMI) 規格をサポート

図 24-1 に I2C モジュールのブロック図を示します。

DS39702A_JP - ページ 24-2 Advance Information © 2007 Microchip Technology Inc.

Page 3: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

図 24-1: I2C™ ブロック 図

I2CxRCV

内部データバス

SCLx

SDAx

シフト

一致検出

I2CxADD

スタートとストップビット検出

クロック

アドレス一致

クロックストレッチング

I2CxTRNLSB

シフトクロック

BRG

再ロード制御

TCY/2

スタートとストップビット生成

アクノレッジ生成

衝突検出

I2CxCON

I2CxSTAT

制御

ロジ

ック

読み出し

LSB

書き込み

読み出し

I2CxBRG

I2CxRSR

書き込み

読み出し

書き込み

読み出し

書き込み

読み出し

書き込み

読み出し

書き込み

読み出し

I2CxMSK

ダウン カウンタ

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-3

Page 4: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.2 I2C バス の特性

I2C バスは2 ワイヤ シリアル インターフェースです。図24-2はPIC24Fデバイス と24LC256I2C シリアル EEPROM 間の I2C 接続の回路図を示しています。 インターフェースは包括的なプロトコルを採用することによって、信頼性の高いデータの送受信を可能にしています。通信時には、1 つのデバイスがバスへの転送を開始する「マスター」となり、転送するためのクロック信号を生成し、他方のデバイス(複数の場合あり)が「スレーブ」としてその転送に応答します。クロック ライン SCLx は、マスターから出力しスレーブへ入力されますが、場合によってはスレーブが SCLx ラインを駆動することもあります。データ ライン SDAx はマスターとスレーブの両方からの出力および入力になります。

SDAx と SCLx は双方向性であるため、SDAx ラインと SCLx ラインを駆動するデバイスの出力ステージは、ワイアード AND 機能が実現できるようオープン ドレイン構成とする必要があります。いずれのデバイスもラインを引き込まない場合は、外部プルアップ抵抗によって High レベルが維持されます。

I2C インターフェース プロトコルでは、各デバイスが 1 つのアドレスを持っています。マスターがデータ転送を試みる場合、最初に「talk」したいデバイスのアドレスを送信します。すべてのデバイスがこれを「listen」し、それが自分のアドレスかどうかを確認します。このアドレス内のビット 0 がマスターがスレーブ デバイスに対し、読み出しか書き込みのどちらを行おうとしているかを指定します。データ転送中、マスターとスレーブは常に逆の動作モード(送信側 / 受信側)となります。そのため、マスターとスレーブの動作は次の 2 つの関係のいずれかになると考えられます。

• マスターが 送信機、スレーブが 受信機

• スレーブが送信機、マスターが受信機

 いずれの場合もマスター側が SCLx クロック ラインの信号を生成します。

図 24-2: 典型的な I2C™ 相互接続の ブロック図

SCLX

SDAX

PIC24F

SDA

SCL

VDD VDD

4.7 kΩ 24LC256( 標準 )

DS39702A_JP - ページ 24-4 Advance Information © 2007 Microchip Technology Inc.

Page 5: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.2.1 バス プロトコル

次の I2C バス プロトコルが定義されています。

• バスがビジーでないときのみデータ転送が起動される

• データ転送中は、SCLx クロック ラインが High の場合は常にデータ ラインは安定している必要がある。SCLx クロック ラインが High の間にデータ ライン変化が起きると、スタートまたはストップ条件とみなされる

これにより次のバス状態が定義される ( 図 24-3)。

24.2.1.1 データ転送の開始 (S)バス アイドル状態の後、クロック (SCLx) が High の間の SDAx ラインの High から Low への遷移はスタート条件と判断されます。すべてのデータ転送はスタート条件から開始する必要があります。

24.2.1.2 データ転送の停止 (P)クロック (SCLx) が High の間の SDAx ラインの Low から High への遷移はストップ条件と判断されます。すべてのデータ転送はストップ条件で終了する必要があります。

24.2.1.3 リピート スタート (R)待ち状態の後、クロック (SCLx) が High の間の SDAx ラインの High から Low への遷移はリピート スタート条件と判断されます。 リピート スタート条件により、マスターはバス制御を放棄せずにバスの方向や、スレーブ デバイスのアドレスを変更できます。

24.2.1.4 データ有効化 (D)スタート条件の後にクロック信号が High の間、SDAx ラインが一定であれば、SDAx ラインの状態は有効データであることを表します。1 つの SCLx クロックにつき 1 ビットのデータが送られます。

24.2.1.5 アクノレッジ (A) または非アクノレッジ (N)すべてのデータ バイト送信に対し、受信側はアクノレッジ (ACK) または非アクノレッジ(NACK) を返す必要があります。受信側は ACK の場合は SDAx ラインを Low にし、NACKの場合は SDAx ラインを開放にします。アクノレッジは 1 つの SCLx クロックを使用した1 ビット期間とします。

24.2.1.6 待ち / データ無効 (Q)ライン上のデータは、クロック信号が Low の間に変更しなければなりません。デバイスは SCLx ラインを Low に駆動することにより、クロックの Low 時間を延ばし、バスを待ち状態にします。

24.2.1.7 バス アイドル (I)ストップ条件の後は、次のスタート条件が発生するまで、データ ラインとクロック ラインの両方が High のままとなります。

図 24-3: I2C™ バス プロトコル状態

アドレスが有効

データ変更可能

ストップ条件

スタート条件

SCLx

SDAx

(I) (S) (D) (A) または (N) (P) (I)

データか

(Q)

ACK/NACK有効

NACK

ACK

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-5

Page 6: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.2.2 メッセージ プロトコル

典型的な I2C メッセージは図 24-4 に示すとおりです。この例では、メッセージが 24LC256I2C シリアル EEPROM から指定バイトで読み込まれます。PIC24F デバイスはマスターとして動作し、24LC256 デバイスはスレーブとして動作します。

図 24-4 では、マスター デバイスに駆動されたデータとスレーブ デバイスに駆動されたデータが示されています。ここで、複合 SDAx ラインがマスターとスレーブ データのワイアード AND であることを思い出して下さい。マスタ デバイスがプロトコル シーケンスを制御します。スレーブデバイスは指定された時間だけバスを駆動します。

図 24-4: 典型的な I2C™ メッセージ : シリアル EEPROM からの読み出し ( ランダム アドレス モード )

24.2.2.1 メッセージの開始

各メッセージは「スタート」条件により開始され、「ストップ」条件により終了します。スタート条件からストップ条件までの間に転送されるデータ バイト数は、マスタ デバイスによって決定されます。システム プロトコルに定義されたように、メッセージの各バイトは「デバイス アドレス バイト」、「データ バイト」などの特定の意味を持ちます。

24.2.2.2 スレーブのアドレス

図 24-4 では、1 番目のバイトはデバイス アドレス バイトで、I2C メッセージの最初の部分になるべきものです。ここにはデバイス アドレスと R/W ビットを含みます。アドレス バイトのフォーマットの詳細は、 付録A( マイクロチップのウェブサイト www.microchip.com を確認して下さい ) を参照してください。1 番目のアドレス バイトの R/W = 0 の場合、マスターが送信側、スレーブが受信側となることを示します。

24.2.2.3 スレーブからのアクノレッジ

受信側デバイスは、各バイトの受信後アクノレッジ信号「ACK」を生成する必要があります。マスタ デバイスはこのアクノレッジ ビットに対応する SCLx クロックを追加生成しなければなりません。

24.2.2.4 マスタからの送信

マスターからスレーブに送られる次の 2 バイトは、要求された EEPROM データ バイトの位置情報を含むデータ バイトです。スレーブはデータ バイトごとに応答する必要があります。

24.2.2.5 リピート スタート

ここまでで、スレーブ EEPROM は要求されたデータ バイトをマスターに返すのに必要なアドレス情報を得ました。ただし、1 番目のデバイス アドレスバイトの R/W ビットによってマスターは送信、スレーブは受信と指定されています。このため、スレーブがマスターにデータを送信できるようにするには、バスを反対の方向に向ける必要があります。

メッセージを終了させることなくこれを行うため、マスターは 「リピート スタート」を送信します。 リピート スタートの後に、以前と同じデバイス アドレスを含むデバイス アドレスバイトが続きます。スレーブが送信し、そしてマスターが受信でスレーブが送信とするため、 R/W = 1 となっています。

X

バス

マスタSDAx

スタート

アドレスバイト

EEPROM アドレス上位バイト

EEPROM アドレス下位バイト

アドレスバイト

データバイト

S 1 0 1 0 A A A 02 1 0 R 1 0 1 0 A A A 12 1 0 P

スレーブSDAx

動作

N

AAAA

出力

出力

アイドル

R/W

ACK

ACK

ACK

リスタート

R/W

ACK

NAC

Kストップ

アイドル

DS39702A_JP - ページ 24-6 Advance Information © 2007 Microchip Technology Inc.

Page 7: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.2.2.6 スレーブ返信

ここでスレーブが SDAx ラインを駆動してデータ バイトを送信します。マスターはクロック生成を継続する一方で自らの SDAx の駆動を開放します。

24.2.2.7 マスターの応答

読み込みの場合は、メッセージの最後バイトで、マスターが応答しないこと (「NACK」を生成 ) によってスレーブへデータ要求の終了を通知しなければなりません。

24.2.2.8 メッセージの停止

マスターはメッセージを終了するためにストップ を送信し、バスをアイドル状態に戻します。

24.3 制御と ステータスレジスタ

I2C モジュールは、ユーザーが利用可能な 7 つの動作設定用レジスタを持っています。レジスタはバイト 、ワード モードのどちらでも使用可能です。

それらのレジスタとしては:

• 制御レジスタ (I2CxCON): このレジスタ ( レジスタ 24-1) はモジュール動作を制御する

• ステータス レジスタ (I2CxSTAT): このレジスタ ( レジスタ 24-2) は動作中のモジュールの状態を示すステータス フラグを含む

• アドレス マスク レジスタ (I2CxMSK): このレジスタ ( レジスタ 24-3) は I2CxADD のどのビット位置を無視するかを示し、多重アドレスをサポートする

• 受信バッファ レジスタ (I2CxRCV): データ バイトの読み出しができるバッファ レジスタで、I2CxRCV レジスタは読み出し専用

• 送信レジスタ (I2CxTRN): 送信用のレジスタで、送信動作のときこのレジスタにバイトを書き込む。I2CxTRN レジスタは読み / 書き可能なレジスタ

• アドレス レジスタ (I2CxADD): このレジスタはスレーブ デバイス アドレスを保持する

• ボーレート ジェネレータ 再ロード レジスタ (I2CxBRG): I2C モジュールのボーレート ジェネレータ用のボーレート ジェネレータ再ロード値を保持する

I2CxTRN は送信データが書き込まれるレジスタです。このレジスタはモジュールがスレーブへデータを送信するマスターとして、またはマスターへ返信データを送信するスレーブとして動作する場合に使用されます。メッセージの送信中は、I2CxTRN レジスタの個々のビットをシフト出力します。このため、I2CxTRN にはバスがアイドル状態にある時以外は書き込むまれません。I2CxTRN は現在のデータが送信されている間でもリロードできます。

マスターまたはスレーブのいずれの場合も受信されたデータは I2CxRSR と呼ばれるアクセス不可のシフト レジスタにシフト入力されます。バイト受信が完了すると、バイトはI2CxRCV レジスタに転送されます。受信動作では、I2CxRSR および I2CxRCV はダブルバッファ受信器を構成します。これにより、受信された現在のバイトを読み出す前に次のバイトを受信できます。

ソフトウェアが I2CxRCV レジスタから受信したバイトを読み出す前にモジュールが新たにバイトを受信完了してしまった場合、受信側はオーバー フローとなり I2COV ビット(I2CxSTAT<6>) をセットします。I2CxRSR 内のバイトは失われます。

I2CxADD レジスタはスレーブ デバイス アドレスを保持します。10 ビット アドレス モードでは、すべてのビットが対象です。7 ビット アドレス モードでは、I2CxADD<6:0> のみが対象となります。A10M ビット (I2CxCON<10>) はスレーブ アドレスの期待するモードを指定します。いずれのスレーブ アドレス指定モードでも、I2CxADD と一緒に I2CxMSKレジスタを使用すると、1 ビット以上のビット位置をアドレス一致の対象外となり、スレーブ モードにおいてモジュールが多重アドレスに応答するようになります。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-7

Page 8: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

レジスタ 24-1: I2CxCON: I2Cx 制御レジスタ

R/W-0 U-0 R/W-0 R/W-1, HC R/W-0 R/W-0 R/W-0 R/W-0I2CEN — I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN

ビット 15 ビット 8

R/W-0 R/W-0 R/W-0 R/W-0, HC R/W-0, HC R/W-0, HC R/W-0, HC R/W-0, HC

GCEN STREN ACKDT ACKEN RCEN PEN RSEN SEN

ビット 7 ビット 0

凡例 : U = 未実装、読むと「0」

R = 読み出し可 W = 書き込み可 HS = ハードウェアでセット HC = ハードウェアでクリア

-n = リセット後の値 ‘1’ = セット ‘0’ = クリア x = 不定

ビット 15 I2CEN: I2Cx 有効化ビット 1 = I2Cx モジュールを有効化し、SDAx と SCLx ピンをシリアル ポート ピンに構成する0 = I2Cx モジュールを無効化し、 すべての I2C ピンをポート機能による制御とする

ビット 14 未実装 : 読むと「0」ビット 13 I2CSIDL: アイドル モード中停止ビット

1 = デバイスがアイドルモードになったらモジュールの動作を停止0 = アイドルモード中も動作継続

ビット 12 SCLREL: SCLx 開放制御ビット (I2C スレーブ動作の場合 )1 = SCLx クロックを開放する0 = SCLx クロックを Low に保持する ( クロック ストレッチ )STREN = 1の場合   ビットは R/W ( ストレッチの開始には「0」を、クロック開放には「1」をソフトウェアで書き込む )

スレーブの送信開始時点かスレーブ受信完了時点でハードウェアによりクリアされるSTREN = 0の場合   ビットは R/S ( ソフトウェアではクロックを開放するため「1」しか書けない )

スレーブ 送信開始でハードウェアでクリアされる

ビット 11 IPMIEN: 知能的周辺モジュール管理インターフェース (IPMI) 有効化ビット

1 = IPMI サポートモードを有効化、すべてのアドレスを認識0 = IPMI サポート モードを無効化

ビット 10 A10M: 10 ビット スレーブ アドレス ビット

1 = I2CxADD を 10 ビット スレーブ アドレスとする0 = I2CxADD を 7 ビット スレーブ アドレスとする

ビット 9 DISSLW: スルーレート制御ビット

1 = スルーレート制御を無効化0 = スルーレート制御有効化

ビット 8 SMEN: SM バス入力レベル ビット

1 = I/O ピンのスレッショルドを SM バス仕様互換とする0 = SM バス入力スレッショルドを無効とする

ビット 7 GCEN: 一斉呼び出し有効化ビット (I2C スレーブ動作の場合 )1 = I2CxRSR に一斉呼び出しアドレス受信で割り込みを有効とする ( モジュール受信有効の場合 )0 = 一斉呼び出しアドレスは無効

ビット 6 STREN: SCLx クロック ストレッチ有効化ビット (I2C スレーブ モードのみ SCLREL ビットと一緒にに使う )1 = ソフトウェアまたは受信のクロック ストレッチを有効化0 = ソフトウェアまたは受信のクロック ストレッチ無効化

ビット 5 ACKDT: ACK データビット (I2C マスタ モードの受信動作の場合のみ )値はソフトウェアで ACK シーケンスを開始したとき送信される

1 = アクノレッジ期間に NACK を送る0 = アクノレッジ期間に ACK を送る

DS39702A_JP - ページ 24-8 Advance Information © 2007 Microchip Technology Inc.

Page 9: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

ビット 4 ACKEN: アクノレッジ シーケンス有効化ビット (I2C マスタ モードの受信の場合のみ )1 = SDAx と SCLx ピンでアクノレッジ シーケンスを起動し、ACKD データ ビットを送信する

( マスタのアクノレッジ シーケンスの終わりでハードウェアでクリアされる )0 = アクノレッジ シーケンス中ではない

ビット 3 RCEN: 受信有効化ビット (I2C マスタ モードの場合 )1 = I2C の受信モード有効化 ( マスター受信バイトの 8 ビット目の終わりでハードウェアがクリア )0 = 受信シーケンス中ではない

ビット 2 PEN: ストップ条件有効化ビット (I2C マスタ モードの場合 )1 = SDAx と SCLx ピンでストップ条件を起動する

( マスタのストップ条件シーケンスの終わりでハードウェアでクリアされる )0 = ストップ条件中ではない

ビット 1 RSEN: リピート スタート条件有効化ビット (I2C マスタ モードの場合 )1 = SDAx と SCLx ピンでリピート スタート条件を起動する

( マスター リピート スタート シーケンスの終わりでハードウェアでクリアされる )0 = リピート スタート条件中ではない

ビット 0 SEN: スタート条件有効化ビット (I2C マスタ モードの場合 )1 = SDAx と SCLx ピンにスタート条件を起動する

( マスター スタート シーケンスの終わりでハードウェアでクリアされる )0 = スタート条件中ではない

レジスタ 24-1: I2CxCON: I2Cx 制御レジスタ ( 続き )

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-9

Page 10: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

レジスタ 24-2: I2CxSTAT: I2Cx ステータス レジスタ

R-0, HSC R-0, HSC U-0 U-0 U-0 R/C-0, HS R-0, HSC R-0, HSC

ACKSTAT TRSTAT — — — BCL GCSTAT ADD10ビット 15 ビット 8

R/C-0, HS R/C-0, HS R-0, HSC R/C-0, HSC R/C-0, HSC R-0, HSC R-0, HSC R-0, HSC

IWCOL I2COV D/A P S R/W RBF TBFビット 7 ビット 0

凡例 : U = 未実装、読むと 「0」

R = 読み出し可 W = 書き込み可 HS = ハードウェアでセット HC = ハードウェアでクリア

-n = リセット後の値 ‘1’ = セット ‘0’ = クリア x = 不定

ビット 15 ACKSTAT: アクノレッジ ステータス ビット (I2C マスタ モード送信動作の場合 )1 = スレーブから NACK 受信0 = スレーブから ACK 受信スレーブからのアクノレッジの終わりでハードウェアでセットまたはクリアされる

ビット 14 TRSTAT: 送信ステータス ビット (I2C マスタ モード送信動作の場合 )1 = マスタ送信中 (8 ビット + ACK)0 = マスタ送信中でない  マスタ送信開始でハードウェアでセットされ、スレーブのアクノレッジの終わりでハードウェアで

クリアされる

ビット 13-11 未実装 : 読むと「0」ビット 10 BCL: マスタ バス衝突検出ビット

1 = マスタ動作中にバスの衝突を検出した0 = 衝突はないバス衝突検出でハードウェアでセットされる

ビット 9 GCSTAT: 一斉呼び出しステータス ビット

1 = 一斉呼び出しアドレスを受信した0 = 一斉呼び出しアドレスを受信していない  アドレスが一斉呼び出しアドレスと一致したときハードウェアでセットされ、ストップ条件が検

出されるとハードウェアでクリアされる

ビット 8 ADD10: 10 ビット アドレス ステータス ビット

1 = 10 ビット アドレスが一致した0 = 10 ビットアドレスが一致していない  一致した 10 ビットアドレスの第 2 バイト一致によりハードウェアでセット、ストップ条件が検出

されるとハードウェアでクリア

ビット 7 IWCOL: 書き込み衝突検出ビット

1 = I2C モジュールがビジーのため I2CxTRN レジスタに書き込もうとして失敗した 0 = 衝突なし ビジー中に I2CxTRN への書き込みでハードウェアでセット ( ソフトウェアでクリア )

ビット 6 I2COV: 受信オーバーフロー フラグ ビット

1 = I2CxRCV レジスタが前のバイト保持中にバイトを受信した0 = オーバーフローは起きていない I2CxRSR から I2CxRCV へ転送する際ハードウェアでセット ( ソフトウェアでクリア )

ビット 5 D/A: データ / アドレス ビット (I2C スレーブ モードの場合 )1 = 最後の受信バイトはデータ0 = 最後の受信バイトはデバイス アドレス  デバイス アドレス一致でハードウェアでクリア、I2CxTRN への書き込みか、スレーブ バイト受信

でハードウェアでセット

DS39702A_JP - ページ 24-10 Advance Information © 2007 Microchip Technology Inc.

Page 11: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

ビット 4 P: ストップ ビット 1 = 最後にストップ ビットを検出したことを示す0 = 最後にストップ ビットが検出されていない スタート、リピート スタート、ストップ検出でハードウェアでセットまたはクリアされる

ビット 3 S: スタート ビット 1 = 最後にスタート ( またはリピート スタート ) を検出した0 = 最後にスタート ビットを検出していない スタート、リピート スタート、ストップ検出でハードウェアでセットまたはクリアされる

ビット 2 R/W: 読み出し / 書き込み 情報ビット (I2C スレーブで動作の場合 )1 = 読み出し : データ転送はスレーブからの出力0 = 書き込み : データ転送はスレーブへの入力 I2C デバイスアドレス バイト受信後ハードウェアでセット、クリアされる

ビット 1 RBF: 受信バッファ フル ステータス ビット 1 = 受信完了、I2CxRCV は一杯0 = 受信未完、 I2CxRCV は空き 受信バイトが I2CxRCV に書き込まれるとハードウェアでセット、ソフトウェアで I2CxRCV を読

むとハードウェアでクリア

ビット 0 TBF: 送信バッファ フル ステータス ビット

1 = 送信中、 I2CxTRN は一杯0 = 送信完了、 I2CxTRN は空き ソフトウェアで I2CxTRN に書くとハードウェアでセット、データ送信完了でハードウェアでクリア

レジスタ 24-2: I2CxSTAT: I2Cx ステータス レジスタ ( 続き )

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-11

Page 12: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

レジスタ 24-3: I2CxMSK: I2Cx スレーブ モード アドレス マスク レジスタ

U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0— — — — — — AMSK9 AMSK8

ビット 15 ビット 8

R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0AMSK7 AMSK6 AMSK5 AMSK4 AMSK3 AMSK2 AMSK1 AMSK0ビット 7 ビット 0

凡例 : R = 読み出し可 W = 書き込み可 U = 未実装、読むと「0」

-n = リセット後の値 ‘1’ = セット ‘0’ = クリア x = 不定

ビット 15-10 未実装 : 読むと「0」ビット 9-0 AMSKx: アドレス x 選択ビット用マスク

10 ビットアドレスの場合1 = 入力メッセージ アドレスのビット Ax のマスク有効化;この位置のビット一致は不要0 = ビット Ax のマスク無効化 ; この位置のビット一致が必要

7 ビット アドレスの場合 (I2CxMSK<6:0> の場合のみ )1 = 入力メッセージ アドレスのビット Ax+1 ビットのマスク有効化; この位置のビット一致は不要0 = ビット Ax+1 のマスク無効化 ; この位置のビット一致が必要

DS39702A_JP - ページ 24-12 Advance Information © 2007 Microchip Technology Inc.

Page 13: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.4 I2C 動作の有効化

I2CEN (I2CxCON<15>) ビットをセットすればモジュールを有効にできます。

I2C モジュールはすべてのマスターおよびスレーブ機能を実装しています。モジュールが有効化されると、マスター機能とスレーブ機能は同時にアクティブになり、ソフトウェアまたはバスイベントにしたがって応答します。

最初に有効化された時、モジュールは SDAx ピンと SCLx ピンを開放し、バスをアイドル状態にします。ソフトウェアがマスター イベントを起動するために制御ビットをセットしない限り、マスター機能はアイドル状態のままとなります。スレーブ機能はバスのモニターを開始します。スレーブ ロジックがスタート イベントを検出し、有効なアドレスがバスから来ると、スレーブ ロジックはスレーブ処理を開始します。

24.4.1 I2C I/O の有効化

バス動作には 2 ピンが使用されます。クロック用の SCLx ピンと、データ用の SDAx ピンです。モジュールが有効化されたとき、より高い優先順位を持つモジュールが制御を行っていないとみなすと、モジュールが SDAx ピンと SCLx ピンの制御を行います。モジュール ソフトウェアによってピンのポート I/O の状態を気にする必要なく、モジュールがポートの状態と方向を上書きします。初期化の際は、ピンはトライステート ( 開放状態 ) となります。

24.4.2 I2C 割り込み

I2C モジュールは 2 種類の割り込みを生成します。1 つ目の割り込みは MI2CxIF で、マスター イベントに割り当てられ、もうひとつは SI2CxIF でスレーブ イベントに割り当てられます。これらの割り込みは、対応する割り込みフラグ ビットをセットし、対応する割り込み有効化ビットがセットされ、対応する割り込み優先順位が十分に高ければ、ソフトウェア プロセスに割り込みます。

MI2CxIF 割り込みは、次のようなマスター メッセージ イベントが完了すると生成されます。

• スタート条件

• ストップ条件

• データ送信バイトの送受信

• アクノレッジ送信

• リピート スタート

• バス衝突イベント検出

SI2CxIF 割り込みは、次のイベントを含むスレーブ向けのメッセージを検出すると生成されます。 • 有効なデバイスアドレスの検出 ( 一斉呼び出しを含む )• 送信データの要求

• データの受信

24.4.3 バス マスター動作のときの ボーレート設定

I2C マスターとしての動作中、モジュールはシステム SCLx クロックを生成する必要があります。一般に、I2C システム クロックは 100 kHz、400 kHz または 1 MHz に指定します。システム クロック レートは最小 SCLx の Low タイム+最小 SCLx の High タイムで指定されます。多くの場合、この値は 2TBRG インターバルで定義されます。

ボーレート ジェネレータのリロード値は I2CxBRG レジスタで、図 24-5 に示されるとおりです。ボーレート ジェネレータにこの値がロードされると、ジェネレータは「0」までカウントダウンし、別のリロードが発生するまで停止します。ジェネレータのカウントは命令サイクル (TCY) ごとに 2 づ つデクリメントします。ボーレート再起動でボーレート ジェネレータは自動的にリロードされます。例えば、クロック同期が発生すると、SCLx ピンがハイでサンプルされたときにボーレート ジェネレータがリロードされます。

注 : I2CxBRG の値は 2 より小さい値はサポートされていません。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-13

Page 14: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

ボーレート ジェネレータのリロード値の計算には次の式をお使い下さい。

式 24-1:

表 24-1: I2C™ クロック レート

図 24-5: ボーレートジェネレータブロック図

システム要求FSCL

FCYI2CxBRG の値 実際の

FSCL(10 進数 ) (16 進数 )100 kHz 16 MHz 79 4F 100 kHz

100 kHz 8 MHz 39 27 100 kHz

100 kHz 4 MHz 19 13 100 kHz

400 kHz 16 MHz 19 13 400 kHz

400 kHz 8 MHz 9 9 400 kHz

400 kHz 4 MHz 4 4 400 kHz

400 kHz 2 MHz 2 2 333 kHz(1)

1 MHz 16 MHz 7 7 1 MHz

1 MHz 8 MHz 3 3 1 MHz(2)

1 MHz 4 MHz 1 1 1 MHz(3)

凡例 : 色付きの行は与えられた FSCL と FCY では無効なリロード値であることを示す。注 1: この FCY の値のとき最も 400 kHz に近い値。

2: FCY = 2 MHz は FSCL = 1 MHz とする際の最小入力クロック周波数となる。

3: I2CxBRG は 2 より小さな値にはできない。

またはFSCL = FCY2 • (I2CxBRG + 1) I2CxBRG = FCY

2 • FSCL– 1( )

注 1: TCY = FOSC/2 でダズ モードと PLL は無効とします。

ダウン カウンタ CLK2 TCY

I2CxBRG<8:0>

SCLx リロード制御

リロード

DS39702A_JP - ページ 24-14 Advance Information © 2007 Microchip Technology Inc.

Page 15: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.5 単一マスタ環境でマスターとして通信

システム内における一般的な I2C モジュール動作としては、I2C シリアル メモリなどのI2C 周辺デバイスとの通信用に I2C を使うことです。I2C システムでは、マスターがバス上のすべてのデータ通信のシーケンスを制御します。この例では、PIC24F とその I2C モジュールはシステム内でシングル マスターの役割を果たしています。シングル マスターとして、SCLx クロックを生成しメッセージ プロトコルを制御します。

I2C モジュールでは、モジュールが I2C メッセージ プロトコルの独立した各部を制御しますが、完全なメッセージを構築するためにプロトコルのシーケンスを制御するのはソフトウェアの仕事になります。

例えば、シングル マスター環境における典型的な動作として I2C シリアル EEPROM からのバイトの読み出しがあります。このメッセージ例を 図 24-6 に示します。

このメッセージを生成するためソフトウェアは次の手順でシーケンス制御を行います。

1. SDAx と SCLx でスタート条件を生成する

2. スレーブに Write 指定で I2C デバイス アドレス バイトを送信する

3. スレーブからのアクノレッジを待ち確認する

4. スレーブにシリアル メモリ アドレスの上位バイトを送る

5. スレーブからのアクノレッジを待ち確認する

6. スレーブにシリアル メモリ アドレスの下位バイトを送る

7. スレーブからのアクノレッジを待ち確認する

8. SDAx と SCLx にリピート スタート条件を生成する

9. スレーブに Read 指定でデバイス アドレス バイトを送信する

10. スレーブからのアクノレッジを待ち確認する

11. マスターの受信を有効化してシリアル メモリ データを受信する

12. データの最後のバイト受信で ACK か NACK を生成する

13. SDAx と SCLx にストップ条件を生成する

図 24-6: 典型的な I2C™ メッセージ : シリアル EEPROM からの読み出し ( ランダム アドレス モード )

I2C モジュールは、マスター モード通信をスタート およびストップ生成、データ バイト送信、データ バイト受信、アクノレッジ生成およびボーレート ジェネレータでサポートします。通常、ソフトウェアはコントロール レジスタに書き込みを行って特定の手順を開始し、割り込みを待つかポーリング行って完了を待ちます。

後続の各章でこれらの動作について詳細を説明します。.

バス

マスターSDAx

スタート

アドレスバイト

EEPROM アドレス上位バイト

EEPROM アドレス下位バイト

アドレスバイト

データバイト

S 1 0 1 0 A A A 02 1 0 R 1 0 1 0 A A A 12 1 0 P

スレーブSDAx

状態

N

AAAA

出力

出力

アイドル

R/W

ACK

ACK

ACK

リピート

R/W

ACK

NAC

Kストップ

アイドル

スタート

注 : I2C モジュールはイベントのキューを許可しません。例えば、ソフトウェアで、スタート条件を開始してすぐに I2CxTRN レジスタに書き込んで、スタート条件が完了する前に送信を開始することはできません。この場合、I2CxTRN は書き込まれず、I2CxTRN への書き込みが発生しなかったことを示すため IWCOL ビットがセットされます。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-15

Page 16: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.5.1 スタート バス イベントの生成

スタート イベントを開始するためには、ソフトウェアでスタート有効化ビット SEN(I2CxCON<0>) をセットします。スタート ビットをセットする前に、ソフトウェアで P 状態ビット (I2CxSTAT<4>) をチェックしてバスがアイドル状態にあることを確認します。

図 24-7 にスタート条件のタイミングを示します。

• スレーブ ロジックはスタート条件を検出したら S ビット (I2CxSTAT<3>) をセットし、P ビット (I2CxSTAT<4>) をクリアする

• スタート条件の完了で SEN ビットが自動的にクリアされる

• スタート条件完了で MI2CxIF 割り込みが発生する

• スタート条件の後、SDAx ラインと SCLx ラインは Low(Q 状態 ) のままとなる

24.5.1.1 IWCOL ステータス フラグ

スタート シーケンス進行中にソフトウェアで I2CxTRN に書き込むと、IWCOL がセットされ送信バッファの内容は変わりません(書き込みは発生しません)。

図 24-7: マスターのスタートタイミング図

24.5.2 スレーブ デバイスへのデータ送信

データ バイト、7 ビットデバイス アドレス バイト、10 ビット アドレスの 2 番目のバイトは、単純に I2CxTRN レジスタに適切な値を書き込めば送信できます。このレジスタにロードすると次のようにプロセスが開始されます。

• ソフトウェアで送信するデータバイトを I2CxTRN にロード

• I2CxTRN 書き込みでバッファ フル フラグ ビット TBF (I2CxSTAT<0>) がセットされる

• 8 ビットすべてが送信されるまで、データ バイトが SDAx ピンにシフト出力される。SCLx の立下りエッジの後、アドレス / データの各ビットが SDAx ピンにシフト出力される

• 9 番目の SCLx クロックで、モジュールがスレーブ デバイスからの ACK ビットをシフト入力するので、その値を ACKSTAT ビット (I2CxSTAT<15>) に書き込む

• モジュールは 9 番目の SCLx クロック サイクルの最後に MI2CxIF 割り込みを発生する

モジュールはデータ バイトを生成、有効化しないことに注意してください。バイトの内容と用途はソフトウェアによって保たれたメッセージ プロトコルの状態によります。

注 : イベントのキューが許可されていないため、I2CxCON の下位 5 ビットへの書き込みはスタート条件が完了するまで無効化されます。

SCLx ( マスター)

SDAx ( マスター)

S

SEN

MI2CxIF 割り込み

TBRG

1 2 3 4

1

TBRG2

34

I2C™ バス状態 (I) (Q)

P

(S)

- SEN = 1を書き込むとマスターのスタート イベントを起動

ボーレート ジェネレータが開始する

- ボーレート ジェネレータ タイム アウトでマスターが SDAx を

Low に駆動する

ボーレート ジェネレータが再スタート

- スレーブ モジュールのスタート検出で S = 1、 P = 0にセット

- ボーレート ジェネレータのタイム アウトでマスターが SCLx を

Low に駆動 、割り込み発生、そして SEN をクリア

DS39702A_JP - ページ 24-16 Advance Information © 2007 Microchip Technology Inc.

Page 17: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.5.2.1 スレーブへの 7 ビット アドレスの送信

7 ビット デバイス アドレスを送信するには、1 バイトをスレーブに送信します。7 ビットアドレス バイトには、7 ビットの I2C デバイス アドレスとメッセージがスレーブへの書き込みか ( マスターが送信、スレーブが受信 ) またはスレーブからの読み出しか ( スレーブが送信、マスターが受信 ) を定義する R/W ビットを含む必要があります。

24.5.2.2 スレーブへの 10 ビット アドレスの送信

10 ビット デバイス アドレスを送信するには、2 バイトをスレーブに送信する必要があります。最初のバイトには、10 ビット アドレッシング モードのために確保されている I2Cデバイス アドレスの 5 ビットと、10 ビット アドレスの内の 2 ビットを含みます。次のバイトには、スレーブで受信されるべき 10 ビット アドレスの残りの 8 ビットを含むため、最初のバイトの R/W ビットはマスターが送信しスレーブが受信することを意味する「0」にする必要があります。メッセージ データがスレーブに向けて送信される場合、マスターはデータの送信を続行できます。しかし、マスターがスレーブからの返信を求めている場合には、R/W ビットが「1」のリピート スタート シーケンスを出力して R/W ステータスをスレーブからの読み込みに変更します。

24.5.2.3 スレーブからのアクノレッジの読み込み

8 番目の SCLx クロックの立下りエッジで TBF ビットがクリアされ、マスター側が SDAxピンを開放して、スレーブがアクノレッジを返信出力できるようにします。その後、マスターは 9 番目の SCLx クロックを生成します。

これにより、アドレス一致が検出された場合やデータが正常に受信された場合に、スレーブ デバイスが 9 ビット目の ACK ビットで応答が返せるようにします。スレーブはデバイス アドレス(一斉呼び出しを含む)が認識された場合や、スレーブが正常にデータを受信した場合にアクノレッジを送信します。

ACK のステータスが、アクノレッジ ステータス ビット ACKSTAT (I2CxSTAT<15>) に、9番目の SCLx クロックの立下りエッジで書き込まれます。9 番目の SCLx クロックの後、モジュールは MI2CxIF 割り込みを生成し、次のデータ バイトが I2CxTRN にロードされるまでアイドル状態になります。

24.5.2.4 ACKSTAT ステータス フラグ

ACKSTAT ビット (I2CxSTAT<15>) はスレーブがアクノレッジ (ACK = 0) を送信するとクリアされ、スレーブがアクノレッジしないと (ACK = 1) セットされます。

24.5.2.5 TBF ステータス フラグ

送信時に CPU が I2CxTRN に書き込みを行うと TBF ビット (I2CxSTAT<0>) がセットされ、すべての 8 ビットがシフト出力されるとクリアされます。

24.5.2.6 IWCOL ステータス フラグ

送信がすでに進行中 ( モジュールはデータ バイトをシフト出力中 ) にソフトウェアがI2CxTRN に書き込むと、IWCOL がセットされ送信バッファの内容は変更されません ( 書き込みは発生しません )。IWCOL はソフトウェアでクリアする必要があります。

注 : イベントのキューが許可されていないため、I2CxCON の下位 5 ビットへの書き込みは送信条件が完了するまで無効です。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-17

Page 18: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

図 24-8: マスター送信タイミング図

24.5.3 スレーブ デバイスからのデータ受信

マスターが R/W ビットを「1」にしてスレーブ アドレスを送信したあと、スレーブ デバイスからデータを受信できます。これは受信有効化ビット RCEN(I2CCON<3>) をセットすると有効になります。これでマスター ロジックがクロック生成を開始し、SCLx の各立下りエッジの前にSDAxラインをサンプリングしてデータをI2CxRSRにシフト入力します。

SCLx クロックの 8 番目の立下りエッジの後次のようになります。

• RCEN ビットは自動的にクリアされる

• I2CxRSR の内容が I2CxRCV に転送される

• RBF フラグ ビットがセットされる

• モジュールが MI2CxIF 割り込みを発生する

CPU がバッファを読み出すと RBF フラグビットは自動的にクリアされます。ソフトウェアでデータを処理してから、アクノレッジ シーケンスを実行します。

D7 D6 D5 D4 D3 D2 D1 D0

SCLx ( マスター)

SCLx ( スレーブ )

SDAx ( マスター)

SDAx ( スレーブ )

TBF

I2CxTRN

MI2CxIF 割り込み

TBRG TBRG

5 6 7 81 2 3 4

- I2CxTRN レジスタに書き込むとマスター送信イベントが開始される。 TBF ビットがセットされる1

- ボーレート ジェネレータがスタート。I2CxTRN の MSB が SDAx を駆動する。SCLx は Low のまま 2

- ボーレート ジェネレータがタイムアウト。 SCLx が開放される。ボーレート ジェネレータが再スタート3

- ボーレート ジェネレータがタイムアウト。SCLx は Low に駆動。4

- SCLx が Low の間に、 スレーブが SCLx を Low に駆動してウェイトとする ( クロック ストレッチ )5

- マスターが SCLx を開放していれば、スレーブが開放してウェイトを終了できる。ボーレート ジェネレータが再スタート6

- SCLx クロックの 8 番目の立下りエッジで、マスターが SDAx を開放する。TBF ビットがクリアされる。7

- SCLx クロックの 9 番目の立下りエッジで、マスターが割り込み発生。 SCLx は次のイベントまで Low のまま 8スレーブが SDAx を開放。 TRSTAT ビットがクリアされる

I2C™ バス状態 (Q) (D) (Q) (A) (Q)(D) (Q)

TRSTAT

ACKSTAT

 TRSTAT ビットがセットされる

 SCLx の Low 検出で I2CxTRN の次のビットが SDAx を駆動する

スレーブが ACK/NACK を駆動する

注 : I2CxCON の下位 5 ビットは RCEN ビットをセットする前に「0」にしておく必要があります。これによりマスター ロジックは確実に非アクティブになります。

DS39702A_JP - ページ 24-18 Advance Information © 2007 Microchip Technology Inc.

Page 19: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.5.3.1 RBF ステータス フラグ

データ受信時に、デバイス アドレスまたはデータ バイトが I2CxRSR から I2CxRCV にロードされると RBF ビットがセットされます。ソフトウェアが I2CxRCV レジスタを読み出すとクリアされます。

24.5.3.2 I2COV ステータス フラグ

RBF ビットがセットされたままで前のバイトが I2CxRCV レジスタに残った状態で他のバイトが I2CxRSR に受信されると、I2COV ビットがセットされ I2CxRSR 内のデータは失われます。

I2COV をセットしたままにすれば他のバイト受信は禁止されません。I2CxRCV を読み出すことで RBF がクリアされ、I2CxRSR が他のバイトを受信すると、受信バイトは I2CxRCVに転送されます。

24.5.3.3 IWCOL ステータス フラグ

受信進行中 (I2CxRSR はまだデータ バイトをシフト入力中)にソフトウェアが I2CxTRNに書き込むと、IWCOL がセットされ、送信バッファの内容は変更されません ( 書き込みは発生しません )。

図 24-9: マスター受信タイミング図

注 : イベントのキューが許可されていないため、I2CxCON の下位 5 ビットへの書き込みは受信条件が完了するまで無効です。

D7 D6 D5 D4 D3 D2 D1 D0

SCLx ( マスター)

SCLx ( スレーブ )

SDAx ( スレーブ )

SDAx ( マスター)

RBF

I2C™ バス状態

MI2CxIF 割り込み

TBRG

5 62 3 4

- RCEN ビットに書き込むとマスター受信イベントが始まる。 ボーレート ジェネレータがスタート。 SCLx は Low のまま2

- ボーレート ジェネレータがタイムアウトする。マスターが SCLx を開放しようとする 3

- スレーブが SCLx を開放するとボーレート ジェネレータが再スタートする4

- ボーレート ジェネレータがタイム アウトする。応答の MSB が I2CxRSR にシフトされる。5

- SCLx クロックの 8 番目の立下りエッジで I2CxRSR から I2CxRCV に転送される。モジュールが RCEN ビットをクリア 6

TBRG

RCEN

(D) (Q) (Q)(D)(Q)

I2CxRCV

RBF ビットがセットされる。マスターが割り込みを発生

(Q)

1

- 通常スレーブは SCLx を Low( クロック ストレッチ ) にしデータ応答の準備を待つよう要求する 1スレーブは準備が完了したら SDAx にデータ応答の MSB を駆動する

(Q)

 次のボー インターバルのため SCLx を Low に駆動する

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-19

Page 20: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.5.4 アクノレッジ 生成

アクノレッジ有効化ビット ACKEN(I2CCON<4>) をセットすると、マスターがアクノレッジ シーケンスの生成が有効化されます。

図 24-10 に ACK シーケンスを示し、図 24-11 に NACK シーケンスを示します。アクノレッジ データ ビット ACKDT (I2CxCON<5>) は、ACK または NACK を指定します。

2 つのボー周期後、ACKEN ビットが自動的にクリアされ、モジュールは MI2CxIF 割り込みを発生します。

24.5.4.1 IWCOL ステータス フラグ

アクノレッジ シーケンス進行中にソフトウェアが I2CxTRN に書き込むと、IWCOL がセットされバッファの内容は変更されません(書き込みは実行されません)。

図 24-10: マスター アクノレッジ (ACK) タイミング図

図 24-11: マスターの非アクノレッジ (NACK) タイミング図

注 : I2CxCON の下位 5 ビットは ACKEN ビットをセットする前に「0」(マスターロジック非アクティブ)にして下さい。

注 : イベントのキューが許可されていないため、I2CxCON の下位 5 ビットへの書き込みはアクノレッジ条件が完了するまで無効です。

SCLx ( マスター)

SDAx ( マスター)

ACKEN

MI2CxIF 割り込み

TBRG

1 2 3

ACKEN = 1としてマスターのアクノレッジ イベントを起動 1

TBRG

- ACKDT = 0を書き込んで ACK 送信を指定

- SCLx の Low を検出するとモジュールが SDAx を Low に駆動する 2

- ボーレート ジェネレータがタイムアウト3

- ボーレート ジェネレータがタイムアウト。 4

I2C™ バス状態 (A) (Q)(Q)

4

ボーレート ジェネレータ スタート。 SCLx は Low のまま

モジュールが SCLx を Low に駆動し、そして SDAx を開放

モジュールが ACKEN をクリア。マスターが割り込みを生成

(Q)

ACKDT = 0

モジュールは SCLx を開放。ボーレート ジェネレータ再スタート

SCLx ( マスター)

SDAx ( マスター)

ACKEN

MI2CxIF 割り込み

TBRG

1 2 3

ACKEN = 1としてマスターのアクノレッジ イベントを起動 1

TBRG

-ACKDT = 1を書き込んで NACK 送信を指定

- SCLx の Low を検出するとモジュールが SDAx を開放2

- ボーレート ジェネレータがタイムアウト 3

- ボーレート ジェネレータがタイムアウト4

I2C™ バス状態 (A) (I)(Q)

4

モジュールは SCLx を開放。ボーレート ジェネレータ再スタート

ボーレート ジェネレータ スタート

モジュールが SCLx を Low に駆動し、そして SDAx を開放

モジュールが ACKEN をクリア。マスターが割り込みを生成

ACKDT = 1

DS39702A_JP - ページ 24-20 Advance Information © 2007 Microchip Technology Inc.

Page 21: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.5.5 ストップ バス イベントの生成

ストップ有効化ビット PEN (I2CxCON<2>) をセットするとマスターのストップ イベント生成が有効化されます。.

PEN ビットがセットされると、マスターは図 24-12 に示すように次のようなストップ シーケンスを生成します。

• スレーブがストップ条件を検出すると、P ビット (I2CxSTAT<4>) がセットされ S ビット (I2CxSTAT<3>) がクリアされる

• PEN ビットは自動的にクリアされる

• モジュールは MI2CxIF 割り込みを発生する

24.5.5.1 IWCOL ステータス フラグ

ストップ シーケンス進行中にソフトウェアで I2CxTRNに書き込むとIWCOLビットがセットされ、バッファの内容は変更されません ( 書き込みは行われません )。

図 24-12: マスターのストップ タイミング図

注 : I2CxCON の下位 5 ビットは PEN ビットをセットする前に「0」(マスターロジック非アクティブ)にする必要があります。

注 : イベントのキューが許可されていないため、I2CxCON の下位 5 ビットへの書き込みはストップ条件が完了するまで無効です。

SCLx ( マスター)

SDAx ( マスター)

S

PEN

MI2CxIF 割り込み

TBRG

1 2 3 5

- PEN = 1の書き込みでマスターがストップイベントを開始 1

TBRG

ボーレート ジェネレータがスタート

- ボーレート ジェネレータがタイム アウト 2モジュールは SCLx を開放。ボーレート ジェネレータ

- ボーレート ジェネレータがタイム アウト3

- スレーブ ロジックがストップを検出4

I2C™ バス状態 (I)

P

TBRG

(Q)

4

モジュールは SDAx を開放。ボーレート ジェネレータ再開

- ボーレート ジェネレータがタイム アウト5モジュールが PEN をクリア。マスターが割り込みを生成

(Q) (P) モジュールが SDAx を Low に駆動する

モジュールは P = 1、 S = 0にセット

再スタート

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-21

Page 22: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.5.6 リピートスタート バス イベントの生成

リピート スタート有効化ビット RSEN (I2CxCON<1>) をセットすると、マスターのリピート スタート シーケンス生成が有効化されます。( 図 24-13 参照 ).

リピート スタート条件を生成するため、ソフトウェアはRSEN ビット (I2CCON<1>) をセットします。モジュールが SCLx ピンを Low にします。モジュールが SCLx ピンの Low をサンプルすると、モジュールは 1 ボーレート カウント (TBRG) だけ SDAx ピンを開放します。ボーレート ジェネレータがタイム アウトになり、モジュールが SDAx で High をサンプルしている場合、モジュールは SCLx ピンを開放します。モジュールが SCLx ピンで Highをでサンプルしている場合、ボーレート ジェネレータはリロードを行いカウントを開始します。1TBRG 期間、SDAx と SCLx が High でサンプルされる必要があります。この動作の後、SCLx が High の間に 1TBRG 周期だけ SDAx ピンを Low にします。

次がリピート スタート シーケンスです。

• スレーブがスタート条件を検出すると S ビット (I2CxSTAT<3>) がセットされ、P ビット (I2CxSTAT<4>) がクリアされる

• RSEN ビットは自動的にクリアされる

• モジュールは MI2CxIF 割り込みを発生する

24.5.6.1 IWCOL ステータス フラグ

リピート スタート シーケンスが進行中に、ソフトウェアでI2CxTRNに書き込むと、IWCOLがセットされ、バッファは変更されません ( 書き込みは行われません )。

図 24-13: マスター リピート スタートタイミング図

注 : I2CxCON の下位 5 ビットは RSEN ビットをセットする前に「0」(マスターロジック非アクティブ)にして下さい。

注 : イベントのキューが許可されていないため、I2CxCON の下位 5 ビットへの書き込みはリピート スタート条件が完了するまで無効です。

SCLx ( マスター)

SDAx ( マスター)

S

RSEN

MI2CxIF 割り込み

TBRG

1 2 3 5

- RSEN = 1としてマスターのリピート スタート イベント開始 1

TBRG

ボーレート ジェネレータをスタート

- ボーレート ジェネレータがタイム アウト2

- ボーレート ジェネレータがタイム アウト3

- スレーブ ロジックがスタートを検出4

I2C™ バス状態 (Q)

P

TBRG

(Q)

4

- ボーレート ジェネレータがタイム アウト5

(Q) (S) モジュールは SCLx を Low に駆動し SDAx を開放する

ボーレート ジェネレータ再スタート

モジュールは SCLx を開放

ボーレート ジェネレータ再スタート モジュールは SDAx を Low に駆動する

モジュールは S = 1、 P = 0にセット

モジュールは RSEN をクリア、マスターが割り込みを生成

モジュールは SCLx を Low に駆動する

DS39702A_JP - ページ 24-22 Advance Information © 2007 Microchip Technology Inc.

Page 23: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.5.7 完全な マスター メッセージの構築

24.5 章 「単一マスタ環境でマスターとして通信」の冒頭で述べたように、ソフトウェアには正しいメッセージ プロトコルでメッセージを構築する役割があります。モジュールは I2C メッセージ プロトコルの独立した各部分を制御しますが、完全なメッセージを構築するためにプロトコルの構成要素を整列させるのはソフトウェアの役割になります。

ソフトウェアはモジュール使用中にポーリングまたは割り込み手法を使用できます。次の例では割り込みが使用されています。

ソフトウェアは SEN、RSEN、PEN、RCEN および ACKEN ビット (I2CC0N レジスタの下位 5 ビット ) を使用でき、メッセージ処理中に TRSTAT ビットを「状態」フラグとして使用できます。例えば、 表 24-2 はバス状態に関するいくつかのステータス番号例を示しています。

表 24-2: マスターのメッセージ プロトコル ステート

ソフトウェアはスタート コマンド発行によりメッセージを開始します。ソフトウェアはスタートに対応するステート番号を記録します。

各イベントが完了し割り込みが生成されるごとに割り込みハンドラがステート番号をチェックします。そのため、スタート状態では、割り込みハンドラがスタート シーケンス実行を確認し、マスター送信イベントを開始して I2C デバイス アドレスを送信します。この時、ステート番号はマスター送信に対応するものに変更されます。

次の割り込みでは、割り込みハンドラは再度ステートをチェックし、マスター送信が完了していることを確認します。割り込みハンドラは、データ送信が正常に完了していることを確認すると、メッセージの内容に従って次のイベントに移行します。このようにして、割り込みが発生するたびに割り込みハンドラがメッセージ プロトコルをメッセージ送信の正常な完了まで進めます。

図 24-14 は図 24-6 と同じメッセージ シーケンスをさらに詳しく解説したものです。図24-15 は 7 ビット アドレス フォーマットを使用したメッセージの簡単な例です。図 24-16はスレーブへの10 ビット アドレス フォーマット メッセージ送信データの例を示しています。図 24-17 はスレーブからの 10 ビット アドレス フォーマット メッセージ受信データの例を示しています。

ステート番号 I2CxCON<4:0> TRSTAT(I2CxSTAT<14>) ステート

0 00000 0 バス アイドルまたはウェイト

1 00001 N/A スタート イベント送信中

2 00000 1 マスター送信中

3 00010 N/A リピート スタートイベント送信中

4 00100 N/A ストップ イベント送信中

5 01000 N/A マスター受信中

6 10000 N/A マスター応答中

注 : ステート番号は参照用のみです。ユーザー ソフトウェアで任意に設定して下さい。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-23

Page 24: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39702A_JP

-page 24-24©

2007 Microchip Technology Inc.

9

A

1 2 3 4 5 6 7 8

D3 D2 D1 D0D7 D6 D5 D4

9

N

7 8 9

マスター送信開始。データはシリアル EEPROM

ター受信開始。割り込みでソフトウェアにより

ノレッジ イベント開始。 ACKDT = 0で NACK 送信

ー ストップ イベント開始

、R/W ビットをセットして読み出しを示す

これで RBF フラグがクリアされる

図 24-14: マスター メッセージ ( 典型的な I2C™ メッセージ : シリアル EEPROM からの読み出し )

1 - SEN ビットをセットしてスタート イベント開始

AKDT

ACKEN

SEN

SCLx

SDAx

SCLx

SDAx

I2CxTRN

TBF

I2CxRCV

RBF

MI2CxIF

ACKSTAT

1 2 3 4 5 6 7 8

A1 A0

9

A

PEN

RCEN

1 2 3 4 5 6 7 8

A11

A10

A9 A8

1 2 3 4 5 6 7 8 9

W1 1

RSEN

1 2 3 4 5 6 7 8 9

1 32

AA

4 5

2 - I2CxTRN レジスタに書き込んでマスター送信開始。データはシリアル

3 - I2CxTRN レジスタに書き込んでマスター送信開始。

4 -

5

- I2CxTRN レジスタに書き込んで6

- RCEN ビットをセットしてマス7

9

- ACKEN ビットをセットしてアク

- PEN ビットをセットしてマスタ

EEPROM デバイス アドレス バイトで R/W はクリアで書き込みを示す

データは EEPROM のデータ アドレスの最初のバイト

のデバイス アドレス バイトで

I2CxRCV レジスタを読み出す、

0 0 A2 A7 A6 A5 A4 A2 A1 A0 A1 A0 R1 10 0 A20 0 0 0

6

- I2CxTRN レジスタに書き込んでマスタ送信開始。

8

- RSEN ビットをセットしてリピート スタート イベント開始

( マスター)

( マスター)

( スレーブ )

( スレーブ )

A3

MI2CxIF はユーザー ソフトウェアでクリア

データは EEPROM のデータ アドレスの 2つ目のバイト

Page 25: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第24

章 

Inter-Integrated Circuit (I 2C

)

© 2007 M

icrochip Technology Inc.A

dvance Information

DS

39702A_JP

-page 24-25

1 2 3 4 5 6 7 8

D3 D2 D1 D0D7 D6 D5 D4

9

N

97 8

ター送信開始。データは

受信開始

ッジ イベント開始。 ACKDT = 0で NACK 送信

トップ イベント開始

ット

Inter-IntegratedCircuit (I2C) 24

24-15: マスターのメッセージ (7 ビット アドレス : 送信と受信 )

1 - SEN ビットをセットしてスタート イベント開始

AKDT

ACKEN

SEN

SCLx

SDAx

SCLx

SDAx

I2CxTRN

TBF

I2CxRCV

RBF

MI2CxIF

ACKSTAT

1 2 3 4 5 6 7 8

A2 A1

9

A

PEN

RCEN

1 2 3 4 5 6 7 8

D7 D6 D5 D4 D3 D2 D1 D0

1 2 3 4 5 6 7 8 9

W

RSEN

1 32

9

A

4 5 6

2 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

3 - I2CxTRN レジスタに書き込んでマスター送信開始。データはメッセージ

4 - PEN ビットをセットしてマスター ストップ イベント開始

5 - SEN ビットをセットしてスタート イベント開始

6 - I2CxTRN レジスタに書き込んでマス

7 - RCEN ビットをセットしてマスター

8 - ACKEN ビットをセットしてアクノレ

- PEN ビットをセットしてマスター ス

アドレス バイトで R/W ビットはクリア

バイト

A7 A6 A5 A4 A3

A

A2 A1 RA7 A6 A5 A4 A3

アドレス バイトで R/W ビットはセ

9

( マスター)

( マスター)

( スレーブ )

( スレーブ )

MI2CxIF はユーザー ソフトウェアでクリア

Page 26: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39702A_JP

-page 24-26©

2007 Microchip Technology Inc.

1 2 3 4 5 6 7 8 9

6 7

ー ストップ イベント開始

D3 D2 D1 D0D7 D6 D5 D4

A

マスター送信開始。データはイト

マスター送信開始。データはイト

図 24-16: マスター メッセージ (10 ビット送信 )

1 - SEN ビットをセットしてスタート イベント開始

AKDT

ACKEN

SEN

SCLx

SDAx

SCLx

SDAx

I2CxTRN

TBF

I2CxRCV

RBF

MI2CxIF

ACKSTAT

1 2 3 4 5 6 7 8

A9 A8

9

A

PEN

RCEN

1 2 3 4 5 6 7 8

D3 D2 D1 D0D7 D6 D5 D4A7 A6 A5 A4 A3 A2 A1 A0

1 2 3 4 5 6 7 8 9

W01 1 1 1

RSEN

1 2 3 4 5 6 7 8 9

1 32

9

AAA

4 5

2 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

3 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

4 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

- PEN ビットをセットしてマスタ

アドレスの最初のバイト

アドレスの 2 番目のバイト

メッセージ データの最初のバイト

D3 D2 D1 D0D7 D6 D5 D4

5 - I2CxTRN レジスタに書き込んでメッセージ データの 2 番目のバ

6 - I2CxTRN レジスタに書き込んでメッセージ データの 3 番目のバ

7

( マスター)

( マスター)

( スレーブ )

( スレーブ )

MI2CxIF はユーザー ソフトウェアでクリア

Page 27: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第24

章 

Inter-Integrated Circuit (I 2C

)

© 2007 M

icrochip Technology Inc.A

dvance Information

DS

39702A_JP

-page 24-27

1 2 3 4 5 6 7 8

D3 D2 D1 D0D7 D6 D5 D4

9

N

8 9 10

受信開始。割り込みでソフトウェアにより

ッジ イベント開始。ACKDT = 1で ACK 送信

受信開始

ッジ イベント開始。ACKDT = 0で NACK 送信

トップ イベント開始

F フラグがクリアされる

Inter-IntegratedCircuit (I2C) 24

24-17: マスター メッセージ (10 ビット受信 )

1 - SEN ビットをセットしてスタート イベント開始

AKDT

ACKEN

SEN

SCLx

SDAx

SCLx

SDAx

I2CxTRN

TBF

I2CxRCV

RBF

MI2CxIF

ACKSTAT

1 2 3 4 5 6 7 8

A9 A8

9

A

PEN

RCEN

1 2 3 4 5 6 7 8

D3 D2 D1 D0D7 D6 D5 D4

A7 A6 A5 A4 A3 A2 A1 A0

1 2 3 4 5 6 7 8 9

W01 1 1 1

RSEN

A9 A801 1 1 1 R

1 2 3 4 5 6 7 8 9

1 32

9

A

AA

4 5 6 7

2 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

3 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

4 - RSEN ビットをセットしてマスター リピート スタート イベント開始

5 - I2CxTRN レジスタに書き込んでマスター送信開始。データは

6 - RCEN ビットをセットしてマスター

7 - ACKEN ビットをセットしてアクノレ

8 - RCEN ビットをセットしてマスター

9 - ACKEN ビットをセットしてアクノレ

- PEN ビットをセットしてマスター ス

アドレスの最初のバイトで R/W ビットはクリア

アドレスの 2 番目のバイト

最初のバイトの再送で、R/W ビットはセット

I2CxRCV レジスタを読み出すと RB

( スレーブ )

( スレーブ )

( マスター)

( マスター)

MI2CxIF はユーザー ソフトウェアでクリア

10

Page 28: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.6 マルチマスター環境でマスターとして通信

I2C プロトコルでは 1 つ以上のマスターをシステム バスに接続することが許されています。マスターはメッセージ処理を開始しバスにクロックを生成できますが、プロトコルは複数のマスターがバスを制御する状況を考慮した方式となっています。クロック同期により、SCLx ラインに出力される 1 つの共通クロックに複数のノードが同期して動作するようになっています。バス調停により複数のノードが同時にメッセージ転送をしようとしたとき、1 つのノードだけが転送を完了できるようにします。他のノードはバス調停権を失い、バス衝突発生として待たされます。

24.6.1 マルチマスター動作

マスター モジュールはマルチマスター動作を有効とするために特殊な設定を必要としません。モジュールはクロック同期とバス調停を常に実行しています。モジュールがシングル マスター環境で使用されている場合、クロック同期はマスターとスレーブの間でのみ発生し、バス調停は発生しません。

24.6.2 マスター クロックの 同期

マルチマスター システムでは、異なるマスターは異なるボーレートを持っている場合があります。クロック同期により、これらのマスターがバス調停を試みる場合にそのクロックに合わせて動作します。

クロック同期はマスターが SCLx ピンを開放したときに行われます (SCLx はフロートでHigh になります )。SCLx ピンが開放されると、ボーレート ジェネレータ (BRG) は SCLxピンが実際に High でサンプルされるまでカウントを停止します。SCLx ピンが High でサンプルされると、ボーレート ジェネレータには I2CxBRG<8:0> の内容がリロードされカウントを開始します。これにより、図 24-18 で示す通り、SCLx の High 時間は、外部デバイスによりクロックをLowに保持できるイベントにおいて、常に少なくとも1 つのBRGロールオーバー カウント時間となります。

図 24-18: クロック同期ありのボーレート ジェネレータのタイミング

SCLx( スレーブ )

- ボー カウンタは TCY ごとに 2 ずつ減る。ロール オーバーでマスター SCLx が遷移する1

1

000 003001002003

SCLx ( マスター )

001002003000ボー カウンタ

SDAx ( マスター )

3 4 6

- スレーブが SCLx を Low にしてウェイトを開始2

- マスター ボーカウンタがロール オーバーするとき SCLx で Low を検知するとカウンタが一時停止3

- ロジックが TCY ごとに SCLx をサンプルする。ここでロジックが SCLx の High を検知4

2

- ボー カウンタのロール オーバーが次のサイクルで起きる5

5

- 次のロール オーバーでマスターの SCLx が遷移する6

TBRG TBRG

TCY

000

DS39702A_JP - ページ 24-28 Advance Information © 2007 Microchip Technology Inc.

Page 29: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.6.3 バス調停とバス衝突

バス調停によりマルチマスター システム動作をサポートします。

SDAx ラインのワイアード AND 機能により調停が可能になります。調停は、1 番目のマスタが SDAx に「1」を出力してフロート High の状態にしようとしたとき、同時に 2 番目のマスタが SDAx を Low に引っ張ることで、SDAx に「0」を出力しようとしたときに実行されます。SDAx 信号は Low になります。このケースでは、2 番目のマスターがバス調停権を獲得します。1 番目のマスターはバス調停権を失いバス衝突となります。

1 番目のマスターでは SDAx の期待データは「1」ですが、SDAx でサンプルされるデータは「0」となります。これがバス衝突の定義となります。

1 番目のマスターはバス衝突ビット BCL (I2CxSTAT<10>) をセットし、マスター割り込みを生成します。マスター モジュールが I2C ポートをアイドル状態にリセットします。

マルチマスター動作では、調停のために SDAx ラインの信号レベルが期待される出力レベルとなっているかどうかをモニターする必要があります。この確認はマスター モジュールで実行され、結果は BCL ビットに置かれます。

調停が失われる場合は次の通りです。

• スタート条件 • リピート スタート条件

• アドレス、データ、アクノレッジ ビット

• ストップ条件

24.6.4 バス衝突検出とメッセージ再送

バス衝突が発生すると、モジュールは BCL ビットをセットしマスター割り込みを生成します。バイト送信中にバス衝突が発生した場合、送信は停止され TBF フラグがクリアされて SDAx ピンと SCLx ピンが開放されます。スタート、リピート スタート、ストップ またはアクノレッジ条件中にバス衝突が発生した場合、その条件は破棄され、I2CCON レジスタ内の関連する各制御ビットがクリアされて SDAx と SCLx ラインが開放されます。

ソフトウェアはマスター イベント完了時の割り込みを待っています。ソフトウェアはBCLビットをチェックしてマスター イベントが正常に完了したか、衝突が発生したかを確認します。衝突が発生した場合、ソフトウェアは保留中の残りのメッセージ送信を中止し、バスがアイドル状態に戻った後にスタート条件から始まる完全なメッセージ シーケンスを再送信する準備をします。ソフトウェアは S ビットと P ビットをモニターしてバス アイドルを待ちます。ソフトウェアがマスター割り込みサービス ルーチンを実行し、I2C バスがフリーの場合、ソフトウェアはスタート条件を出力して通信を再開できます。

24.6.5 スタート条件中のバス衝突

スタート コマンドを発行する前に、ソフトウェアは S と P ステータス ビットを使用してバスのアイドル状態を確認する必要があります。2 つのマスターがほぼ同時にメッセージ開始を試みている可能性があります。通常、このマスターはクロックを同期させ、一方が調停権を失うまでメッセージの調停を続行します。ただし、ある条件によりスタート中にバス衝突が発生することがあります。この場合、スタート ビット中に調停権を失ったマスターはバス衝突割り込みを発生します。

24.6.6 リピート スタート条件中のバス衝突

2 つのマスターがアドレス バイトで衝突を起こさなかったとしても、一方がデータを送信している間にもう一方がリピート スタートの出力を試みるとバス衝突が発生する可能性があります。この場合、リピート スタートを生成したマスターが調停権を失い、バス衝突割り込みを生成します。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-29

Page 30: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.6.7 メッセージ ビット転送中のバス衝突

最も一般的なデータ衝突はマスターがデバイス アドレス バイト、データ バイト、またはアクノレッジ ビットの送信中に発生します。

ソフトウェアが適切にバスの状態をチェックしていれば、スタート条件でバス衝突が発生することはほとんどありません。ただし、他のマスターがほぼ同時にバスをチェックしスタート条件を開始している場合、SDAx 調停が発生して 2 つのマスターのスタートが同期することがあります。この条件では、両方のマスターがメッセージの送信を開始し、他方のマスターがメッセージ ビットの調停を失うまでこれが続行されます。SCLx クロック同期は一方が調停権を失うまで 2 つのマスターを同期させることを思い出して下さい。図24-19 はメッセージ ビット調停の例を示します。

図 24-19: メッセージ ビット転送中のバス衝突

24.6.8 ストップ条件中のバス衝突

マスター ソフトウェアが I2C バスの状態の追跡を失った場合、ストップ条件中にバス衝突を起こす条件となります。この場合、ストップ条件を生成したマスターが調停権を失い、バス衝突割り込みを生成します。

SCLx ( マスター)

SDAx ( マスター)

TBF

TBRG

1 2 3

- マスターは次の SCLx クロックで値「1」のビットを送信1TBRG

モジュールは SDAx を開放

- バス上の別のマスターが次の SCLx クロックで値「0」の2ビットを送信。別のマスターが SDAx を Low にする

- ボーレート ジェネレータがタイム アウト。モジュールは3

I2C™ バス状態

BCL

(D)

SCLx ( バス )

SDAx ( バス )

SDAx が High かを確認する。バス衝突が検出される。モジュールは SDAx, SCLx、を開放。モジュールが BCLビットをセット、TBF ビットをクリアする。

(D)(Q)(Q) (Q)

MI2CxIF 割り込み

マスターが割り込みを生成する

DS39702A_JP - ページ 24-30 Advance Information © 2007 Microchip Technology Inc.

Page 31: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.7 スレーブとして通信

複数のシステム、特にマルチ プロセッサが相互に通信を行うシステムでは、PIC24F デバイスはスレーブとして通信を行います(図 24-20 参照)。モジュールが有効化されると、スレーブ モジュールがアクティブになります。スレーブはメッセージを開始できないため、マスターにより開始されたメッセージ シーケンスに応答するのみです。マスターは I2C プロトコル内でデバイス アドレス バイトにより定義された特定のスレーブからの応答を要求します。スレーブ モジュールはプロトコルにより定義された適切な時間にマスターに応答します。

マスター モジュールでは、応答のためのプロトコルのシーケンス組み立てはソフトウェアのタスクです。ただし、スレーブ モジュールがソフトウェアによってそのスレーブ用に指定されたアドレスとデバイス アドレスとの一致を検出します。

図 24-20: 典型的なスレーブ I2C™ メッセージ : マルチ プロセッサのコマンド / ステータス

スタート条件の後、スレーブ モジュールはデバイス アドレスを受信、チェックします。スレーブは 7 ビット アドレスまたは 10 ビット アドレスを指定します。デバイス アドレスが一致した場合、モジュールはソフトウェアにそのデバイスが選択された旨を通知するため割り込みを生成します。マスターより送信された R/W ビットに基づき、スレーブはデータを受信または送信します。スレーブがデータを受信した場合、スレーブ モジュールは自動的にアクノレッジ (ACK)を生成し、 I2CxRSRレジスタにある受信済みデータをI2CxRCVレジスタに転送してから、割り込みによってソフトウェアにこれを通知します。スレーブがデータを送信する場合、ソフトウェアは I2CxTRN レジスタにロードする必要があります。

24.7.1 受信データのサンプリング

すべての受信ビットは、クロック (SCLx) ラインの立ち上がりエッジでサンプリングされます。.

24.7.2 スタートとストップ条件の検出

スレーブ モジュールはスタート条件とストップ条件をバス上で検出し、その状態を S ビット (I2CxSTAT<3>) と P ビット (I2CxSTAT<4>) で示します。スタート (S) とストップ (P) ビットはリセットが発生するか、モジュールが無効化されるとクリアされます。スタートまたはリピート スタート イベント検出後、S ビットがセットされ P ビットがクリアされます。ストップ イベント検出後、P ビットがセットされ S ビットがクリアされます。

24.7.3 アドレスの検出

モジュールが有効化されていると、スレーブ モジュールはスタート条件が発生するまで待機します。スタート条件後、A10M ビット (I2CxCON<10>) によって、スレーブは 7 ビットまたは 10 ビット アドレスの検出を試みます。スレーブ モジュールは 7 ビット アドレスのときは 1 つの受信バイトと比較し、10 ビット アドレスのときは 2 つの受信バイトと比較します。7 ビット アドレスの中には、アドレスのあとにデータ転送の方向を指定する R/Wビットが含まれています。R/W = 0 の場合、書き込みモードが指定され、スレーブはマスターからデータを受信します。R/W = 1 の場合、読み込みモードが指定され、スレーブはマスターにデータを送信します。10 ビット アドレスは R/W ビットを含みますが、スレーブが 10 ビットアドレスの 2 番目のバイトを受信しなくてはならないため、常に R/W = 0になっています。

バス

マスターSDAx

スタート アドレス

1バイト目 アドレスバイト

S 1 1 1 0 A A 09 8 R P

スレーブSDAx

動作

N

AAAA

出力

出力

R/W

ACK

ACK

ACK

リピート

R/W

ACK

NAC

Kストップ

1

アドレス2バイト目

A A7 6

A A5 4

A A3 2

A A1 0

コマンドデータバイト

1 1 1 0 A A 19 81

ステータスデータバイト

10 ビットアドレス

R

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-31

Page 32: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.7.3.1 スレーブ アドレスのマスキング

I2CxMSK レジスタは、10 ビットと 7 ビットの両アドレス モードで、アドレス ビット位置をマスクし、それらを「関知しない ( 無視する )」ビットとして指定します。I2CxMSK レジスタのビットがセット (= 1) されると、スレーブ モジュールはアドレスの対応する位置のビットが「0」か「1」に関係なく応答します。例えば、7 ビット スレーブ モードで、I2CxMSK = 0100000の場合には、モジュールは「0000000」と「0100000」を有効アドレスとしてアクノレッジします。

アドレス マスクを有効にするには、IPMIEN ビット (I2CxCON<11>) をクリアして IPMI(Intelligent Peripheral Management Interface) を無効にする必要があります。

24.7.3.2 7 ビット アドレスでスレーブ書き込み

スタート条件に続いて、モジュールは 8 ビットを I2CxRSR レジスタにシフトします( 図 24-21 参照)。レジスタ I2CxRSR<7:1> の値は I2CxADD<6:0> と I2CxMSK<6:0> レジスタの値に対して 8 番目のクロック(SCLx)の立下りエッジで評価されます。アドレスが有効な場合 ( つまり、マスクされていないビット位置が正確に一致する場合 ) には、次のイベントが発生します

1. ACK が生成される

2. D/A と R/W ビットがクリアされる

3. モジュールは SCLx クロックの 9 番目の立下りエッジで SI2CxIF 割り込みを生成する

4. モジュールはマスターのデータ送信を待つ

図 24-21: スレーブ書き込みで 7 ビット アドレスを 検出する場合のタイミング図

24.7.3.3 7 ビット アドレスでスレーブ読み出し

7 ビット アドレス バイトで R/W = 1 となりスレーブ読み出しが指定されている場合、デバイス アドレスの検出プロセスはスレーブ書き込みと同じです( 図 24-22 参照)。アドレスが一致すると以下のイベントが発生します

1. ACK が生成される

2. D/A ビットがクリアされ R/W ビットがセットされる

3. モジュールは 9 番目の SCLx クロックの立下りエッジで SI2CxIF 割り込みを生成する

スレーブ モジュールはこの時点でデータを返信するよう要求されるため、I2C バスの動作を中止しソフトウェアで応答する準備をする必要があります。この動作はモジュールがSCLREL ビットをクリアすることで自動的に実行されます。SCLREL が Low の場合、スレーブ モジュールは SCLx クロック ラインをプル ダウンして、I2C バスを待機状態とします。スレーブ モジュールと I2C バスは、ソフトウェアが I2CxTRN レジスタに応答データを書き込み、SCLREL ビットをセットするまでこの状態を保ちます。

SCLx ( マスター)

SDAx ( マスター)

SDAx ( スレーブ )

SI2CxIF 割り込み

3 41 2

- スタート ビットの検出で1

I2C™ バス状態 (D) (D) (A)(D)

A5A6A7 A4 A3 A2 A1

D/A

ADD10

SCLREL

R/W

アドレス検出有効化

- R/W = 0 はスレーブの2データ バイト受信を示す

- 最初のアドレス バイトが有効なら 3D/A ビットをクリア。スレーブが

- R/W ビットがクリア。スレーブが4割り込み生成

5

- バス待ち。スレーブは受信データ5待ち OK となる

R/W = 0

(S) (Q)

ACK 生成

注 : スレーブ読み込みアドレスが検出されると、STREN ビットの状態に関わらず、SCLREL は自動的にクリアされます。

DS39702A_JP - ページ 24-32 Advance Information © 2007 Microchip Technology Inc.

Page 33: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

図 24-22: スレーブ読み出しで 7 ビット アドレスを検出する場合のタイミング図

24.7.3.4 10 ビット アドレッシング モード

10 ビット アドレス モードでは、スレーブは 2 つのデバイス アドレス バイトを受信する必要があります(図 24-23 参照)。1 番目のアドレスバイトの上位 5 ビット (MSb) が 10 ビット アドレス モードであることを指定します。アドレスの R/W ビットは書き込みモードとなっており、これにより、スレーブ デバイスが 2 番目のアドレス バイトを受信します。10ビット アドレスでは、1 番目のバイトは 「11110 A9 A8 0」と等しくなり、A9 と A8 はアドレスの上位 2 ビットとなります。

I2CxMSK レジスタは、10 ビット アドレスの任意のビットをマスクできます。 I2CxMSK の2 つの MSb が最初に受信するバイトのアドレスの MSb をマスクするのに使われます。レジスタの残りのバイトは、2 回目に受信するバイトのアドレスの下位バイトのマスクに使われます。

スタート条件に続いて、モジュールは 8 ビットを I2CxRSR レジスタにシフトします。I2CxRSR<2:1> ビット の値は I2CxADD<9:8> と I2CxMSK<9:8> ビットの値に対して評価され、 I2CxRSR<7:3> ビットは「11110」と比較されます。デバイス アドレスは 8 番目のクロック(SCLx)の立下りエッジで比較されます。アドレスが有効となるためには、I2CxRSR<7:3> が「11110」に等しく、 I2CxRSR<2:1> が正確に I2CxADD<9:8> のマスクされていないビットと一致しなければなりません ( 両方のビットがマスクされていれば一致は不要 )。アドレスが有効な場合、次のイベントが発生します。

1. ACK が生成される

2. D/A と R/W ビットがクリアされる

3. モジュールは、9 番目の SCLx クロックの立下りで SI2CxIF 割り込みを生成する

 モジュールは 10 ビット アドレスの 1 番目のバイトを受信した後に割り込みを生成しますが、この割り込みはほとんど使用されません。

 モジュールは続いて 2 番目のバイトを I2CxRSR に受信します。この時、 I2CxRSR<7:0>ビットが I2CADD<7:0> および I2CxMSK<7:0> ビットに対して評価されます。アドレスの下位バイトが前述のとおり有効であると、次のイベントが発生します。

1. ACK が生成される

2. ADD10 ビットがセットされる

3. モジュールは、9 番目の SCLx クロックの立下りエッジで SI2CxIF 割り込みを生成する

4. モジュールは、マスターからの送信データかリピート スタート条件の起動を待つ

SCLx ( マスター)

SDAx ( マスター)

SDAx ( スレーブ

SI2CxIF 割り込み

3 41 2

- スタート ビットの検出で1

I2C™ バス状態 (D) (D) (A)(D)

A5A6A7 A4 A3 A2 A1

D/A

ADD10

SCLREL

R/W

アドレス検出有効化

- R/W = 1 はスレーブの2データ送信を示す

- 有効アドレスの 1 バイト目で 3D/A ビットクリア。スレーブが

- R/W ビットをセット。スレーブが4

5

- バス待ち。スレーブが送信データ5を準備

SCLx ( スレーブ )

SCLREL = 0の間スレーブが

(S) (Q)

R/W = 1

ACK を生成

割り込み生成。SCLREL をクリア。

SCLx を Low にする

注 : 10 ビット アドレス モードでのリピート スタート条件に続いて、スレーブ モジュールは 1 番目の 7 ビット アドレス「11110 A9 A8 0」だけが一致します。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-33

Page 34: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

図 24-23: 10 ビットアドレス検出のタイミング図

24.7.3.5 一斉呼び出し動作

I2C バスのアドレス手順とは、通常、スタート 条件後の 1 番目のバイトで、マスターがどのスレーブ デバイスをアドレスするかを決定します。例外は一斉呼び出しアドレスで、これはすべてのデバイスをアドレスできます。このアドレスが使用されると、すべての有効なデバイスはアクノレッジを返す必要があります。一斉呼び出しアドレスは特定の目的のために I2C プロトコルにより予約されている 8 つのアドレスのうちの 1 つです。R/W = 0ですべて「0」で構成されています。一斉呼び出しは常にスレーブ書き込み動作です。一斉呼び出しアドレスは、一斉呼び出し有効化ビット GCEN (I2CxCON<7>) がセットされると認識されます(図 24-24 参照)。スタート ビット検出に続いて、8 ビットが I2CxRSR にシフト入力され、アドレスは I2CxADD と比較されます。また、一斉呼び出しアドレスとも比較されます。一斉呼び出しアドレスと一致すると次のイベントが発生します。

1. ACK が生成される

2. スレーブ モジュールが GCSTAT ビット (I2CxSTAT<9>) をセットする 3. D/A と R/W ビットがクリアされる

4. モジュールは 9 番目の SCLx クロックの立下りエッジで SI2CxIF 割り込みを生成する

5. I2CxRSR が I2CxRCV に転送され、RBF フラグ ビットがセットされる (8 番目のビットの間に )

6. モジュールはマスターからの送信データを待つ

割り込みを処理する際、GCSTAT ビットの内容を読むことで割り込み要因のチェックができ、デバイス アドレスがデバイス特有か一斉呼び出しアドレスかが決まります。

一斉呼び出しアドレスは 7 ビットアドレスであることに注意して下さい。スレーブ モジュールが 10 ビット モードに構成されても、A10M と GCEN ビットがセットされると、スレーブ モジュールは 7 ビット一斉呼び出しアドレス検出を続行します。

SCLx ( マスター )

SDAx ( マスター )

SDAx ( スレーブ )

SI2CxIF 割り込み

2 4 51 3

- スタート ビット検出でアドレス検出有効化1

- 1 バイト目のアドレス一致で D/A ビットをクリアし、スレーブ ロジックが ACK を生成する2

- 1 バイト目受信で R/W ビット クリア。スレーブ ロジックが割り込み生成3

- 1 バイト目と 2 バイト目のアドレス一致で ADD10 がセットされ、スレーブ ロジックが ACK を生成4

- 2 バイト目受信で 10 ビット アドレス完了。スレーブ ロジックが割り込み生成5

I2C™ バス状態 (D) (D) (A)(D)

111 1 0 A9 A8R/W = 0

D/A

ADD10

SCLREL

A5A6A7 A4 A3 A2 A1 A0

R/W

(D) (D) (A)(D)

6

- バス待ち。スレーブがデータ受信準備5

(S) (Q)

DS39702A_JP - ページ 24-34 Advance Information © 2007 Microchip Technology Inc.

Page 35: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

図 24-24: 一斉呼び出しアドレス検出タイミング図 (GCEN = 1)

24.7.3.6 すべてのアドレスの受信 (IPMI 動作 )

I2C システムプロトコルによっては、スレーブがバス上のすべてのメッセージに対して動作する必要があります。例えば、IPMI(Intelligent Peripheral ManagementInterface)バスはI2C ノードを分散ネットワークのメッセージ中継器として使用します。ノードがすべてのメッセージを中継できるようにするには、スレーブ モジュールはデバイス アドレスに関わらずすべてのメッセージを受け入れる必要があります。

IPMIEN ビット(I2CxCON<11>)をセットすると IPMI モードを有効化します。図 24-25 を参照して下さい。I2CxADD レジスタにロードされている値、A10M、GCEN ビットの状態に関わらず、すべてのアドレスが受け入れられます。

図 24-25: IPMI アドレス検出タイミング図 (IPMIEN = 1)

SCLx ( マスター )

SDAx ( マスター )

SDAx ( スレーブ )

SI2CxIF 割り込み

3 41 2

- スタート ビット検出で1

I2C™ バス状態 (D) (D) (A)(D)

000 0 0 0 0

D/A

I2CRCV

RBF

R/W

アドレス検出有効化

- すべて「0」で R/W = 0は一斉2呼び出しを示す

- 有効アドレスで D/A ビット クリア3GCSTAT をセット

- R/W ビットクリア。スレーブが4割り込み生成

5

- バス待ち。スレーブがデータ 5受信準備

GCSTAT

スレーブが ACK 生成

アドレスを I2CxRCV にロード

R/W = 0

(S) (Q)

SCLx ( マスター )

SDAx ( マスター )

SDAx ( スレーブ )

SI2CxIF 割り込み

2 31

- スタート ビット検出で1

I2C™ バス状態 (D) (D) (A)(D)

D/A

I2CxRCV

RBF

R/W

アドレス検出有効化

- 内容に関わらずバイト アドレス一致2アドレス一致で D/A ビット クリア

- R/W ビットセット / クリア3スレーブが割り込み生成

4

- バス待ち 4

スレーブが ACK 生成

アドレスを I2CxRCV にロード

(S)

R/W

(Q)

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-35

Page 36: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.7.3.7 アドレスが無効のとき

7 ビット アドレスが I2CxADD<6:0> の内容と一致しない場合、スレーブ モジュールはアイドル状態に戻り、ストップ条件後までバス アクティビティをすべて無視します。

10 ビット アドレスの 1 番目のバイトが I2CxADD<9:8> の内容と一致しない場合、スレーブ モジュールはアイドル状態に戻り、ストップ条件後までバス アクティビティをすべて無視します。

10 ビット アドレスの 1 番目のバイトが I2CxADD<9:8> の内容と一致しても、2 番目のバイトが I2CxADD<7:0> と一致しない場合、スレーブ モジュールはアイドル状態に戻り、ストップ条件後までバス アクティビティをすべて無視します。

24.7.3.8 マスクされない予約されたアドレス

マスクを有効化しても、いくつかのアドレスはハードウェアでマスクから除外されます。これらのアドレスの場合は、マスク設定に関わらず、アクノレッジは発行されません。これらのアドレスを表 24-3 に示します。

表 24-3: 予約された I2C バスのアドレス (1)

24.7.4 マスター デバイスからのデータ受信

デバイス アドレス バイトの R/W ビットがゼロでアドレス一致が発生している場合、 R/Wビット(I2CxSTAT<2>)はクリアされます。スレーブ モジュールはマスターが送信するデータを待機する状態に入ります。デバイス アドレス バイトの後の、データの内容はシステム プロトコルにより定義され、スレーブ モジュールでのみ受信されます。

スレーブ モジュールは 8 ビットを I2CxRSR レジスタにシフト入力します。8 番目のクロック (SCLx) の立下りエッジで、次のイベントが発生します

1. モジュールは ACK または NACK を生成開始する

2. RBF ビットがセットされ、データ受信を示す

3. ソフトウェアがアクセスできるように I2CxRSR バイトが I2CxRCV レジスタに転送される

4. D/A ビットがセットされる

5. スレーブが割り込みが生成される。ソフトウェアでI2CxSTATレジスタの状態をチェックして、イベント要因を判定してから SI2CxIF フラグをクリアする

6. モジュールは次のデータ バイトを待つ

7 ビット アドレス モード

スレーブ アドレス R/W ビット 説 明

0000 000 0 一斉呼び出しアドレス (1)

0000 000 1 スタート バイト

0000 001 x CBUS アドレス

0000 010 x 予約

0000 011 x 予約

0000 1xx x HS モード マスター コード

1111 1xx x 予約

1111 0xx x 10 ビット スレーブ上位バイト (2)

注 1: アドレスは GCEN = 1の場合のみ認識される。

2: このアドレス一致は、10 ビットアドレス モードの上位バイトの場合のみ発生する。

DS39702A_JP - ページ 24-36 Advance Information © 2007 Microchip Technology Inc.

Page 37: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.7.4.1 アクノレッジ生成

通常、スレーブ モジュールは 9 番目の SCLx クロックで ACK を送信してすべての受信バイトにアクノレッジします。受信バッファがオーバーランを起こすと、スレーブ モジュールはこの ACK を生成しません。次の状態(両方の場合もあり)でオーバーランが示されます。

1. バッファ フルビット RBF (I2CxSTAT<1>) が転送受信前にセットされた

2. オーバー フロー ビット I2COV (I2CxSTAT<6>) が転送受信前にセットされた

表 24-4 にデータ転送バイトが受信された場合に何が起こるか、RBF ビットと I2COV ビットの状態がどうなるかを示しています。スレーブ モジュールが I2CxRCV への転送を試みる時点で RBF ビットがすでにセットされていると、転送は発生しませんが割り込みが発生し、I2COV ビットがセットされます。RBF ビットと I2COV ビットの両方がセットされた場合でも、スレーブ モジュールは同様に動作します。下表の色の付いた欄は、ソフトウェアがオーバーフロー状態を適切にクリアできなかった場合の状態を示しています。

I2CxRCV を 読み出すことで RBF ビットはクリアされます。I2COV はソフトウェアにより「0」を書き込むとクリアされます。

表 24-4: 受信バイトのデータ転送時の動作

24.7.4.2 スレーブ受信中の待ち状態

スレーブ モジュールがデータ バイトを受信すると、マスターはすぐに次のバイト送信を開始できます。これにより、スレーブを制御するソフトウェアが 9 個の SCLx クロック周期内は、受信したデータを処理できるようになります。時間が不足した場合は、スレーブソフトウェアはバス待ち期間の延長を希望します。

STREN ビット (I2CxCON<6>) を使用すると、バス待ちをスレーブ受信時に発生させられます。受信したバイトの 9 番目の SCLx クロックの立下りエッジで STREN = 1 の場合、スレーブ モジュールが SCLREL ビットをクリアします。SCLREL ビットをクリアすると、スレーブ モジュールが SCLx ラインを Low にし、待ち状態とします。マスターの SCLx クロックとスレーブの同期については、24.6.2 章 「マスター クロックの 同期」に示されています。

ソフトウェアの受信再開が可能になったら、ソフトウェアは SCLREL をセットします。これにより、スレーブ モジュールは SCLx ラインを開放し、マスターがクロッキングを再開します。

データ バイト受信の

ステータス ビットI2CxRSR から I2CxRCV への

転送

ACK 生成

SI2CxIF 割り込み

生成 ( 有効であれば

割り込み発生 )

RBFセット

I2COVセット

RBF I2COV

0 0 はい はい はい はい 変化なし

1 0 いいえ いいえ はい 変化なし はい

1 1 いいえ いいえ はい 変化なし はい

0 1 はい いいえ はい はい 変化なし

凡例 : 色つきの欄はソフトウェアでオーバー フロー条件を適切にクリアできなかった状態を示しています。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-37

Page 38: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.7.4.3 スレーブ受信のメッセージ例

スレーブ メッセージの受信はほぼ自動化されたプロセスです。ソフトウェアは、スレーブ割り込みを使用してスレーブ プロトコルを処理しイベントと同期させます。

スレーブが有効なアドレスを検出すると、関連する割り込みでソフトウェアにメッセージが来ることを通知します。データ受信後、各データ バイトは I2CxRCV レジスタに転送され、割り込みでバッファを読み出すようソフトウェアに通知します。

図 24-26 は簡単な受信メッセージを示しています。7 ビット アドレス メッセージでは、アドレス バイトに対して発生する割り込みは 1 つのみです。その後、4 つのデータ バイトのそれぞれに対し割り込みが発生します。割り込みでソフトウェアは RBF 、D/A、 R/W ビットをモニターして受信バイトの状態を決定します。

図 24-27 は 10 ビット アドレスを使用した同様のメッセージを示しています。このケースでは、アドレスに対し 2 つのバイトが必要です。

図 24-28 は ソフトウェアが受信バイトに応答せず、バッファ オーバーランが発生している例を示しています。2 番目のバイトの受信後、モジュールは自動的にマスター送信に対して NACK となります。一般的に、この場合マスターは以前のバイトを再送します。I2COVビットはバッファがオーバーランしていることを示します。I2CxRCV バッファは 1 番目のバイトの内容を保持しています。3 番目のバイト受信後、バッファはまだ満杯でモジュールは再びマスターに NACK を返します。この後、やっとソフトウェアがバッファを読み出します。バッファの読み出しにより RBF ビットはクリアされますが、I2COV ビットはセットされたままです。ソフトウェアで I2COV ビットをクリアする必要があります。次に受信されたバイトは I2CxRCV バッファに移動し、モジュールは ACK で応答します。

図 24-29 はデータ受信中のクロック延長をハイライトしています。以前の例では、STREN= 0 で、メッセージ受信中のクロック延長は無効になっていました。この例では、ソフトウェアで STREN をセットしクロック延長を有効化しています。STREN = 1 の場合、モジュールは各データ バイト受信ごとに自動的にクロックを延長し、ソフトウェアがデータをバッファから移動する時間を確保します。9 番目のクロックの立下りエッジで RBF = 1の場合は、モジュールは自動的に SCLREL ビットをクリアし、SCLx バス ラインを Low にします。2 番目の受信データ バイトで示されている通り、9 番目のクロックの立下りエッジの前に、ソフトウェアでバッファを読み出して RBF をクリアできる場合、クロック延長は発生しません。ソフトウェアはバスをいつでも一時停止できます。SCLREL ビットをクリアすると、バスの SCLx の Low を検出した後、モジュールは SCLx ラインを Low にします。SCLREL ビットがセットされるまで転送が一時停止され、SCLx ラインは Low のままとなります。

DS39702A_JP - ページ 24-38 Advance Information © 2007 Microchip Technology Inc.

Page 39: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第24

章 

Inter-Integrated Circuit (I 2C

)

© 2007 M

icrochip Technology Inc.A

dvance Information

DS

39702A_JP

-page 24-39

図 ; GCEN = 0; IPMIEN = 0)

3 5

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

4 4

す必要がある

D0

Inter-IntegratedCircuit (I2C) 24

24-26: スレーブ メッセージ ( スレーブへのデータ書き込み: 7 ビットアドレス ; アドレス一致; A10M = 0

1 - スレーブがスタート イベントを認識し、 S と P ビットをそれぞれセット / クリア

SCLx ( マスター )

SDAx ( マスター )

SCLx ( スレーブ )

SDAx ( スレーブ )

I2CxRCV

RBF

SI2CxIF

STREN

1 2 3 4 5 6 7 8

A2 A1

9

A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

1 32

A

4 3 3

2 - スレーブはアドレス バイト受信。アドレス一致。スレーブがアクノレッジし、割り込み生成

3 - 次の受信バイトはメッセージ データ。バイトは I2CxRCV レジスタに移され、RBF がセットされる

4 - ソフトウェアで I2CxRCV レジスタを読み出し。 RBF ビットがクリアされる

5 - スレーブがストップ イベントを認識し、S と P ビットをそれぞれセット / クリア

スレーブが割り込み生成。スレーブがアクノレッジを受信

A7 A6 A5 A4 A3

S

P

I2COV

R/W

D/A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

SCLREL

4

アドレス バイトは I2CxRCV レジスタに移される。バッファ オーバー フローにならないようにユーザー ソフトウェアで読み出

D0D0D0W

ユーザー ソフトウェアで SI2CxIF をクリア

Page 40: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39702A_JP

-page 24-40©

2007 Microchip Technology Inc.

M = 1; GCEN = 0; IPMIEN = 0)

4 6

ータ。 バイトは I2CxRCV レジスタに移され、

タ読み出し、RBF ビットがクリアされる

認識し、S と P ビットをそれぞれセット / クリア

アクノレッジし、割り込み生成

9

A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

5 5

D0

図 24-27: スレーブ メッセージ ( スレーブへのデータ書き込み : 10 ビット アドレス ; アドレス一致 ; A10

1 - スレーブがスタート イベントを認識し、 S と P ビットをそれぞれセット / クリア

SCLx ( マスター )

SDAx ( マスター )

SCLx ( スレーブ )

SDAx ( スレーブ )

I2CxRCV

RBF

SI2CxIF

STREN

1 2 3 4 5 6 7 8

A9 A8

9

A

A7 A6 A5 A4 A3 A2 A1

1 2 3 4 5 6 7 8 9

1 32

A

4 4

2 - スレーブがアドレス バイト受信。上位アドレス一致

3 - スレーブがアドレス バイト受信。下位アドレス一致

4 - 次の受信バイトはメッセージ デ

5 - ソフトウェアで I2CxRCV レジス

6 - スレーブがストップ イベントを

スレーブがアクノレッジし、割り込み生成。アドレス バイトは

RBF がセットされる。スレーブが

S

P

I2COV

R/W

D/A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8

SCLREL

5

1 1 1 1 0

スレーブがアクノレッジし、割り込み生成。アドレス バイトは

I2CxRCV レジスタには移動されない

I2CxRCV レジスタに移動されない

A0 D0W D0

ユーザー ソフトウェアで SI2CxIF をクリア

Page 41: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第24

章 

Inter-Integrated Circuit (I 2C

)

© 2007 M

icrochip Technology Inc.A

dvance Information

DS

39702A_JP

-page 24-41

図 = 0; GCEN = 0; IPMIEN = 0)

2

ジスタ読み出し、RBF ビットがクリアされる

トをクリア

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

5 5

A

6

フトウェアで読み出される前に受信

返送し。スレーブが割り込み生成

D0

Inter-IntegratedCircuit (I2C) 24

24-28: スレーブ メッセージ ( スレーブへの書き込み : 7 ビット アドレス ; バッファ オーバーラン ; A10M

SCLx ( マスター )

SDAx ( マスター )

SCLx ( スレーブ )

SDAx ( スレーブ )

I2CxRCV

RBF

SI2CxIF

STREN

1 2 3 4 5 6 7 8

A2 A1

9

A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

21

A

3 4

1 - スレーブがアドレス バイト受信。アドレス一致。スレーブが割り込み生成

2 - 次の受信バイトはメッセージ データ。バイトは I2CxRCV レジスタに移され RBF セット6 - ソフトウェアで I2CxRCV レ

7 - ソフトウェアで I2COV ビッ

アドレス バイトは I2CxRCV レジスタに移動されない

スレーブが割り込み生成。スレーブがアクノレッジ送信

A7 A6 A5 A4 A3

S

P

I2COV

R/W

D/A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

N

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

SCLREL

3 - 次のバイトを I2CxRCV が読み出される前に受信。I2CxRCV レジスタは変化なしI2COV オーバー フロー ビット セット。スレーブが割り込み生成

N

4 - 次のバイトも I2CxRCV がソ

スレーブが受信に NACK をI2CxRCV レジスタは変化な

D0 D0W D0

ユーザー ソフトウェアで SI2CxIF をクリア

スレーブが受信に対し NACK 返送

Page 42: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39702A_JP

-page 24-42©

2007 Microchip Technology Inc.

0; GCEN = 0; IPMIEN = 0)

8 3

をセットしてクロックを開放

ブは SCLREL をクリアしない

D7 D6 D5 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

9 5

D4

アしてクロックを一時停止

トしてクロック一時停止を解除

D0

前に SCLx の Low を検出要

図 24-29: スレーブ メッセージ ( スレーブへの書き込み; 7 ビット アドレス ; クロック延長有効 ; A10M =

1 - ソフトウェアで STREN ビットをセットしてクロック延長有効化

SCLx ( マスター )

SDAx ( マスター )

SCLx ( スレーブ )

SDAx ( スレーブ )

I2CxTRN

TBF

I2CRCV

RBF

SI2CxIF

STREN

1 2 3 4 5 6 7 8

A2 A1

9

A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

32

A

5 3

2 - スレーブがアドレス バイト受信

3 - 次の受信バイトはメッセージ データ。バイトは I2CxRCV レジスタに移され

6 - ソフトウェアで SCLREL ビット

7 - ここでは、RBF = 0 なのでスレー

A7 A6 A5 A4 A3

S

P

I2COV

R/W

D/A

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

SCLREL

54 6 71

4 - 9 番目のクロックで RBF = 1なので、自動的にクロック延長開始スレーブが SCLREL ビットをクリア。スレーブが SCLx ラインを Low にして

5 - ソフトウェアで I2CxRCV レジスタを読み出し、RBF ビットがクリアされる

8 - ソフトウェアで SCLREL をクリ

9 - ソフトウェアで SCLREL をセッ

D0W D0

RBF がセットされる

クロック延長

モジュールは SCLx を Low にする

Page 43: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.7.5 マスター デバイスへの データ送信

受信デバイスのアドレス バイトの R/W ビットが「1」でアドレス一致が発生している場合、R/W ビット (I2CxSTAT<2>) がセットされます。この時点で、マスター デバイスはスレーブがデータ バイトを送信して応答することを求めます。バイトの内容はシステム プロトコルにより指定され、スレーブ モジュールだけが送信できます。

アドレス検出の割り込みが発生した場合、ソフトウェアはバイトを I2CxTRN レジスタに書き込みデータ送信を開始できます。

スレーブ モジュールが TBF ビットをセットします。8 データ ビットが SCLx 入力の立下りエッジでシフト出力されます。これにより、SCL High 時間中に SDAx 信号が有効になります。すべての 8 ビットがシフト出力完了すると、TBF ビットはクリアされます。

スレーブ モジュールが 9 番目の SCL クロックの立上りエッジでマスター受信側からのアクノレッジを検出します。

SDAx ラインが Low でアクノレッジ (ACK) を示している場合、マスターはさらにデータを要求していて、メッセージは完了していません。モジュールがスレーブ割り込みを生成し、さらにデータを要求されていることを通知します。スレーブ割り込みが 9 番目の SCLxクロックの立下りエッジで生成されます。ソフトウェアは I2CxSTAT レジスタのステータスをチェックし、SI2CxIF フラグをクリアにします。

SDAx ラインが High の場合、非アクノレッジ (NACK) を示し、データ転送は完了します。スレーブ モジュールはリセットされ割り込みを生成しません。スレーブ モジュールは次のスタート ビット検出を待ちます。.

24.7.5.1 スレーブ送信中のウェイト状態

スレーブがメッセージを送信する間、マスターは R/W = 1 の有効アドレスの検出のあと、直ぐデータが返信されることを期待しています。従って、スレーブ モジュールはスレーブがデータを返信するたびに自動的にバス ウェイトを生成します。

自動ウェイトは有効なデバイス アドレスの 9 番目の SCLx クロックの立下りエッジ、またはマスターからのさらなるデータの送信を示す応答の送信バイトで行われます。

スレーブ モジュールが SCLREL ビットをクリアします。SCLRE ビットをクリアすると、スレーブ モジュールが SCLx ラインを Low にしてウェイトを開始します。マスターとスレーブの SCLx クロックは、24.6.2 章 「マスター クロックの 同期」に示すように同期されます。

ソフトウェアが I2CxTRN に送信データをロードし送信の再開が可能になると、ソフトウェアは SCLREL をセットします。これにより、スレーブ モジュールは SCL x ラインを開放しマスターはクロッキングを再開します。

24.7.5.2 スレーブ送信のメッセージ例

7 ビット アドレス メッセージのときのスレーブ送信は図 24-30 に示すとおりです。アドレスが一致しそのアドレスの R/W ビットがスレーブ送信を示している場合、モジュールはSCLREL ビットをクリアして自動的にクロック延長を開始し、応答バイトが必要なことを示す割り込みを生成します。ソフトウェアは応答バイトを I2CxTRN レジスタに書き込みます。送信が完了するとマスターがアクノレッジを返します。マスターが ACK で返信した場合は、そのマスターは追加のデータを要求していて、モジュールは再度 SCLREL ビットをクリアして別の割り込みを生成します。マスターが NACK で応答した場合は、追加のデータ要求はないので、モジュールはクロック延長や割り込み生成を行いません。

10 ビット アドレス メッセージのときのスレーブ送信では、スレーブは最初に 10 ビットアドレスを認識する必要があります。マスターはアドレスに 2 バイトを送信する必要があるため、アドレスの 1 番目のバイトの R/W ビットは書き込みを指定します。メッセージを読み込むために、マスターはリピート スタート を送信し、R/W ビットで読み込みを指定してアドレスの 1 番目のバイトを繰り返します。この時点で、 図 24-31 で示す通りスレーブ送信が開始されます。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-43

Page 44: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39702A_JP

-page 24-44©

2007 Microchip Technology Inc.

3 8

スターが ACK 送信なら、モジュールは SCLREL を

認識し S と P ビットをそれぞれセット / クリア

4

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

N

5 7

BF ビットをクリアしバッファが次のバイトに利用

ブが割り込み生成

スターが NACK 送信なら、それ以上のデータ要求なし、割り込みを生成

D0

図 24-30: スレーブ メッセージ ( スレーブからのデータ読み出し : 7 ビット アドレス )

1 - スレーブがスタート イベントを認識、S と P ビットがそれぞれセット / クリア

SCLx ( マスター )

SDAx ( マスター )

SCLx ( スレーブ )

SDAx ( スレーブ )

I2CxTRN

TBF

I2CxRCV

RBF

SI2CxIF

STREN

1 2 3 4 5 6 7 8

A2 A1

9

A D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

R

1 42

A

5 3 5

2 - スレーブがアドレス バイト受信。アドレス一致。スレーブが割り込み生成

3 - ソフトウェアで I2CxTRN に応答データを書き込む。 TBF = 1はバッファ一杯を示す

6 - 9 番目のクロックの終わりで、マ

8 - スレーブがストップ イベントを

アドレス バイトは I2CxRCV レジスタに移されない。R/W = 1はスレーブからの

I2CxTRN に書き込むと D/A がセットされ、データ バイトを示す

A7 A6 A5 A4 A3

S

P

I2COV

R/W

D/A

SCLREL

4

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

A

3 6 6

読み出しを示す。SCLREL = 0としてマスターのクロックを一時停止

4 - ソフトウェアで SCLREL をセットしてクロック停止を解除。マスターがクロック再開。スレーブがデータ バイトを送信

5 - 最後のビット後、モジュールが T

クリアしてクロック停止。スレー

7 - 9 番目のクロックの終わりで、マモジュールはクロック停止をせず

D0 D0

できることを示す

Page 45: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第24

章 

Inter-Integrated Circuit (I 2C

)

© 2007 M

icrochip Technology Inc.A

dvance Information

DS

39702A_JP

-page 24-45

8

が ACK を返していれば、モジュールは

、 S と P ビットをそれぞれセット / クリア

6

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8 9

N

97

クロック停止を解除。マスタがクロック再開

止。スレーブが割り込みを生成

が NACK を返送していれば、これ以上データロックを停止せず割り込みを生成

9

A

10

D0

Inter-IntegratedCircuit (I2C) 24

24-31: スレーブ メッセージ ( スレーブからのデータ読み出し : 10 ビット アドレス )

1 - スレーブがスタート イベントを認識、S と P ビットをそれぞれセット / クリア

SCLx ( マスター )

SDAx ( マスター )

SCLx ( スレーブ )

SDAx ( スレーブ )

I2CxTRN

TBF

I2CxRCV

RBF

SI2CxIF

STREN

1 2 3 4 5 6 7 8 9

A

1 42 7

2 - スレーブが最初のアドレス バイトを受信。書き込みを示す。スレーブが

6 - ソフトウェアで I2CxTRN に応答データを書き込む

8 - 9 番目のクロックの終わりでマスター

- スレーブがストップ イベントを認識

S

P

ADD10

R/W

D/A

SCLREL

53 6

7 - ソフトウェアで SCLREL をセットしてスレーブがデータ バイト送信 .

SCLREL をクリアしてクロック一時停

9 - 9番目のクロックの終わりでマスター要求はしていいない。モジュールがク

A7 A6 A5 A4 A3 A2 A1

1 2 3 4 5 6 7 8 9

A

A9 A81 1 1 1 0

1 2 3 4 5 6 7 8 9

A

A9 A81 1 1 1 0

D7 D6 D5 D4 D3 D2 D1

1 2 3 4 5 6 7 8

3 - スレーブがアドレス バイトを受信。アドレスが一致。スレーブがアクノレッジし

10

4 - マスターがリピート スタートを送信しメッセージを再送

5 - スレーブが再送された最初のアドレス バイトを受信。読み出しを示す。

R

アクノレッジを返送し割り込みを生成

割り込みを生成

A0W

D0

スレーブがクロック停止

Page 46: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.8 I2C バス接続に関する考慮点

I2C バスの定義ではワイアード AND 接続となっていて、図 24-32 の RP で示すように、バス上にプルアップ抵抗が必要です。図内で RS として表される直列抵抗はオプションで ESD 感度を改善するために使います。抵抗 RP および RS の値は次のパラメータに依存します。

• 供給電源電圧

• バス容量

• 接続されるデバイス数 ( 入力電流 + リーク電流 )• 入力レベル選択 (I2C か SMBus か )デバイスは RP に抗してバスを Low にする必要があるため、RP に流れる電流はデバイス出力ステージにおいて、VOLMAX = 0.4V の場合に 6.6 mA の I/O ピン最小シンク電流 IOL よりも大きい必要があります。例えば、供給電圧 VDD = 3V + 10% で次のようになります。

式 24-2:

仕様では、最小立上り時間は 400 kHz システムでは 300 ns 、100 kHz システムでは 1000 nsとなっています。RP は合計容量 CB に抗してバスを引き上げる必要があるため、(VDD –0.7V) までの最大立上り時間が 300 ns の場合、プルアップの最大抵抗値 (RPMAX) は以下の値より小さくする必要があります。

式 24-3:

RS の最大値は Low レベルのときの推奨雑音マージンにより決定します。RS はデバイスVOL プラス RS 両端電圧が最大 VIL より大きくなるように十分な電圧を降下できません。計算は次となります。

式 24-4:

SCLx クロック入力は正常な動作のための最小 High 時間及び Low 時間を確保する必要があります。 I2C 仕様の High 時間と Low 時間は I2C モジュールの要求もあり、24.13 章 「電気的仕様」に示されています。

図 24-32: I2C™ バスの構成例

RPMIN = (VDDMAX – VOLMAX)/IOL = (3.3V – 0.6V)/8.5 mA = 439Ω

-tR/(CB * (ln(1 – (VDDMAX – VILMAX)) = -300 ns/(100 pF * ln(1 – (0.99 – 3.3))), または 2.5 kΩ

RSMAX = (VILMAX – VOLMAX)/IOLMAX = (0.3 VDD – 0.4)/6.6 mA = 89Ω

RPRP

VDD + 10%

SDAx

SCLx

デバイス

CB = 10-400 pF

RSRS

注 : I2C™ デバイスで入力レベルが VDD に関係する場合は、共通電源ラインとする必要があり、プルアップ抵抗もこれに接続します。

DS39702A_JP - ページ 24-46 Advance Information © 2007 Microchip Technology Inc.

Page 47: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.8.1 信号の統合化調整

SCLx ピンおよび SDAx ピンは入力グリッチ フィルタを持っています。I2C バスはこのフィルタを 100 kHz システムと 400 kHz システムの両方で必要とします。

400 kHz バスで動作している場合、 I2C 仕様ではデバイス ピン出力のスルー レート制御が必要となります。 スルー レート制御はデバイスに組み込まれています。DISSLW ビット(I2CxCON<9>) がクリアされると、スルー レート制御がアクティブになります。その他のバス速度では、I2C 仕様によりスルー レート制御は不要ですので DISSLW をセットする必要があります。

I2C バスのシステムによっては、VILMAX と VIHMIN に異なる入力レベルを必要とする場合があります。通常の I2C システムでは、VILMAX は 0.3 VDD、VIHMIN は 0.7 VDD です。これに対し、SMBus(システム管理バス)システムでは VILMAX は 0.8V で、VIHMIN は 2.1V です。

SMEN ビット (I2CxCON<8>) は入力レベルを制御します。SMEN をセット (= 1) すると入力レベルを SMBus 仕様に変更します。

24.9 PWRSAV 命令 中のモジュール動作

24.9.1 スレーブ モードのときのスリープ モード

モジュールがスレーブ モードに構成されているときにスリープ モードに入った場合には、フル動作を継続します。すべてのビットのシフトが外部 SCL 信号を参照して行われますから、すべてのデータ送受信動作が継続します。ここで必要に応じてモジュールの非同期の割り込みを生成させる必要があります。

24.9.2 マスター モードのときのスリープ モード

マスター送信中にスリープとなり、クロック停止により送信のステート マシンが途中となった場合には、送信は中断されます。同様に、マスター受信の途中でスリープとなった場合には、受信は中断されます。マスター モードのときはスリープ時に送信器と受信器が停止します。送受信器は機能を中断して、ウェイク アップしても部分的に完了した機能を継続することがないようにします。基本的には I2C モジュールがマスター モードのときにスリープに入ったら、モジュール自身とスリープ中のステート マシンをリセットします。この結果、 IWCOL、 I2COV、BCL ビットはリセット状態となります。レジスタ内容は、スリープ モードへの出入りで影響を受けることはありません。もし、送信、受信がペンディングなら、スリープ モードに入ることを自動的に防ぐ手立てはありません。したがって、送信の中断を避けるためには、ユーザー ソフトウェアでスリープへ入るのと I2C 動作の同期を取る必要があります。

24.9.3 デバイスがアイドル モードに 入る場合

デバイスが PWRSAV 1 命令を実行すると、デバイスはアイドル モードに入ります。 モジュールは I2CSIDL ビット (I2CxCON<13>) に従いアイドル モードの省電力状態になります。I2CSIDL = 1 の場合、モジュールはスリープ モードと同様の省電力モードに入ります。I2CSIDL = 0 の場合、モジュールは省電力モードに入らず、通常通りに動作を続けます。

24.10 周辺モジュール無効化 (PMD) レジスタ

周辺モジュール無効化 (PMD) レジスタは、I2C モジュールに供給される全クロックを停止させることで、モジュールを無効にする手段を提供します。周辺モジュールが対応するPMD 制御ビットにより無効化されると、周辺モジュールは最小消費電力状態となります。この周辺モジュールに関連する制御と状態レジスタも無効化されるため、これらのレジスタへの書き込みは影響を与えませんし、読み出した値も無効です。周辺モジュールは PMDレジスタ内の I2CxMD ビットをクリアすることでのみ有効化されます。.

24.11 リセットの影響

リセット は I2C モジュールを無効にし、アクティブまたは保留中のメッセージ動作を終了させます。これらのレジスタのリセット条件については、I2CxCON および I2CxSTAT のレジスタ定義を参照してください。

注 : ここでは、「アイドル」とは CPU 省電力状態を意味します。「アイドル」とある場合の状態では、I2C モジュールはバス上にデータを転送しない時間を表します。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-47

Page 48: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F フ

ァミ

リ リ

ファ

レン

ス マ

ニュ

アル

DS

39702A_JP

-page 24-48©

2007 Microchip Technology Inc.

4 ビット 3 ビット 2 ビット 1 ビット 0 リセット

後の値

信レジスタ 0000

信レジスタ 00FF

ェネレータ 0000

N RCEN PEN RSEN SEN 1000

S R/W RBF TBF 0000

タ 0000

0000

24.12 レジスタ マップ

 PIC24F I2C モジュールに関連するレジスタのまとめを表 24-5 に示します。

表 24-5: I2Cx レジスタ マップ

ファイル m名

ビット 15 ビット 14 ビット 13 ビット 12 ビット 11 ビット 10 ビット 9 ビット 8 ビット 7 ビット 6 ビット 5 ビット

I2CxRCV — — — — — — — — 受

I2CxTRN — — — — — — — — 送

I2CxBRG — — — — — — — ボーレート ジ

I2CxCON I2CEN — I2CSIDL SCLREL IPMIEN A10M DISSLW SMEN GCEN STREN ACKDT ACKE

I2CxSTAT ACKSTAT TRSTAT — — — BCL GCSTAT ADD10 IWCOL I2COV D/A P

I2CxADD — — — — — — アドレス レジス

I2CxMSK — — — — — — アドレス マスク

凡例 : — = 未実装、読むと「0」。リセット後の値は 16 進数で示す。

Page 49: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.13 電気的仕様

図 24-33: I2C™ バス スタート / ストップ ビット タイミング特性 ( マスター モード )

表 24-6: I2C™ バス スタート / ストップ ビット タイミング要求 ( マスター モード )

AC 特性

標準動作条件 : 2.0V ~ 3.6V( 特に記載の無い限り )動作温度 -40°C ≤ TA ≤ +85°C ( 工業用 )

パラメー

タ No 記号 特性 Min(1) Max 単位 条件

IM30 TSU:STA スタート条件

セットアップ時間

100 kHz モード TCY/2 (BRG + 1) — μs リピート スタート条件の

み該当400 kHz モード TCY/2 (BRG + 1) — μs

1 MHz モード (2) TCY/2 (BRG + 1) — μsIM31 THD:STA スタート条件

ホールド時間

100 kHz モード TCY/2 (BRG + 1) — μs この周期後、最初の

クロック パルスが

生成される400 kHz モード TCY/2 (BRG + 1) — μs

1 MHz モード (2) TCY/2 (BRG + 1) — μsIM33 TSU:STO ストップ条件

セットアップ時間

100 kHz モード TCY/2 (BRG + 1) — μs

400 kHz モード TCY/2 (BRG + 1) — μs

1 MHz モード (2) TCY/2 (BRG + 1) — μsIM34 THD:STO ストップ条件 100 kHz モード TCY/2 (BRG + 1) — ns

ホールド時間 400 kHz モード TCY/2 (BRG + 1) — ns

1 MHz モード (2) TCY/2 (BRG + 1) — ns

注 1: BRG は I2C™ ボーレート ジェネレータの値。 詳細は 24.4.3 章 「バス マスター動作のときの ボーレート設定」 を参照。

2: 全 I2C ピンに対し最大ピン容量 = 10 pF (1 MHz モードのみ )。

SCLx

SDAx

スタート条件

ストップ条件

注 : 負荷条件は 図 24-32 を参照。

IM31

IM30

IM34

IM33

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-49

Page 50: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

図 24-34: I2C™ バス データ タイミング特性 ( マスター モード )

表 24-7: I2C™ バス データ タイミング要求 ( マスター モード )

AC 特性

標準動作条件 : 2.0V ~ 3.6V( 特に記載の無い限り )動作温度 -40°C ≤ TA ≤ +85°C ( 工業用 )

パラメー

タ No 記号 特性 Min(1) Max 単位 条件

IM10 TLO:SCL クロック Low 時間 100 kHz モード TCY/2 (BRG + 1) — μs

400 kHz モード TCY/2 (BRG + 1) — μs

1 MHz モード (2) TCY/2 (BRG + 1) — μsIM11 THI:SCL クロック High

時間

100 kHz モード TCY/2 (BRG + 1) — μs

400 kHz モード TCY/2 (BRG + 1) — μs

1 MHz モード (2) TCY/2 (BRG + 1) — μsIM20 TF:SCL SDAx と SCLx

立下り時間

100 kHz モード — 300 ns CB は 10 ~ 400 pF でと

定400 kHz モード 20 + 0.1 CB 300 ns

1 MHz モード (2) — 100 nsIM21 TR:SCL SDAx と SCLx

立ち上がり時間

100 kHz モード — 1000 ns CB は 10 ~ 400 pF と規

定400 kHz モード 20 + 0.1 CB 300 ns

1 MHz モード (2) — 300 nsIM25 TSU:DAT データ入力

セットアップ時間

100 kHz モード 250 — ns

400 kHz モード 100 — ns

1 MHz モード (2) TBD — nsIM26 THD:DAT データ入力

ホールド時間

100 kHz モード 0 — ns

400 kHz モード 0 0.9 μs

1 MHz モード (2) TBD — nsIM40 TAA:SCL クロックから出力

有効まで

100 kHz モード — 3500 ns

400 kHz モード — 1000 ns

1 MHz モード (2) — — nsIM45 TBF:SDA バス フリー時間 100 kHz モード 4.7 — μs バスが新たな送信を開始

できる前のフリーの時間400 kHz モード 1.3 — μs

1 MHz モード (2) TBD — μsIM50 CB バスの容量性負荷 — 400 pF

凡例 : TBD = 将来決定注 1: BRG は I2C™ ボーレート ジェネレータの値。 詳細は 24.4.3 章 「バス マスター動作のときの ボーレート設定」 を参照。

2: 全 I2C ピンに対し最大ピン容量 = 10 pF (1 MHz モードのみ )。

IM11IM10 IM33

IM11 IM10IM20

IM26IM25

IM40 IM40 IM45

IM21

SCLx

SDAx入力

SDAx出力

注 : 負荷条件は図 24-32 を参照。

DS39702A_JP - ページ 24-50 Advance Information © 2007 Microchip Technology Inc.

Page 51: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

図 24-35: I2C™ バス スタート / ストップ ビット タイミング特性 ( スレーブ モード )

表 24-8: I2C™ バス スタート / ストップ ビット タイミング要求 ( スレーブ モード )

AC 特性

標準動作条件 : 2.0V ~ 3.6V( 特に記載の無い限り )動作温度 -40°C ≤ TA ≤ +85°C ( 工業用 )

パラメー

タ No 記号 特性 Min Max 単位 条件

IS30 TSU:STA スタート条件

セットアップ時間

100 kHz モード 4.7 — μs リピート スタート条件

のみ該当400 kHz モード 0.6 — μs

1 MHz モード (1) 0.25 — μsIS31 THD:STA スタート条件

ホールド時間

100 kHz モード 4.0 — μs この周期後、最初の

クロック パルスが

生成される400 kHz モード 0.6 — μs

1 MHz モード (1) 0.25 — μsIS33 TSU:STO ストップ条件

セットアップ時間

100 kHz モード 4.7 — μs

400 kHz モード 0.6 — μs

1 MHz モード (1) 0.6 — μsIS34 THD:STO ストップ条件 100 kHz モード 4000 — ns

ホールド時間 400 kHz モード 600 — ns

1 MHz モード (1) 250 — ns

注 1: 全 I2C ピンに対し最大ピン容量 = 10 pF (1 MHz モードのみ )。

SCLx

SDAx

スタート条件

ストップ条件

IS31

IS30

IS34

IS33

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-51

Page 52: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

図 24-36: I2C™ バス データ タイミング特性 ( スレーブ モード )

表 24-9: I2C™ バス データ タイミング要求 ( スレーブ モード )

AC 特性

標準動作条件 : 2.0V ~ 3.6V( 特に記載の無い限り )動作温度 -40°C ≤ TA ≤ +85°C ( 工業用 )

パラメー

タ No 記号 特性 Min Max 単位 条件

IS10 TLO:SCL クロック Low 時間 100 kHz モード 4.7 — μs デバイスは 1.5 MHz 以上で

動作させること

400 kHz モード 1.3 — μs デバイスは 10 MHz 以上で

動作させること

1 MHz モード (1) 0.5 — μsIS11 THI:SCL クロック High

時間

100 kHz モード 4.0 — μs デバイスは 1.5 MHz 以上で

動作させること

400 kHz モード 0.6 — μs デバイスは 10 MHz 以上で

動作させること

1 MHz モード (1) 0.5 — μsIS20 TF:SCL SDAx と SCLx

立下り時間

100 kHz モード — 300 ns CB は 10 ~ 400 pF でと定

400 kHz モード 20 + 0.1 CB 300 ns

1 MHz モード (1) — 100 nsIS21 TR:SCL SDAx と SCLx

立ち上がり時間

100 kHz モード — 1000 ns CB は 10 ~ 400 pF と規定

400 kHz モード 20 + 0.1 CB 300 ns

1 MHz モード (1) — 300 nsIS25 TSU:DAT データ入力

セットアップ時間

100 kHz モード 250 — ns

400 kHz モード 100 — ns

1 MHz モード (1) 100 — nsIS26 THD:DAT データ入力

ホールド時間

100 kHz モード 0 — ns

400 kHz モード 0 0.9 μs

1 MHz モード (1) 0 0.3 μsIS40 TAA:SCL クロックから出力有

効まで

100 kHz モード 0 3500 ns

400 kHz モード 0 1000 ns

1 MHz モード (1) 0 350 nsIS45 TBF:SDA バス フリー時間 100 kHz モード 4.7 — μs バスが新たな送信を開始できる

前のフリーの時間400 kHz モード 1.3 — μs

1 MHz モード (1) 0.5 — μsIS50 CB バス容量性負荷 — 400 pF

注 1: 全 I2C ピンに対し最大ピン容量 = 10 pF (1 MHz モードのみ )。

IS30IS31 IS33

IS11IS10

IS20

IS26IS25

IS40 IS40 IS45

IS21

SCLx

SDAx入力

SDAx出力

DS39702A_JP - ページ 24-52 Advance Information © 2007 Microchip Technology Inc.

Page 53: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.14 設計の秘訣

質問 1: バスをマスターとして使用しデータ送信も行っていますが、スレーブ割り込みや受信割り込みが同時に発生し続けます。何故ですか ?

回答 : マスター回路とスレーブ回路はそれぞれ独立しています。スレーブ モジュールもマスターが送信したイベントをバスから受信します。

質問 2: スレーブとして動作し、データを I2CxTRN レジスタに書き込んでいますが、データが送信されません。何故ですか ?

回答 : スレーブは送信準備中は自動的にウェイト状態になります。SCLREL ビットをセットして I2C クロックを開放してください。

質問 3: マスター モジュールの状態を知るにはどのようにしたらよいですか ?回答 : SEN、RSEN、PEN、RCEN、ACKEN、TRSTAT ビットの状態を見れば、マスター モジュールの状態が分かります。すべてのビットが「0」の時、モジュールはアイドル状態にあります。

質問 4: スレーブとして動作時、STREN = 0 の状態でバイトを受信しました。次のバイト受信までにこのバイトを処理できない場合、ソフトウェアはどのような動作をすべきですか ?

回答 : STREN が「0」であったため、このモジュールは自動的に受信バイトのウェイトを生成できなかったと思われます。ただし、メッセージ処理中のいつでもソフトウェアはSTREN をセットし SCLREL をクリアできます。これにより次の受信時にウェイトを生成し SCLx クロックと同期できます。

質問 5: マルチマスター I2C システムを使用しています。送信しようとするとメッセージが壊れてしまいます。何故でしょうか ?

回答 : マルチマスター システムでは、他のマスターがバス衝突を発生させる場合があります。マスターの割り込みサービス ルーチンで、BCL ビットをチェックし、動作が衝突なしに完了しているかどうかを確認してください。衝突が検出された場合、メッセージを最初から送信しなおす必要があります。

質問 6: マルチマスター I2C システムを使用しています。メッセージ開始のタイミングをどのようにして知ればいいでしょうか ?

回答 : S ビットを見て下さい。S = 0ならバスはアイドルです。

質問7: バスでスタート条件を開始し I2CxTRN レジスタに書き込みをしバイトを送信しようとしたら、バイトが送信されませんでした。何故でしょうか ?

回答 : 次の開始の前に I2C バス上のそれぞれのイベントが完了するのを待つ必要があります。この場合、SEN ビットをポーリングしてスタート イベントが完了するのを確認するか、データを I2CxTRN に書き込む前にマスター I2C 割り込みが発生するのを待ちます。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-53

Page 54: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

24.15 関連する アプリケーション ノート

ここでは、マニュアルのこの章に関連するアプリケーションノートをリストアップします。これらのアプリケーションノートは、特に PIC24F デバイス ファミリ専用ではありませんが、その概念は共通であり、変更、あるいは制限事項を考慮に入れて使用できます。現在、Inter-Integrated Circuit (I2C) モジュールに関連するアプリケーションノートは次の通りです。 

タイトル アプリケーション ノート #Use of the SSP Module in the I 2C™ Multi-Master Environment AN578Using the PICmicro® SSP for Slave I2C™ Communication AN734Using the PICmicro® MSSP Module for Master I2C™ Communications AN735An I2C™ Network Protocol for Environmental Monitoring AN736

注 : PIC24F ファミリ デバイスに関するその他のアプリケーション ノートやコード例についてはマイクロチップ ウェブ サイト (www.microchip.com) をご覧下さい。

DS39702A_JP - ページ 24-54 Advance Information © 2007 Microchip Technology Inc.

Page 55: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

第 24 章 Inter-Integrated Circuit (I2C)Inter-Integrated

Circuit (I 2C

)

24

24.16 改版履歴

リビジョン A (2006 年 4 月 )本文書の初版リリース。

© 2007 Microchip Technology Inc. Advance Information DS39702A_JP - ページ 24-55

Page 56: 第24 章 Inter-Integrated Circuit (I2C• Intelligent Peripheral Management Interface (IPMI)規格をサポート 図24-1 に I2C モジュールのブロック図を示します。©

PIC24F ファミリ リファレンス マニュアル

ノート :

DS39702A_JP - ページ 24-56 Advance Information © 2007 Microchip Technology Inc.