13
2017 Microchip Technology Inc. DS90003159A_JP - p. 1 TB3159 はじめに 本書は、I 2 C モジュールの特長と基本機能について説 明します。1 に、I 2 C モジュールの概略ブロック図 を示します。 1: I 2 Cモ ジュールの概略ブロック図 1 内の「I 2 C Control Unit」は、マスタ モジュールと スレーブ モジュールに加え、モジュールの状態を監視 するための割り込みコントローラを内蔵します。 Transfer Counter( 転送カウンタ ) により、自動カウ ント機能を使ったデータ転送の自動化が可能です。各 バッファは 1 バイトのデータまたはアドレスを格納し ます。いずれかのバッファがシフトレジスタを介して SDA ピンとの間で内容をシフトインまたはシフトアウ トしている間、他のバッファは値を保持します。「ACK/ NACK SOURCES」は、送信データに肯定 / 否定応答の ための第 9 ビットを追加します。これらの 9 個のビッ トは、「SDA Delay」によって設定された間隔でシフト アウトされます。「I 2 C CLOCK SELECTION」と「BUS TIME-OUT SELECTION」は、それぞれ SCL とタイム アウトのタイミングを制御します。 SDA および SCL ンは、ペリフェラル ピンセレクト (PPS) 機能により設 定します。 Author: Mary Iva Rosario Salimbao Microchip Technology Inc. I 2 C Control Unit and Transfer Counter Master Module Slave Module Interrupt Controller Transmit Buffer (I2CxTXB) Receive Buffer (I2CxRXB) Address Buffer and Match I2CxADB0/1 I2CxADD0/1/2/3 Shift Register RX/TX Auto-NACK ACKDT/ ACKCNT SDA Delay RxyPPS SDA(out) SDAHT<1:0> I2CxSDAPPS SDA(in) I2CLVL<1:0> See I2CxCLK Register I2CCLK<3:0> See I2CxBTO Register I2CBTO<2:0> I2CLVL<1:0> I2CxSCLPPS SCL(in) RxyPPS SCL(out) 8 8 8 I 2 C CLOCK SELECTION BUS TIME-OUT SELECTION ACK/NACK SOURCES SDA HOLD TIME SDA PPS INPUT SELECTION SCL PPS INPUT SELECTION SCL PPS OUTPUT SELECTION SDA PPS OUTPUT SELECTION 8 ビット PIC ® マイクロコントローラの ハードウェア プロトコル アクセラレーションを備えた I 2 C モジュール 注意 : この日本語版文書は参考資料としてご利用ください。最 新情報は必ずオリジナルの英語版をご参照願います。

TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB31598 ビット PIC® マイクロコントローラの

ハードウェア プロトコル アクセラレーションを備えた I2C モジュール

注意 : この日本語版文書は参考資料としてご利用ください。最新情報は必ずオリジナルの英語版をご参照願います。

はじめに

本書は、I2C モジュールの特長と基本機能について説明します。図 1 に、I2C モジュールの概略ブロック図を示します。

図 1: I2Cモ ジュールの概略ブロック図

図 1 内の「I2C Control Unit」は、マスタ モジュールとスレーブ モジュールに加え、モジュールの状態を監視するための割り込みコントローラを内蔵します。「Transfer Counter」( 転送カウンタ ) により、自動カウント機能を使ったデータ転送の自動化が可能です。各バッファは 1 バイトのデータまたはアドレスを格納します。いずれかのバッファがシフトレジスタを介してSDAピンとの間で内容をシフトインまたはシフトアウトしている間、他のバッファは値を保持します。「ACK/NACK SOURCES」は、送信データに肯定 / 否定応答のための第 9 ビットを追加します。これらの 9 個のビットは、「SDA Delay」によって設定された間隔でシフトアウトされます。「I2C CLOCK SELECTION」と「BUSTIME-OUT SELECTION」は、それぞれ SCL とタイムアウトのタイミングを制御します。SDA および SCL ピンは、ペリフェラル ピンセレクト (PPS) 機能により設定します。

Author: Mary Iva Rosario SalimbaoMicrochip Technology Inc.

I2CControl Unit

andTransferCounter

Master Module

SlaveModule

InterruptController

Transmit Buffer(I2CxTXB)

Receive Buffer(I2CxRXB)

Address Bufferand MatchI2CxADB0/1

I2CxADD0/1/2/3

Shift RegisterRX/TX Auto-NACK

ACKDT/ACKCNT

SDADelay

RxyPPS SDA(out)

SDAHT<1:0>

I2CxSDAPPSSDA(in)

I2CLVL<1:0>

SeeI2CxCLKRegister

I2CCLK<3:0>

SeeI2CxBTORegister

I2CBTO<2:0>

I2CLVL<1:0>

I2CxSCLPPSSCL(in) RxyPPS SCL(out)

8

8

8

I2C CLOCK SELECTION

BUS TIME-OUT SELECTION

ACK/NACK SOURCES

SDA HOLD TIME

SDA PPS INPUT SELECTION

SCL PPS INPUT SELECTION

SCL PPS OUTPUT SELECTION

SDA PPS OUTPUT SELECTION

2017 Microchip Technology Inc. DS90003159A_JP - p. 1

Page 2: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

I2C プロトコルの概要

I2C モジュールは、Phillips® I2C 仕様に準拠します。本モジュールは、PIC® マイクロコントローラと他の I2Cサポートデバイスとの間の双方向マスタ / スレーブ同期インターフェイスを提供します。これらのデバイスは 2 線式シリアルバスで接続され、複数マスタと複数スレーブ間の通信が可能です。図 2 に、各種タイプのマスタ - スレーブ間接続を示します。

図 2: I2Cマ スタ -ス レーブ間接続の概略図

MASTER 1SDA

SCL

SLAVE 1SDA

SCL

VDD

R2R1

MASTER 1SDA

SCL

