概要
設計リソース
評価用ボード
型番に"Z"が付いているものは、RoHS対応製品です。 本回路の評価には以下の評価用ボードが必要です。
- EVAL-CN0564-ARDZ ($80.25) SPI and I2C Bus Extender Arduino Shield
デバイス・ドライバ
コンポーネントのデジタル・インターフェースとを介して通信するために使用されるCコードやFPGAコードなどのソフトウェアです。
機能と利点
- SPI/I2Cバスを1200mまで延長
- 最大+/-25Vのグラウンド電位絶縁
- フォルト保護モニタリング
参考資料
-
CN0564 User Guide2022/01/27WIKI
-
CN0564: 工業用アプリケーション向けの堅牢な SPI/I2C 通信 (Rev. 0)2022/01/27PDF1 M
回路機能とその特長
シリアル・ペリフェラル・インターフェース(SPI)およびInter-Integrated Circuit(I2C)インターフェースは、コントローラと外部周辺機器を結ぶ短距離のボード内接続を実現するために一般に用いられている、通信のデファクト・スタンダードです。SPI および I2C は、ハードウェアやソフトウェアのサポートが多くの分野にわたって整っているため、センサー、アクチュエータ、データ・コンバータなどのメーカに広く採用されている規格です。コントローラと周辺機器が同じ基板上にあり、共通のグランド・プレーンを共有し、相互の間隔が長くない(1m未満)場合、これらのインターフェースは簡単に実装できます。
ただし、状態基準保全、ファクトリ・オートメーション、建設オートメーション、構造モニタリングなどのアプリケーションでは、通常、周辺機器をコントローラから離れた場所に設置する必要があります。これまで、システム設計者は、全体的なコストと消費電力が増加するにも関わらず、リピータや高い駆動能力を持つドライバを使用してこれらのインターフェースを延長してきました。図 1 に示す回路は、簡単に、かつ、回路部品数の増加、動作速度の低下、ソフトウェアの複雑化などを伴わずに、長距離の堅牢な SPI/I2C 通信を実現するものです。ノイズが多い過酷な工業環境でのエラー・フリー動作には、大きなグラウンド電位差に対する耐性が必要です。
この SPI/I2C エクステンダは、最長1200mの距離を±25V(SPI通信の場合)および±15V(I2C通信の場合)の拡張コモンモード電圧範囲で動作する、堅牢なトランシーバーを備えています。各リンクのケーブル端には 3V~5.5Vで給電可能なデバイスが 1 つずつあります。また、別のロジック電源により、I2C または SPI インターフェースが 1.62V~5.5Vで動作できます。更に、このエクステンダは、フォルト・モニタリングのための内部制御インターフェースを備えています。これは、長距離で機器をモニタリングする場合に非常に重要となります。
回路説明
I2C 信号処理規格の概要
I2C は、双方向の 2 線式インターフェースのためのシリアル・プロトコルで、EEPROM、A/D コンバータ、D/A コンバータ、I/Oインターフェース、その他の周辺機器などの低速デバイスを組込みプロセッサに接続するものです。簡素で拡張性があるため、センサーに非常によく用いられます。バスには複数のデバイスを使用でき、それぞれが固有のアドレスを持ちます。わずか 2線でデバイス間のデータ転送ができます。その 2 線は次のとおりです。
- SCL − シリアル・クロック・シグナル・ライン。
- SDA − コントローラと周辺機器間でデータの送受信を行うシリアル・データ・ライン。
SCL シグナルと SDA シグナルは、オープンドレイン・ロジックで、ロジック・レベルとタイミング仕様はI2Cバス仕様およびユーザ・マニュアル(Specification − I2C Bus)で定義されています。
I2C バスで使用できる周辺機器数は、アドレス空間と最大合計バス容量(400pF)で制限されます。オープンドレイン・ロジックはインピーダンスが比較的高くノイズ耐性が低いため、すべての周辺機器には共通グラウンドへの低インピーダンス接続が必要で、また、最大バス長は 100kHz の場合で約 1m に制限されます。これに対し、CN0564は、バス長が最大1200mに延長されると共にコントローラと周辺機器間のコモンモード電圧差が±15Vまで耐えられる、差動トランシーバーを備えています。
SDA は本質的に双方向で、コントローラと周辺機器の間のデータ・フローはトランザクションのコース全体で方向が変わります。それほど一般的ではありませんが、I2C はクロック・ストレッチングに対応します。この場合、周辺機器は SCK をローに保持してクロック・レートを低下させます。したがって、SCL も双方向です。I2C が双方向であるため、バッファと共に拡張すること、絶縁すること、他の物理層に変換することは、複数のロジック・レベルやその他標準的でない技術が必要となるため、不適当です。
一般的な I2C のバス速度は、100kHz(標準モード)および400kHz(高速モード)です。LTC4331コントローラ・インターフェースは、2000kHzまでの一般的なすべての I2C クロックに対応できます。ただし、クロック周波数が高くケーブル長が長い場合には、SCL クロック・ストレッチングに十分に対応するコントローラを推奨します(詳細は LTC4331 のデータシートを参照してください)。
SPI 信号処理規格の概要
シリアル・ペリフェラル・インターフェース(SPI)は、同期式シリアル通信インターフェースの仕様で、組込みシステムなどの短距離通信で使用されます。I2C とは異なり、厳格に定義されているわけではありません。様々なクロック周波数、ロジック・レベル、タイミング関係に対応できますが、コントローラと周辺機器の仕様を注意深く確認する必要があります。SPIは全二重通信です(つまり、データはコントローラから周辺機器への方向とその逆方向に同時に流れることができます)。
SPI の物理層は次の 4 つの信号で構成されています。
- SCLK − シリアル・クロック。通常はコントローラによって駆動されます。
- MISO − コントローラのデータ入力、周辺機器のデータ出力。
- MOSI − コントローラのデータ出力、周辺機器のデータ入力。
- CS − チップ・セレクトは、周辺機器との通信を可能にします。周辺機器ごとに 1 つの CS ラインが必要です。
SPIピンはプッシュプル・ロジックを使用し(オープンドレインではありません)、コントローラと周辺機器のロジック・レベルが一致している必要があります。周辺機器ごとに固有の CS信号が必要で、そのため、SPIバスの物理的な拡張は一層複雑になります。
クロックとデータの間には、4 通りのクロッキング構成に対応するモード(0、1、2、3)として示される、4 種類のタイミング関係がサポートされています。各トランザクションは、チップ・セレクト・ラインがロジック・ローに駆動されると開始されます(チップ・セレクトは通常アクティブ・ローの信号です)。チップ・セレクト、データ、クロック・ラインの間の正確な関係は、クロックの極性(CPOL)とクロックの位相(CPHA)がどのように設定されているかによって異なります。4 つのモードの概要を図 2 にまとめます。
LTC4332 は、機器ごとに固有の CS ラインを持つ、最大 3 つの周辺機器に対応できます。各周辺機器の SPI モードは個別にモード 0、1、2、3 に設定できます。コントローラから周辺機器にはデータがそのまま伝送されますが、周辺機器からコントローラへのデータには 1 ワード分の遅延が生じます。詳細については、1 ワードの遅延 − SPI 読出しコマンドを参照してください。
システム・トポロジ
CN0564 は、I2C 信号および SPI 信号の伝送距離を 1200m まで延長するために、LTC4331 および LTC4332 を使用します。リンクごとに 1 組のデバイスがあり、コントローラ側がローカル・モード(REMOTE ピンがローに接続)、周辺機器側のデバイスがリモート・モード(REMOTE ピンがハイに接続)に設定されています。
LTC4332/LTC4331 は、コントローラからの SPI/I2C 信号を差動信号にコード化し、この差動信号がケーブルのツイスト・ペアを通じて伝送されます。ケーブルのリモート端では、この差動信号がリモートの LTC4332/LTC4331 で受信され、SPI/I2C に復号されます。そしてリモートの周辺機器にルーティングされます。通常動作の場合、リモートの周辺機器はローカル・コントローラによって生じたイベントを反映します。
選択可能なボー・レート
LTC4332/LTC4331 は、ローカルとリモートのリンク間を伝搬するデータの速度であるリンク・ボー・レートを、選択可能な速度指数(表 1 および表 2 を参照)を使用して変更できます。この速度指数は、リンクおよびインターフェースのタイミング選択ピンであるSPEED1およびSPEED2(どちらもスリーステート入力)を使用して設定できます。
ケーブル全体でボー・レートを選択できるため、アプリケーション条件に応じて性能とケーブル長のバランスを取ることができます。ただしリンクの両端は同じ速度設定にしなくてはなりません。
Speed Index | Effective I2C Link Rate (kHz) | Max Cable Length (m) |
8 | 1000 | 30 |
7 | 500 | 60 |
6 | 250 | 200 |
5 | 125 | 600 |
4 | 100 | 1200 |
3 | 63 | 1200+ |
2 | 31 | 1200+ |
1 | 20 | 1200+ |
0 | 12.5 | 1200+ |
Speed Index | Max SCLK Frequency (kHz) | Max Cable Length (m) |
8 | 2000 | 30 |
7 | 1000 | 60 |
6 | 500 | 150 |
5 | 250 | 250 |
4 | 125 | 500 |
3 | 83 | 750 |
2 | 63 | 1000 |
1 | 31 | 1200 |
0 | 25 | 1200+ |
延長されたケーブル長での伝送
LTC4332/LTC4331 は高速差動トランシーバーを使用して、最長1200m のリンク長にわたり信号をやり取りします。I2C/SPI 信号は差動信号に変換されて、高速高品質な信号伝送、ノイズ耐性、同相ノイズ除去を実現します。所定の SPEED 設定に対し、LTC4331について表1に示したケーブル長仕様、およびLTC4332について表 2 に示したケーブル長仕様を遵守する必要があります。そうしなければ、リンクは動作しません。表の値は、実験室環境で Cat5E イーサネット・ケーブルを用いて記録されたものです。実際の最大ケーブル長は、ケーブルの種類やアプリケーション環境によって異なることに注意してください。
コモンモード電圧と ESD に対する堅牢性
差動トランシーバーは、SPI エクステンダについては±25V の拡張コモンモード電圧範囲、I2C エクステンダについては±15V の拡張コモンモード電圧範囲で動作し、ノイズの多い環境やグラウンド電位差のあるシステムに最適です(図 1 参照)。
インターフェース・ピン(LTC4331のAおよびBピン、LTC4332の A、B、Y、Zピン)には±60Vまでのフォルトに対する保護機能があります。また、これらのインターフェース・ピンは、極めて堅牢な静電気放電(ESD)保護機能を備えており、すべての動作モードまたは無給電時において、ラッチアップや損傷を受けることなく、GND および VCC(GND との間に 4.7µF を接続)を基準とする±40kV の HBM ESD(人体モデル・テスト)から保護されています。
LTC4331/LTC4332 の ESD はどちらも、国際電気標準会議(IEC)の ESD 試験と EFT(電気的ファスト・トランジェント)試験に合格しています。IEC ESD のストレスは、ピーク電流、振幅、立上がり時間に関し HBM試験のストレスを上回っているのに対し、EFT 試験は繰返しストレスがより長時間になっています。この保護レベルにより、LTC4332/LTC4331 は、現実に発生する様々な障害に対し堅牢なものとなっています。
1 ワードの遅延 − SPI 読出しコマンド
I2C 通信の場合、LTC4331(ローカル) − LTC4331(リモート)のリンクは、トランスペアレントです。つまり、リモートの周辺機器はローカル・コントローラからはローカル機器のように見えます。
しかし、SPI エクステンダ・ソリューションの場合、LTC4332(ローカル) − LTC4332(リモート)には、読出しアクセスの間のみ、1 ワードの遅延が生じます。SPI コントローラから周辺機器に送信されたデータには、コントローラによって開始されたインターフェース・クロック(SCK)と同じ遅延が生じるため、双方はデータ・リンク全域にわたり同期を維持します。
反対方向に関しては、最初のクロック・エッジが周辺機器に到達したときにのみ、周辺機器は MISO データをコントローラに送信します。このデータはコントローラに戻る途中で 2 回目の遅延を生じるため、MISOデータはケーブルの伝搬遅延の 2 倍分だけ同期から外れます。物理的に離れたデバイスには、伝搬遅延を各ビット幅内に収めるために、クロック・レートを著しく低下させる必要が生じます。この制限を克服するため、LTC4332 では、図 3 に示すように MISO 信号パスにシフト・レジスタを導入しています。
その結果、リモートの周辺機器に対する SPI の書込み要求では、ソフトウェア上はリモートとローカルの区別は不要(透過的)となりますが、リモートの周辺機器に対する SPI 読出しコマンドの場合は、1 ワードの遅延を余儀なくされるため、読出しコマンドは 1 ワード分の延長が必要です。延長がない場合、チップ・セレクトがデアサートされると、最後のワードが LTC4332の MISO シフト・レジスタで失われます。LTC4332 の MISO 信号パスでのシフト・レジスタの深さを示す WORD_LENGTH レジスタ(LTC4332 のデータシートのレジスタ・マップを参照)は、SPI コントローラが MISO ラインで有効なデータを受信し始めるタイミングを指示します。例えば、WORD_LENGTHが 8 の場合、ユーザが有効な MISO データを受信し始めるのは、 CSがアサートされてから 8 クロック・サイクル後となります。
フォルト・モニタリング
LTC4331/ LTC4332 の LINK ピンは通信リンクの状態を示すもので、ローに駆動されることで、リモートの I2C/SPI バスがローカルの I2C/SPI バスと結合したことを示します。
LTC4331/ LTC4332 は、割込み信号に対応します。LTC4331 のALERT および LTC4332 の INT です。これらの信号はリモートのバスからローカルのバスにミラーリングされます。リモート端ではこれらの割込みピンは、接続されている I2C/SPI 周辺機器の割込み出力に接続できる入力となります。ローカル側では、ALERT / INT は、共有しているローカルの割込みラインに接続可能なオープンドレイン出力として動作します。ローカルのLTC4331/LTC4332 の制御インターフェースが有効化されている場合、インターフェースは ALERT / INT ピンを使用してリンク・イベントやフォルト・イベントをレポートします。ローカル側の ALERT / INT 出力は、リモートの ALERT / INT と内部エンドポイントの割込み信号との論理積です。
ローカル側の LTC4331/LTC4332 は、ON ピンを 180ms 以上ローに維持することで、リモート側のリセットをトリガすることもできます。リンクが切断されると、リモートのLTC4331/LTC4332 は 180ms 後に自動でリセットされます。リモート・リセットにより、リモート側のすべての出力はリンク通信が回復するまで無効化されます。
LTC4331/LTC4332 制御インターフェース
LTC4331/LTC4332 リンクのローカル側の制御インターフェースを設定するために、内部でアドレス設定可能な周辺機器を別に使用できます。ローカルの LTC4331 の内部インターフェースには、ピン A1 とピン A2 を設定することで固有の I2C アドレスを指定できます。これに対し、LTC4332 は、別のチップ・セレクト・ピン SSC を備えており、ユーザは SPI アドレスの設定が可能な内部レジスタと通信を行うことができます。
LTC4331/LTC4332 の制御インターフェースを使用すると、追加の I2C/SPI 固有オプションを利用することができることに加え、速度設定、リンク状態、割込み/アラート状態を読み出すこともできます。LTC4331 は、I2C アドレスをリモートの周辺機器に変換するよう設定して、I2C のアドレス空間を拡張しアドレスの重複を防ぐことができます。LTC4332 は、ワード長(これにより受信データ遅延が決まります)の他、 CS ピンごとに個別のSPI モード設定が可能です。詳細については、LTC4331 およびLTC4332 のデータシートを参照してください。
PCB のサイズ
PCB 設計において、コンポーネントの密度を増加すると複雑な問題が生じます。SPI または I2C をエンコードするためには通常、マイクロコントローラを追加する必要がありますが、これによりソリューションのコストとサイズの両方が増加します。しかし、CN0564 を使用すると、リモート側にマイクロコントローラを追加する必要はありません。これにより、PCB の使用面積を小さくでき、全体的な製造コストを削減し、機能を追加するために他の部品を配置する余地を残した、小型のセンサー・ソリューションが可能となります。
センサー・インターフェース機能の拡張
これまで、伝送距離を伸ばすために、センサー・インターフェースは 0~10V、または、4~20mAなどのアナログ信号技術を使用してきました。例えば、状態監視アプリケーションでは、振動センサーに用いられる信号処理の標準として、集積電子圧電(IEPE)センサー・インターフェースが最も一般的に用いられています。これは、振動センサーに一定の電流を供給し、同じワイヤでセンサーの出力電圧を読み出します。この 2 線式システムにより、AC 信号を伝送する場合にはシステム設計が簡素化できますが、フォルト・モニタリングを行ったり設定構成可能なものにしたりすることはできません。これに対し、LTC4332/LTC4331 では、柔軟な設定構成、処理、フォルト時の容易なデバッグなどを、デジタル出力センサー上で直接行うことができます。
回路の評価とテスト
以下のセクションでは、CN0564 のセットアップおよびテスト方法を説明します。EVAL-CN0564-ARDZ を Arduino(アルドゥイーノ)またはArduino互換デバイスと併用して EVAL-ADXL357Zの加速度データ読出しを行うことで、SPI エクステンダ(LTC4332)および I2C エクステンダ(LTC4331)のどちらも簡単に評価できます。次のセクションでは、EVAL-CN0564-ARDZでの SPI エクステンダ(ローカルおよびリモートの LTC4332)をセットアップに焦点を置きます。
SPI エクステンダおよび I2C エクステンダ(ローカルおよびリモートの LTC4331/LTC4332)のセットアップの詳細および手順については、EVAL-CN0564-ARDZ User Guide を参照してください。
必要な装置
- USB ポートを備えた PC
- EVAL-CN0564-ARDZ 評価用ボード
- EVAL-ADXL357 評価用ボード
- EVAL-XLMOUNT1
- Arduino UNO Rev 3
- USB タイプ A-USB タイプ B 変換ケーブル
- ジャンパ線
- 5V/3.3V 電源
開始にあたって
- EVAL-CN0564-ARDZ 評価用ボードの SPI エクステンダまたは I2C エクステンダを評価するために提供されているArduino スケッチをダウンロードし、それを使用してArduino をプログラムします。
- EVAL-CN0564-ARDZ ボードを Arduino Uno Rev 3 に差し込みます。
- EVAL-CN0564-ARDZ の LTC4332(リモート側)を EVAL-ADXL357 に接続します。
- ツイスト・ペアのジャンパ線を使用して、LTC4332(ローカル側)を LTC4332(リモート側)に接続します。
- ジャンパ接続は次のように行います。
- EVAL-CN0564-ARDZ で P10 のピン 2 とピン 3 が接続されるよう、P10 のジャンパを設けます。これにより 5V 電源が選択されます。
- ローカルの LTC4332 のスレーブ/チップ・セレクト・ピンを Arduino Uno Rev 3 の D10 ピンに接続するために、JP1 ジャンパをポジション D に配置します。
- ローカルの LTC4332 の LINK ピンを Arduino Uno Rev 3 の D6 ピンに接続するために、JP5 ジャンパをポジション A に配置します。
- ローカルの LTC4332 の割込みピンを Arduino Uno Rev 3 の D2 ピンに接続するために、JP3 ジャンパをポジション B に配置します。
- デフォルトでは、リモートの LTC4332 に対し速度指数 8 が選択されています。ローカル側の速度指数はリモート側と同じであることが必要です。
- P1 ジャンパをピン 2 とピン 3 が接続される位置に配置します。同様に、P2 ジャンパをピン 2 とピン 3 が接続される位置に配置します。これによって、速度指数 8 が選択され、ローカル側の速度指数が一致します。
- P19 ジャンパをピン 1 とピン 2 が接続されるよう配置します。これによって、ローカルの LTC4332 の ONピンが IOREF に接続されます。これで入力が可能となります。
システムのテスト
EVAL-ADXL357Z とリモートの LTC4332 を EVAL-XLMOUNT1に組み込み、電源をオンにしてボードに給電します。これにより、EVAL-CN0564-ARDZ ボードの 3 個の LED が点灯します(ローカル側で 2 個、リモート側で 1 個)。システム全体のブロック図については図 9 を参照してください。MEMS 加速度センサー(リモート側の EVAL-ADXL357Z)が読み出す X、Y、Z データは、Arduino シリアル・モニタに出力されます。Arduino シリアル・モニタを終了し、Python Real Time ADXL357 Data Plotter executable を実行すると、図 10 のグラフのように加速度データのリアルタイム・プロットが表示されます。
X、Y、Z の加速度(g)データは、python スクリプトによって 3つのファイルに別々に保管され、その実行可能ファイルのある場所に置かれます。
図 11 に示す FFT 解析を得ることもでき、これによって、X、Y、Z について得られたデータを使用して必要な周波数を識別できます。FFT 解析は多くの場合、回転部品の健全性をモニタするために使用されます。予防メンテナンス(PdM)は、動作中の装置をモニタして故障の兆候を早期に検出する、スマート・インダストリの鍵となる要素です。状態基準保全(CbM)システムにおける振動データの解析方法の詳細については、この記事を参照してください。