マイコンに外部デバイスを接続する場合、I2C 通信同様にしばしば使われるのが SPI 通信(Serial Peripheral Interface)です。高速通信が可能なのでメモリや高速 ADC/DAC、SD カードなどに使われています。
1.SPI通信の基本構成
SPI通信の基本的な接続は図1のような4線式になっています。多くの場合マスタ側がマイコンで、スレーブ側が接続デバイスとなります。
本来は図1上側のように1対1の通信で4線式が基本となっていますが、この中の SS 信号(チップセレクト)を増やすことで図-1下側のように1対 N の通信も可能になります。この場合、各デバイスは SS が無効な場合、出力をハイインピーダンス状態にするようになっていることが必要です。
図1 SPI の接続構成
2.SPI 通信のモードとフレーム同期
通信はシンプルな同期式シリアル通信ですが、クロックと受信サンプリングのタイミングにより図2のような4つのモードがあります。このモードがマスタとスレーブで合っていないと通信はできません。
相手とするデバイス側がどのモードで動作するようになっているかを調べ、これに合わせたモードとする必要があります。しかし、データシートでもなかなか分かりにくいので、まず SCK が常時 High か Low かを確認できたら、あとは受信エッジの2通りだけですから、どちらかを確認すればよいことになります。
図2 マスタモードのときの4つの通信モードの送受信タイミング
SPI 通信では、シリアル通信のフレーム同期を SS 信号で行うのが一般的です。つまり図-3のように SS 信号の立下りが通信の開始を制御するようになっています。デバイスによっては、この SS 信号からクロックを受信できるようになるまでの時間に制限があることがありますから、デバイスのデータシートで確認が必要です。
図3 SS信号がフレーム同期となる
3.SPI を使う場合の留意事項
(1) クロック周波数の最高値に留意
接続相手のスレーブデバイスにより最高クロック周波数が決まっています。これを超えないように注意が必要です。
(2) データのビット順とビット数に注意
デバイスにより MSB/LSB のビット順が異なったり、データが8ビット以上の場合もあったりしますから、これに合わせる必要があります。
(3) 電圧レベルに注意
3.3V 系と 5V 系があるので、互いに合わせる必要があります。
(4) ダンピング抵抗の考慮
通信速度、配線長、パターンにより信号ラインに反射が起きて通信エラーが発生することがあります。これを回避するためダンピング抵抗を配線の出力側に直列に挿入します。
この反射が起きている現象をオシロスコープなどで確認するのはなかなか難しいので、時々通信エラーが起きるという現象がある場合は、ダンピング抵抗を挿入するのが効果的です。
ダンピング抵抗の値の目安は表1のようにします。挿入位置は出力側のピン近くとします。
表1 ダンピング抵抗の値
(5) 配線パターンの引き回しに注意
高速な SPI 通信の場合、基板のパターンの引き回しで通信エラーを引き起こすことがあります。パターンは基本的に次のことに留意が必要です。
- 配線はクロスさせない → クロストークが影響を与えます
- SCK ラインはできる限り短くし、グランド配線を隣接させて他の配線からの影響を最少化する
(6) 全二重通信に注意
全二重通信ですから、マスタが受信する場合でもデータを送信する必要があります。通常ダミーデータとして 0x00 を使うことが一般的ですが、デバイスにより指定されていることもあり確認が必要です。
以上がマイコンで SPI 通信を使う場合の留意事項となります。
著者プロフィール
後閑 哲也 Tetsuya Gokan
| 経歴 |
1971年 東北大学卒業後 大手通信機メーカにて各種の制御装置を開発 2003年 有限会社マイクロチップ・デザインラボ設立 |
|---|---|
| 現在の活動 |
|
| 書籍 (技術評論社) |
|
特別連載「マイコン(MCU)システム開発入門編」リンク
- 第1回: 組み込みシステムのシステム設計とは
- 第2回: ハードウェア設計方法
- 第3回: ソフトウェア設計方法
- 第4回: マイコンのハードウェア設計留意点
- 第5回: デジタル入出力インターフェースの設計留意点
- 第6回: アナログ入出力インターフェースの設計留意点
- 第7回: シリアル通信概要と UART を使う場合の留意点
- 第8回: I2C 通信を使う場合の留意点
- 第9回:SPI 通信を使う場合の留意点
- 第10回:PWM 制御を使う場合の留意点(4月公開予定)