SLAVE 1SDA

SCL

SLAVE 2SDA

SCL

VDD

R2R1

(b) Single Master and Multi-SlaveConnection

(c) Multi-Master and Single SlaveConnection

MASTER 1SDA

SCL

MASTER 2SDA

SCL

SLAVE 1SDA

SCL

VDD

R2R1

MASTER 1SDA

SCL

MASTER 2SDA

SCL

SLAVE 1SDA

SCL

SLAVE 2SDA

SCL

VDD

R2R1

(a) Single Master and Multiple SlaveConnection

(d) Multi-Master and Multi- SlaveConnection

DS90003159A_JP - p. 2 2017 Microchip Technology Inc.

Page 3: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

バスライン

I2C バスは、シリアルクロック (SCL) ラインとシリアルデータ (SDA) ラインで構成されます。マスタデバイスが生成したクロック信号は、データ転送を制御するために SCL ラインを介して送信されます。SDA ラインは、マスタ - スレーブ間でデータを双方向に伝送します。各信号ラインには、オープンドレイン接続のためにプルアップ抵抗が必要です。どちらのラインも、バスがアイドルの時の初期状態がフローティングでHIGH となり、I2C デバイス間で通信を開始するために決められた順番で LOW に駆動される必要があります。SDA ラインの遷移は、常に SCL ラインが LOW に保持されている時に発生します。SCL ラインが HIGH に保持されている間に発生する SDA ラインの遷移は、START および STOP 条件を表します。

図 3 に、代表的な I2C メッセージにおける SDA および SCL 信号の状態を示します。この図は、I2C メッセージの基本要素 (START および STOP 条件、アドレスバイト、データバイト、ACKビット)も示しています。

図 3: 代表的な I2Cメ ッセージ

I2C の動作

I2C をサポートするデバイスは、マスタ送信 / 受信モードまたはスレーブ送信 / 受信モードで動作できます。データは、START 条件と STOP 条件の間で、9 ビットセグメント (8ビットのアドレスまたはデータバイトと1 ビットの ACK/NACK 条件 ) として送信されます。

図 4 に、2 データバイトの簡潔な I2C 送受信を示します。この図の (a) と (b) では R/W ビットの状態が異なります。このビットは、アドレス指定時に後続のデータ伝送の方向 ( 読み / 書き ) を指定します。

図 4: マスタデバイスとスレーブデバイス間の I2C通 信 (7ビ ットアドレス指定 )

Data Byte

SDA

SCL

PS Address Byte

ACK ACKA7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0R/W

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 89 9

IDLE IDLE

Change of SDA state while SCL is High

SDA and SCL states are inactive

Byte transfer between devices

Acknowledgement

Data Byte from Master Data Byte from MasterACKSDA

SCL

PSFrom Slave to Master

7-bit Slave AddressWrite

From Master to Slave

ACK

Data Byte from SlaveACK

Data Byte from SlaveNACKA7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0SDA

SCL 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 89 9 9

PSR/W

7-bit Slave AddressRead

From Master to Slave

(a) Master Transmit and Slave Receive

(b) Master Receive and Slave Transmit

From Slave to Master

ACK ACKA7 A6 A5 A4 A3 A2 A1 D7 D6 D5 D4 D3 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0R/W

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 89 9 9

2017 Microchip Technology Inc. DS90003159A_JP - p. 3

Page 4: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

I2C モジュールの機能本 I2C モジュールが提供する機能は以下の通りです。

• マスタモード

• スレーブモード ( バイト NACKing)• マルチマスタ モード

• I2C マスタおよびスレーブのハードウェア サポート

- アドレスバッファ、受信バッファ、送信バッファ

- 最大 4 つのスレーブアドレスのマッチング (1)

- ジェネラルコール アドレスのマッチング

- 7 ビットと 10 ビットのアドレス指定 ( マスキング可能 )

- START、RESTART、STOP、読み出し、書き込み、ACK、バイトカウント割り込み

- バスタイムアウト、バスコリジョン、NACK 検出エラー割り込み

• ハードウェアによるクロック ストレッチ (以下に適用 )- 受信バッファフル

- 送信バッファ エンプティ

- アドレス、書き込み、ACK の後

• 自動バイトカウント

• 選択可能なクロック

• バスコリジョンの検出

• バスタイムアウトの検出 ( ソースを設定可能 )• SDA ホールド時間の選択

• バスフリー時間の選択

• I2C、SMBus、1.8 V 入力レベルの選択

• DMA(2) と PMD のサポート

SMBus および PMBus™ との互換性のため、バスタイムアウトによってモジュールをリセットできます ( タイムアウトは I2CxBTO レジスタで選択 )。本モジュールは、未使用時に PMD 機能を使って無効にできます。マスタおよびスレーブ モジュールでデータを自動処理する事により、コード オーバーヘッドが低減すると共に、モジュールの総合性能が向上します。

マルチマスタ モード

マルチマスタ サポート機能により、マスタはバスフリー (BFRE) ステータスビットを使って、START 条件を生成する前にバスが空いているかどうか判定できます。バスが空いている場合、マスタは 8 ~ 64 I2C クロックパルスのバスフリー時間 (BFRET<1:0>で設定 )が過ぎるまで待機してからBFREビットをセットしてSTART 条件を生成します。これにより、あるマスタがバスを使っている時に別のマスタがバスの制御を引き継ごうとする事を防ぎます。両方のマスタが同時にSTART 条件を生成した場合、アドレス指定フェイズでバス調停が起こります。

I2C モジュールの動作以下では、各種機能を使った I2C モジュールの動作について説明します。本モジュールに関連するレジスタとビットは、まとめて表 A-1 に記載しています。これらのレジスタの詳細は、デバイスのデータシートを参照してください。

I2C バスの設定SCL および SDA ラインは、オープンドレイン / 双方向のデジタル信号ラインです。これらの信号に割り当てる I/O ピンは、信号ラインとして正しく機能するよう、ANSELx および ODCONx レジスタと PPS を使って適切に設定する必要があります。PPS により、これらのピンには周辺モジュール入力(I2CxSCLPPSとI2CxSDAPPS) および出力 (RxyPPS) としての機能を割り当てます。入力しきい値、スルーレート、内部プルアップは、RxyI2C 制御レジスタで設定します。SCLクロックは I2C クロック選択レジスタ (I2CxCLK) で選択し、SDA ホールド時間は I2CxCON2 レジスタのSDAHT ビットで 30/100/300 ns のいずれかに設定します。例 1 に、K42 デバイスの SDA および SCL ピンの設定例を示します。

例 1: SCL および SDA ピンの設定

Note 1: 4つのスレーブアドレスのマッチングは、7ビットアドレス指定でのみ使えます。10 ビットアドレスの場合、最大で 2 つのアドレスしか使えません。

2:ダイレクト メモリアクセス (DMA) モジュールは、一部のデバイスだけが備えます。DMAモジュールが利用可能かどうかは、デバイスのデータシートで確認してください。

// Configure the pins as digitalANSELCbits.ANSELC3 = 0;ANSELCbits.ANSELC4 = 0;

// PPS Unlock SequencePPSLOCK = 0x55;PPSLOCK = 0xAA;PPSLOCKbits.PPSLOCKED = 0x00;

// Set RC4 for SDARC4PPS = 0x22;I2C1SDAPPS = 0x14;

// Set RC3 for SCLRC3PPS = 0x21;I2C1SCLPPS = 0x13;

// PPS Lock SequencePPSLOCK = 0x55;PPSLOCK = 0xAA;PPSLOCKbits.PPSLOCKED = 0x01;

// Configure the pins as Open-drainODCONCbits.ODCC3 = 1;ODCONCbits.ODCC4 = 1;

// Set the I2C levelsRC3I2Cbits.TH = 1;RC4I2Cbits.TH = 1;

// Configure the pins as OutputsTRISCbits.TRISC3 = 0;TRISCbits.TRISC4 = 0;

DS90003159A_JP - p. 4 2017 Microchip Technology Inc.

Page 5: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

クロックの選択

I2C クロック選択 (I2CxCLK) レジスタにより、マスタデバイス向けの I2C クロックを設定します。このレジスタでは、内部 CPU オシレータとその他の周辺モジュールによって提供されるクロック源が選択できます。高速モードイネーブル (FME) ビットは、SCL ピンがハードウェアによって駆動される前のサンプリング数追加を設定します。SCL 周波数は、高速モードを有効にした場合に FCLK/4 に設定され、無効にした場合にFCLK/5 に設定されます。

モードの選択

本 I2C モジュールでは、アドレス指定のタイプによって決まる各種の I2C モードが選択できます。これらのモードは、I2CxCON0 制御レジスタのモード選択ビットで定義します。7 ビットと 10 ビットのマスタモード、7 ビットと 10 ビットのスレーブモード、7 ビットのマルチマスタ モードが選択できます。

条件

本 I2C モジュールは、バス上のイベントを示す各種の条件を監視します。SDA ライン上のこれらの条件の例は図 4 と図 5 を参照してください。

1. START 条件 (S): マスタデバイスは、転送の開始を知らせるためにSTART 条件を生成し、バスの状態をアイドルからアクティブに変更します。START 条件は、SCL ラインが HIGH を保持している時に SDA ラインがHIGH から LOW に遷移する事により生成されます。

2. STOP 条件 (P): マスタは、伝送が終了してバスをアイドル状態に戻す時に、バスの制御を解放するために STOP 条件を生成します。STOP 条件は、SCL ラインがHIGH を保持している時に SDA ラインが LOW から HIGH に遷移する事により生成されます。

3. RESTART 条件 (RS):マスタは、転送が完了した後も引き続きバスを制御する必要がある場合に RESTART 条件を生成します。これにより、転送と転送の間に他のマスタデバイスが制御を引き継いでしまう事を防ぎます。

4. ACK/NACK 条件 : ACK 条件は、スレーブデバイス制御またはデータ転送が成功した事への応答です。ACK 条件は、レシーバがSCLの9番目のクロックパルスでSDAラインを LOW にする事により送信されます。それ以外の場合、レシーバは SCL の 9 番目のクロックパルスでSDAラインをHIGHにする事でNACK条件を返します。マスタデバイスは、スレーブからのデータ受信を終了するためにNACKを送信します。

START、STOP、RESTART 条件は常にマスタが生成します。マスタは、スタート (S) ビットをセットするか、バスがアイドル中の時に送信バッファに書き込む事で、START 条件を送信します。START 条件の発生後にマスタ モジュールはアクティブになります。RESTART条件は、RESTART イネーブル (RSEN) ビットをセットする事により、有効になります。マスタ モジュールがアクティブになりスタート (S) ビットがセットされた後、バイトカウントが 0 になるか ACK を受信しなかった場合、マスタは RESTART 条件を生成します。STOP条件は、NACK の受信または送信によって発生するか、バイトカウントが 0 に達した時に発生します。これらの各条件には、ローカルの I2C 周辺モジュール割り込みフラグ レジスタ内で割り込みフラグが割り当てられています。

図 5: マスタデバイスとスレーブデバイス間の I2C通 信 (10ビ ットアドレス指定 )

Data Byte from MasterSDA

SCL

PSFrom Slave to MasterWrite

From Master to Slave

10-bit Address (Low Byte) Data Byte from SlaveSDA

SCL

PS 10-bit Address (High Byte)

From Master to Slave

(a) Master Transmit and Slave Receive

(b) Master Receive and Slave Transmit

From Slave to MasterRS

Write

W NAKACKR

Read

10-bit Address (High Byte)From Slave to Master

10-bit Address (Low Byte)10-bit Address (High Byte)

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 89 9 9

ACKACK ACK D7 D6 D5 D4 D3 D2 D1 D0R/W1 1 1 1 0 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 89 9 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 89 9

ACK ACK1 1 1 1 0 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 1 0 A9 A8 D7 D6 D5 D4 D3 D2 D1 D0

2017 Microchip Technology Inc. DS90003159A_JP - p. 5

Page 6: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

ACK シーケンス

ACK/NACK シーケンスの結果は ACK ステータス(ACKSTAT) ビットに保存されます。第 9 ビットは常にACK/NACK 条件を示します。ACK 条件は ACK ステータスビットをクリアし、NACK 条件は ACK ステータスビットをセットします。受信動作では、データバイト カウントレジスタ (I2CxCNT)、ACK データビット(ACKDT)、カウント終了ビット (ACKCNT) によって、ACK シーケンスの結果が決まります。カウントが 0 に達していない場合、レシーバは ACKDT ビットを送信し、0 に達している場合は ACKCNT ビットを送信します。

スレーブモードでは、ホールド イネーブルビットがセットされている場合、アドレス一致が発生するとクロック ストレッチが始まります。これにより、ユーザはトランスミッタへ返送する ACK 値を設定できます。NACK は、その他の条件 ( 送受信バッファエラー等 )でも生成されます。マスタ ハードウェアは、NACK を検出すると自動的に STOP 条件を送信します。

アドレス指定

スレーブデバイスは、7 ビットまたは 10 ビットのアドレスを持つ事ができます。本モジュールでは、4 つの7ビットアドレスと2つの10ビットアドレスが使えます。マスタは、START 条件に続けて必ず 1 つまたは複数のアドレスバイトを送信します。アドレスバイトは、マスタが通信を試みる先のスレーブアドレスと読み /書き (R/W) ビットを保持します。

1. 7 ビットアドレス指定 : マスタは、1 つのアドレスバイトを送信します。アドレスバイトのbit 7-1がスレーブアドレスを保持し、bit 0がR/Wビットを保持します (図4参照 )。

2. 10 ビットアドレス : 最初のバイトは「11110xx」と R/W ビットを格納します。「xx」は、10 ビットアドレスの最上位の2 ビットです。2 番目のバイトは、アドレスの残りの 8 ビットを格納します ( 図 5 を参照 )。

R/W ビットにより、データの伝送方向が決まります。すなわちマスタは、データを送信する場合に第 9 ビットで SDA ラインを LOW にし、データを受信する場合に第 9 ビットで SD ラインを HIGH にします。アドレスが一致するスレーブデバイスがバス上に存在する場合、そのスレーブは ACK で応答します。しかし、マスタがスレーブへの接続に失敗すると、NACK が返されます。

マスタ受信 /スレーブ送信動作で10ビットアドレス指定を使う場合、スレーブからデータを出力するためにRESTART 条件が必要です。マスタは最初に書き込み動作向けに 2 つのアドレスバイトを送信します。スレーブデバイスが両方のアドレスバイトに対してACK を返した場合、マスタ ソフトウェアは RESTART条件のためにスタートビットをセットします。マスタは、読み出し動作向けに上位アドレスバイトを再送信し、ACK 条件を受信した後にスレーブからデータを読み出します。

本モジュールは、2 つのアドレスデータ バッファ(I2CxADBx) と 4 つのアドレスレジスタ (I2CxADRx) を提供します。アドレスデータ バッファは、送信バッファまたは受信バッファとして機能します ( 表 1 参照 )。マスタモードでは、バッファはバスへシフトアウトする1 つまたは複数のアドレスバイトを格納します。スレーブモードでは、バッファは 1 つまたは複数の受信アドレスバイトを保持し、アドレスレジスタ内のアドレスと照合します。アドレスレジスタは、スレーブモードでの照合アドレスとマスキング情報を格納します。SMBus および PMBus 通信をサポートするには、複数のアドレスレジスタが必要です。

ジェネラルコール アドレスのサポート

I2C モジュールはジェネラルコール アドレス指定をサポートします。これにより、マスタは全てのスレーブデバイスをアドレス指定して 1 つの ACK を受信できます。ジェネラルコール アドレスは「0x00」として定義されます。この機能を使うには、ソフトウェアでジェネラルコール アドレス イネーブルビットを有効にする必要があります。アドレスレジスタでジェネラルコール アドレスを指定する必要はありません。

データ転送

通信は、データバイトを送信する事で継続します。データバイトが正常に送受信されると、ACK ビットが返されます。I2C バスは、STOP 条件が検出された後に解放され、次の START 条件までアイドル状態になります。

専用バッファ

本 I2C モジュールは送信用データバッファ (TXB) と受信用データバッファ (RXB) を備えています。これらのバッファには、ソフトウェアまたは DMA によりアクセスできます。ユーザは、これらのバッファの状態を対応するステータスフラグ (TXBE/RXBF) または割り込みフラグ (TXIF/RXIF) で監視する事により、読み書き動作を正しく実行する必要があります。フル状態のTXB に新しいバイトを書き込まない事が必要です。エンプティ状態または古いデータを保持している RXBからデータを読み出さない事が必要です。不適正な読み書き動作が発生すると、エラー条件フラグがセットされます。

表 1: 各種 I2C モードでのアドレスデータ バッファの方向

モード I2CxADB0 I2CxADB1

スレーブ (7ビット、マスキング可能 )

RX —

スレーブ (10ビット、マスキング可能 )

RX RX

マスタ (7 ビット ) — TXマスタ (10 ビット ) TX TXマルチマスタ (7 ビット ) RX TX

DS90003159A_JP - p. 6 2017 Microchip Technology Inc.

Page 7: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

クロック ストレッチ

スレーブデバイスがマスタのデータレートについていけない場合、スレーブデバイスはクロック ストレッチを使って伝送を遅らせる事ができます。 スレーブは、通信が再開できるようになるまで、転送単位の任意位置で SCL ラインを LOW に保持できます ( 図 6 参照 )。SCL ラインが LOW に保持されている事を検出したマスタは、スレーブがラインを解放して残りのデータを送受信するまで待機します。

図 6: クロック ストレッチ

クロックストレッチは、カウンタレジスタが非ゼロの時に送信バッファ エンプティ (TXBE) ビットまたは受信バッファフル (RXBF) ビットがセットされた場合に発生します。アドレス マッチング (ADRIE)、データ書き込み (WRIE)、ACK ステータス (ACKTIE) に対応する割り込みおよびホールドビットをセットすると、それらの動作に対してもクロック ストレッチが有効になります。クロックストレッチは、クロック ストレッチ ディセーブル (CSTRDIS) ビットをセットする事により無効にできます。

自動バイトカウント

バイトカウント (I2CxCNT) レジスタは、I2C バスでのデータ転送の長さを制御するためのハードウェア カウンタです。このレジスタは、送受信するデータバイトの数 ( アドレスバイトは含まず ) を保持します。このレジスタは、バス上で「バイト +ACK」が転送されるたびに、そのバイトの SCL の 9 番目の立ち下がりエッジで自動的にデクリメントします。バイトカウント レジスタが「0」までデクリメントすると、カウンタ割り込みフラグ (CNTIF) がセットされ、マスタ ハードウェアは STOP 条件を生成します。転送するバイト数が 256 を超える場合、転送の途中でバイトカウントレジスタに再書き込みします。

割り込み、ステータス、エラーの検出

本 I2C モジュールは、モジュールの動作状態を監視するための各種の方法を提供します。ユーザは、ステータス レジスタ (I2CxSTAT0/1) を監視するか、対応する割り込み要因を有効にする方法を使います。ほとんどのステータスビットは読み出し専用であり、I2C バスおよびモジュール ( アクティブなマスタまたはアクティブなスレーブ ) の現在の状態を示す事しかしません。 I2C モジュール内部の割り込み要因フラグレジスタ(I2CxPIR) は I2C バス条件、クロック ストレッチ オプション、バイトカウント レジスタに関する割り込みフラグを格納します。これらのフラグのいずれかがセットされると、メインの I2C 割り込みフラグ (I2CxIF) がセットされます。 I2C エラー (I2CxERR) レジスタは、通信エラーが発生した時にセットされる割り込みフラグを格納します。これらのエラーにはバスタイムアウト、バスコリジョン、NACK 検出が含まれます。これらのエラーのいずれかが検出されると、メインの I2C エラー割り込みフラグ (I2CxEIF) もセットされます。 送信バッファと受信バッファにも、割り込みイネーブルビットと割り込みフラグビットが割り当てられています。送信バッファ エンプティ(TXIF) および受信バッファフル (RXIF) 割り込みを有効にした場合、それらは次の伝送の前に処理する必要があります。ベクタ割り込みコントローラにより、各割り込み要因に割り込み優先度 (IPL) を割り当てる事ができます。全ての割り込みを記載した一覧は、デバイスのデータシートに記載しています。

Slave releases SCL

Data

SDA

SCL

Clock Stretching

AddressD7R/W ACK

5 6 7 8 9 1 2 3 4

A2 A1 D6 D5 D4 D3

5

2017 Microchip Technology Inc. DS90003159A_JP - p. 7

Page 8: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

I2C モジュールの応用例

マスタモード

例 2 に、I2C モジュールを I2C マスタデバイスとして設定するためのコードを示します。500 kHz のクロック源と高速モードを有効にする事で、モジュールは 125 kHzの SCL 周波数で通信します。例 3 と例 4 に、I2C スレーブ EEPROM に対する単純なマスタ読み書き動作を示します。アドレスバッファ I2C1ADB1は 7 ビットのスレーブアドレス EE_SLAVE_ADDRESS を保持します。カウントレジスタ I2C1CNTは、送受信するバイトの総数を保持します。

例 2: I2C マスタモードの初期化

初期化後の I2C バスはアイドル状態であるため、送信バッファへの書き込みによって伝送を開始します。モジュールは START 条件を生成し、スレーブアドレスと書き込み指定 W/Rビット (=0) を SDA ラインへシフトアウトします。ACK を受信すると、モジュールは、データポインタが指す最初のデータバイト (EEPROMメモリアドレス バイト ) をシフトアウトします。最後のバイトをバッファに転送した後、モジュールはそのデータをシフトアウトしてから送信を停止します。

例 3: EEPROM への I2C マスタ書き込み

通常、EEPROM からの読み出しは、マスタ書き込み動作によって EEPROM メモリアドレスを送信した後に、マスタ読み出し動作によってEEPROMからデータバイトを読み出します。メモリアドレス バイトを送信した後、読み出し動作のために I2C1ADB1と I2C1CNTを再度書き込みます。モジュールはスタートビットをセットする事によってもう一度 START 条件を生成し、EE_SLAVE_ADDRESSと読み出し指定 W/R ビット (=1)をシフトアウトします。スレーブが ACK を返すと、マスタは最初のデータバイトをシフトインして受信バッファに格納します。マスタは、ソフトウェアによって受信バッファを読み出し、次の読み出しのために RXBFビットをクリアする必要があります。最終バイトを読み出した後に、マスタは例2で設定された通りにNACKを送信します。

例 4: EEPROM からの I2C マスタ読み出し

// 7bit Master Mode (MODE = 4)I2C1CON0 = 0x04;

// I2C Clock = MFINTOSC (500kHz)I2C1CLK = 0x03;

// ACK for every valid byte (ACKDT = 0)// NACKs to end a Read (ACKCNT = 1)I2C1CON1 = 0x80;

// Auto-count disabled (ACNT = 0)// General Call disabled (GCEN = 0)// Fast mode enabled // (FME = 1; SCL = I2CCLK/4)// ADB1 address buffer used (ADB = 0)// SDA Hold time of 300 ns (SDAHT = 0)// Bus free time of 16 I2C Clock pulses// (BFRET = 1)I2C1CON2 = 0x21;

// Enable I2C moduleI2C1CON0bits.EN = 1;

// Write operation (W/R bit = 0)I2C1ADB1 = (EE_SLAVE_ADDRESS<<1)|0;totalByteLength = EE_ADDR_BYTE_LENGTH

+DATA_BYTE_LENGTH;I2C1CNT = totalByteLength;

for(i = 0; i < totalByteLength; i++){ // Write to TXB starts communication I2C1TXB = *dataBlock; dataBlock++;

// Wait until TXB is empty while(!I2C1STAT1bits.TXBE); }

// Read operation (W/R bit = 1)I2C1ADB1 = (EE_SLAVE_ADDRESS<<1)|1;I2C1CNT = READ_BYTE_LENGTH;I2C1CON0bits.S = 1;

for(i = 0; i < READ_BYTE_LENGTH; i++){ while (!I2C1STAT1bits.RXBF); *readBlock = I2C1RXB; readBlock++;}

DS90003159A_JP - p. 8 2017 Microchip Technology Inc.

Page 9: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

スレーブモード

例 5 は、I2C モジュールを最大で 4 つの 7 ビットアド

レスを持つスレーブデバイスとして設定します。これらのアドレスレジスタは、全て同じアドレスを保持する事も、全て異なるアドレスを保持する事もできます。マスタデバイスが 4 つのアドレスの中のどれかを要求

した場合、スレーブ モジュールは ACK で応答します。

I2C スレーブは I2C マスタによる通信の開始を待機し

ます。このためにスレーブは、割り込みフラグとステータスビットを使って、データが送信されているのか受信されているのかを検出します。また、割り込みを使う事で、スレーブはソフトウェアによって次の動作を制御できます。モジュールを有効にする前にこれらの

割り込みを有効にしておく事で、I2C マスタが直後に

通信を開始しても、割り込みルーチンで処理する事ができます。

例 5: I2C スレーブモードの初期化

I2C スレーブ モジュールの割り込みサービスルーチンには各種の割り込みオプションが使えます。例 5 では、ACK割り込みホールド(ACKTIE)を有効にしています。この割り込みイベントがトリガされると、スレーブ ソフトウェアはクロックストレッチ中にデータバッファにアクセスできます ( 例 6 参照 )。同様の動作はアドレスホールド、データホールド、バッファフル、バッファエンプティ割り込みでも実行できます。ホールド割り込みの場合、ACKDTビットを変更してから CSTRをクリアする事でクロックストレッチを終了する事もできます。バッファ割り込みの場合、バッファの読み書きによってSCLが解放され (クロックストレッチが終了し )、通信が再開します。

例 6: I2C スレーブ割り込みサービス

// 7bit Slave Mode (MODE = 0)I2C1CON0 = 0x00;

// Slave Address MatchI2C1ADR0 = 0x98;I2C1ADR1 = 0x98;I2C1ADR2 = 0x98;I2C1ADR3 = 0x98;

// ACK for every valid byte (ACKDT = 0)// ACK at the end of a Read (ACKCNT = 0)// Clock stretching enabled (CSTRDIS = 0) I2C1CON1 = 0x00;

// Auto-count disabled (ACNT = 0)// General Call disabled (GCEN = 0)// Fast mode enabled (FME = 1)// ADB0 address buffer used (ADB = 0)// SDA Hold time of 30 ns (SDAHT = 2)// Bus free time of 8 I2C Clock pulses// (BFRET = 1)I2C1CON2 = 0x28;

// Clear all I2C flagsPIR3bits.I2C1F = 0;I2C1PIR = 0x00;

// Enable Global and I2C interruptsINTCON0bits.IPEN = 1; INTCON0bits.GIEH = 1; PIE3bits.I2C1IE = 1;PIE3bits.I2C1IP = 1;

// Enable local interrupt on ACK SequenceI2C1PIE = 0x40;

// Enable I2C moduleI2C1CON0bits.EN = 1;

void interrupt I2CSLAVE_ISR (void){ if (PIR3bits.I2C1IF){

// Clear the I2C interrupt flag PIR3bits.I2C1IF = 0;

// ACK Sequence Interrupt Detected if (I2C1PIRbits.ACKTIF){ // Clear the interrupt flag I2C1PIRbits.ACKTIF = 0;

// For Slave Read/Master Write if (!I2C1STAT0bits.R){

// Data Byte Receivedif (I2C1STAT0bits.D){

// Read from RXB*readBlock = I2C1RXB;readBlock++;

} } // For Slave Write/Master Read else {

// Write to TXBI2C1TXB = *dataBlock;dataBlock++;

} // Release SCL I2C1CON0bits.CSTR = 0; }

}else { // Other Interrupts…

}}

2017 Microchip Technology Inc. DS90003159A_JP - p. 9

Page 10: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

まとめ

I2C モジュールは、2 線式同期双方向インターフェイスとして、複数のマスタおよびスレーブデバイス間の通信をサポートします。追加のハードウェア サポート機能を使ったハードウェア プロトコル アクセラレーションにより、本モジュールは最小限のソフトウェアオーバーヘッドで動作できます。 追加のハードウェア サポート機能により、本モジュールは 1 データバイトあたり 1 回の割り込みだけで動作できます。DMA を追加した場合、本モジュールはメッセージあたり1回のCPU割り込みしか必要としません。

DS90003159A_JP - p. 10 2017 Microchip Technology Inc.

Page 11: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

TB3159

補遺 A: I2Cモ ジュール関連のレジスタとビット

表 A-1: I2Cモ ジュール関連のレジスタとビットの一覧

名称 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

I2CxBTO — — — — — BTO<2:0>I2CxCLK — — — — — CLK<2:0>I2CxPIE CNTIE ACKTIE — WRIE ADRIE PCIE RSCIE SCIEI2CxPIR CNTIF ACKTIF — WRIF ADRIF PCIF RSCIF SCIFI2CxERR — BTOIF BCLIF NACKIF — BTOIE BCLIE NACKIEI2CxSTAT0 BFRE SMA MMA R D — — —I2CxSTAT1 TXWE — TXBE — RXRE CLRBF — RXBFI2CxCON0 EN RSEN S CSTR MDR MODE<2:0>I2CxCON1 ACKCNT ACKDT ACKSTAT ACKT — RXOV TXU CSDI2CxCON2 ACNT GCEN FME ADB SDAHT<3:2> BFRET<1:0>I2CxADR0 ADR<7:0>I2CxADR1 ADR<7:1> —I2CxADR2 ADR<7:0>I2CxADR3 ADR<7:1> —I2CxADB0 ADB<7:0>I2CxADB1 ADB<7:0>I2CxCNT CNT<7:0>I2CxRXB RXB<7:0>I2CxTXB TXB<7:0>I2CxSDAPPS — — — I2CxSDAPPS<4:0>I2CxSCLPPS — — — I2CxSCLPPS<4:0>RxyI2C — SLEW PU<1:0> — — TH<1:0>

2017 Microchip Technology Inc. DS90003159A_JP - p. 11

Page 12: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

2017 Microchip Technology Inc.DS90003159A_JP - p. 12

本書に記載されているデバイス アプリケーション等に関する

情報は、ユーザの便宜のためにのみ提供されているものであ

り、更新によって無効とされる事があります。お客様のアプ

リケーションが仕様を満たす事を保証する責任は、お客様に

あります。Microchip 社は、明示的、暗黙的、書面、口頭、法

定のいずれであるかを問わず、本書に記載されている情報に

関して、状態、品質、性能、商品性、特定目的への適合性を

はじめとする、いかなる類の表明も保証も行いません。

Microchip 社は、本書の情報およびその使用に起因する一切の

責任を否認します。Microchip 社の明示的な書面による承認な

しに、生命維持装置あるいは生命安全用途に Microchip 社の製

品を使用する事は全て購入者のリスクとし、また購入者はこ

れによって発生したあらゆる損害、クレーム、訴訟、費用に

関して、Microchip 社は擁護され、免責され、損害をうけない

事に同意するものとします。暗黙的あるいは明示的を問わず、

Microchip社が知的財産権を保有しているライセンスは一切譲

渡されません。

商標

Microchip 社の名称と Microchip ロゴ、dsPIC、FlashFlex、KEELOQ、KEELOQ ロゴ、MPLAB、PIC、PICmicro、PICSTART、PIC32 ロゴ、rfPIC、SST、SST ロゴ、SuperFlash、UNI/O は、

米国およびその他の国における Microchip TechnologyIncorporated の登録商標です。

FilterLab、Hampshire、HI-TECH C、Linear Active Thermistor、MTP、SEEVAL、Embedded Control Solutions Company は、

米国における Microchip Technology Incorporated の登録商標

です。

Silicon Storage Technologyは、その他の国におけるMicrochipTechnology Incorporated の登録商標です。

Analog-for-the-Digital Age、Application Maestro、BodyCom、

chipKIT、chipKIT ロゴ、CodeGuard、dsPICDEM、dsPICDEM.net、dsPICworks、dsSPEAK、ECAN、ECONOMONITOR、FanSense、HI-TIDE、In-Circuit Serial Programming、ICSP、Mindi、MiWi、MPASM、MPF、MPLAB 認証ロゴ、MPLIB、MPLINK、mTouch、Omniscient Code Generation、PICC、PICC-18、PICDEM、

PICDEM.net、PICkit、PICtail、REAL ICE、rfLAB、Select Mode、SQI、Serial Quad I/O、Total Endurance、TSHARC、UniWinDriver、WiperLock、ZENA、Z-Scale は、米国およびその他の国におけ

る Microchip Technology Incorporatedの登録商標です。

SQTP は、米国における Microchip Technology Incorporatedのサービスマークです。

GestICとULPPは、その他の国におけるMicrochip TechnologyGermany II GmbH & Co. & KG (Microchip TechnologyIncorporated の子会社 ) の登録商標です。

その他、本書に記載されている商標は各社に帰属します。

©2013, Microchip Technology Incorporated, Printed in theU.S.A., All Rights Reserved.

ISBN: 978-1-5224-1610-4

Microchip 社製デバイスのコード保護機能に関して次の点にご注意ください。

• Microchip 社製品は、該当する Microchip 社データシートに記載の仕様を満たしています。

• Microchip 社では、通常の条件ならびに仕様に従って使用した場合、Microchip 社製品のセキュリティ レベルは、現在市場に流

通している同種製品の中でも最も高度であると考えています。

• しかし、コード保護機能を解除するための不正かつ違法な方法が存在する事もまた事実です。弊社の理解ではこうした手法は、

Microchip 社データシートにある動作仕様書以外の方法で Microchip 社製品を使用する事になります。このような行為は知的所

有権の侵害に該当する可能性が非常に高いと言えます。

• Microchip 社は、コードの保全性に懸念を抱くお客様と連携し、対応策に取り組んでいきます。

• Microchip 社を含む全ての半導体メーカーで、自社のコードのセキュリティを完全に保証できる企業はありません。コード保護

機能とは、Microchip 社が製品を「解読不能」として保証するものではありません。

コード保護機能は常に進歩しています。Microchip 社では、常に製品のコード保護機能の改善に取り組んでいます。Microchip 社

のコード保護機能の侵害は、デジタル ミレニアム著作権法に違反します。そのような行為によってソフトウェアまたはその他の著

Microchip 社では、Chandler および Tempe ( アリゾナ州 )、Gresham( オレゴン州 ) の本部、設計部およびウェハー製造工場そしてカリフォルニア州とインドのデザインセンターが ISO/TS-16949:2009 認証を取得しています。Microchip 社の品質システム プロセスおよび手順は、PIC® MCU および dsPIC® DSC、KEELOQ® コード ホッピング デバイス、シリアル EEPROM、マイクロペリフェラル、不揮発性メモリ、アナログ製品に採用されています。さらに、開発システムの設計と製造に関する Microchip 社の品質システムは ISO 9001:2000 認証を取得しています。

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

Page 13: TB3159 - Microchip Technologyww1.microchip.com/downloads/jp/AppNotes/90003159A_JP.pdfTB3159 DS90003159A_JP - p. 2 2017 Microchip Technology Inc. I2Cプロトコルの概要 I2Cモジュールは、Phillips®

DS90003159A_JP - p. 132017 Microchip Technology Inc.

北米本社2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel:480-792-7200 Fax:480-792-7277技術サポート : http://www.microchip.com/supportURL: www.microchip.com

アトランタDuluth, GA Tel:678-957-9614 Fax:678-957-1455

オースティン (TX)Tel:512-257-3370

ボストンWestborough, MA Tel:774-760-0087 Fax:774-760-0088

シカゴItasca, IL Tel:630-285-0071 Fax:630-285-0075

クリーブランドIndependence, OH Tel:216-447-0464

Fax:216-447-0643

ダラスAddison, TX Tel:972-818-7423 Fax:972-818-2924

デトロイトNovi, MI Tel:248-848-4000

ヒューストン (TX) Tel:281-894-5983

インディアナポリスNoblesville, IN Tel:317-773-8323Fax:317-773-5453

ロサンゼルスMission Viejo, CA Tel:949-462-9523 Fax:949-462-9608

ニューヨーク (NY) Tel:631-435-6000

サンノゼ (CA) Tel:408-735-9110

カナダ - トロントTel:905-673-0699 Fax:905-673-6509

アジア / 太平洋

アジア太平洋支社Suites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel:852-2943-5100Fax:852-2401-3431

オーストラリア - シドニーTel:61-2-9868-6733Fax:61-2-9868-6755

中国 - 北京Tel:86-10-8569-7000 Fax:86-10-8528-2104

中国 - 成都Tel:86-28-8665-5511Fax:86-28-8665-7889

中国 - 重慶Tel:86-23-8980-9588Fax:86-23-8980-9500

中国 - 東莞

Tel:86-769-8702-9880

中国 - 杭州Tel:86-571-8792-8115 Fax:86-571-8792-8116

中国 - 香港 SARTel:852-2943-5100 Fax:852-2401-3431

中国 - 南京Tel:86-25-8473-2460Fax:86-25-8473-2470

中国 - 青島Tel:86-532-8502-7355Fax:86-532-8502-7205

中国 - 上海Tel:86-21-5407-5533 Fax:86-21-5407-5066

中国 - 瀋陽Tel:86-24-2334-2829Fax:86-24-2334-2393

中国 - 深圳Tel:86-755-8864-2200 Fax:86-755-8203-1760

中国 - 武漢Tel:86-27-5980-5300Fax:86-27-5980-5118

中国 - 西安Tel:86-29-8833-7252Fax:86-29-8833-7256

アジア / 太平洋

中国 - 厦門Tel:86-592-2388138 Fax:86-592-2388130

中国 - 珠海Tel:86-756-3210040 Fax:86-756-3210049

インド - バンガロールTel:91-80-3090-4444 Fax:91-80-3090-4123

インド - ニューデリーTel:91-11-4160-8631Fax:91-11-4160-8632

インド - プネTel:91-20-3019-1500

日本 - 大阪Tel:81-6-6152-7160 Fax:81-6-6152-9310

日本 - 東京Tel:81-3-6880- 3770 Fax:81-3-6880-3771

韓国 - 大邱Tel:82-53-744-4301Fax:82-53-744-4302

韓国 - ソウルTel:82-2-554-7200Fax:82-2-558-5932 または 82-2-558-5934

マレーシア - クアラルンプールTel:60-3-6201-9857Fax:60-3-6201-9859

マレーシア - ペナンTel:60-4-227-8870Fax:60-4-227-4068

フィリピン - マニラTel:63-2-634-9065Fax:63-2-634-9069

シンガポールTel:65-6334-8870Fax:65-6334-8850

台湾 - 新竹Tel:886-3-5778-366Fax:886-3-5770-955

台湾 - 高雄Tel:886-7-213-7828

台湾 - 台北Tel:886-2-2508-8600 Fax:886-2-2508-0102

タイ - バンコクTel:66-2-694-1351Fax:66-2-694-1350

ヨーロッパ

オーストリア - ヴェルスTel:43-7242-2244-39

Fax:43-7242-2244-393

デンマーク - コペンハーゲンTel:45-4450-2828 Fax:45-4485-2829

フランス - パリTel:33-1-69-53-63-20 Fax:33-1-69-30-90-79

ドイツ - デュッセルドルフTel:49-2129-3766400

ドイツ - ミュンヘンTel:49-89-627-144-0 Fax:49-89-627-144-44

ドイツ - プフォルツハイムTel:49-7231-424750

イタリア - ミラノ Tel:39-0331-742611 Fax:39-0331-466781

イタリア - ベニスTel:39-049-7625286

オランダ - ドリューネンTel:31-416-690399 Fax:31-416-690340

ポーランド - ワルシャワTel:48-22-3325737

スペイン - マドリッドTel:34-91-708-08-90Fax:34-91-708-08-91

スウェーデン - ストックホルムTel:46-8-5090-4654

イギリス - ウォーキンガムTel:44-118-921-5800Fax:44-118-921-5820

各国の営業所とサービス

01/27/15