CDC-SPI
SPI (Serial Peripheral Interface Bus)は、デバイス間で同期式のシリアル通信を行うための規格です。デバイスはマスタースレーブ方式によるシフトクロック制御でデータ転送を行います。マスターからの8つのクロック送出によってスレーブと1バイトのデータが交換されます。 SPI バスはマイクロコントローラ、EEPROM、センサーなど多くのデバイスに用いられています。
SPI によるデータ交信
CDC-SPI はロースピードの CDC プロトコルを用いた、非インテリジェント型の COM-SPI ブリッジです。AVR マイコンは、バイトデータをホスト PC から USB 経由で受け取り、MOSI 信号線に出力します。また同時に、MISO 信号線のデータ入力を受信し、ホストへ戻します。
使い方
インストール方法は CDC-232 と同じですが、ボーレートは任意の値で構いません。バイナリのデータを PC のターミナルソフトやアプリケーションから仮想 COM ポート経由で送ります。
CDC-SPI にはスレーブ選択信号が2つ(ATtiny45 版は1つ)あります 。 /SS0 はホストからのブレーク送出で、/SS1 は DTR 信号で制御します。この2つをデコードすれば4つまでのスレーブデバイスを切り替えられます。
ATtiny45 へ実装した CDC-SPI
回路図
SPI 信号線の抵抗は、短絡保護用です。異なる電圧のスレーブに接続するときは、高めの値(3〜10Kオーム)にしてください。
ATtiny45 版ではスレーブ選択にリセットピンを使います。これにより ISP での再書き込みはできなくなります。
CDC-SPI for ATtiny45-20
ATtiny461 版と ATtiny2313 版ではクロック周波数を選択できます。
CDC-SPI for ATtiny2313-20
ATmega 版では4つの SPI モード(クロック極性と位相)を切り替えられます。詳細はデータシートを参照してください。
CDC-SPI for ATmega8/48/88-20
プログラム例
デバイスをシステムに組み込む前に、SPI プロトコルを試したいときがあります。このプログラムでは SPI のやり取りをテストできます。仮想 COM ポートを通して /SS 制御とデータの送受信を行うだけのものです。
これは EEPROM 93C46(AT93C46D)にアクセスする例です。
EEPROM (93C46) のテスト
C:\cdcspi.2010-02-06\spitest\release>spitest 13 CDC-SPI Tester by Osamu Tamura com13 < ss0 0 com13 < ss0 1 com13 < 2 60 ; EWEN com13 > FF FF com13 < ss0 0 com13 < ss0 1 com13 < 3 1 0 ; READ $01 com13 > FF FF FF ; = FF com13 < ss0 0 com13 < ss0 1 com13 < 2 81 73 ; WRITE $01 <= 73 com13 > FF FF FF com13 < ss0 0 com13 < ss0 1 com13 < 3 1 0 ; READ $01 com13 > FF FF 73 ; = 73 com13 < ss0 0 com13 < ss0 1 com13 < 3 81 ; ERASE $01 com13 > FF FF com13 < ss0 0 com13 < ss0 1 com13 < 3 1 0 ; READ $01 com13 > FF FF FF ; = FF com13 < ss0 0 com13 < ss0 1 com13 < 2 0 ; EWDS com13 > FF FF com13 < ss0 0 com13 < q ; quit
SPI を用いた身近な例として、AVR マイコンへのシリアル書き込みがあります。この SPI ブリッジを使えば AVR マイコンを簡単にプログラムできます。 このプログラム例では、SPI 書き込み可能な ATtiny/ATmega にプログラムを書き込めます(AT90*** には対応していません)。
ATmega8 へのダウンロード例
C:\cdcspi.2010-02-06\spiprog\release>spiprog -c13 -f8FFF spimega8.hex CDC-SPI AVR Programmer Ver. 0.5 by Osamu Tamura Signature: 1E-93-07 (Flash 8KB, Page 32words) LockBits: FF FuseBits: FF-8F-FF 2226 bytes loaded. Device erased. Writing ................................... done. Verifying ................................... done. Writing FuseBits [8F-FF] ... done. 2240 bytes programmed successfully.
CDC-SPI は、汎用の COM-SPI ブリッジです。AVR へのプログラムでは、1バイトの書き込みに往復で8バイトの USB データ転送を要します。書き込み用途のみを目的とされる方は、USBasp など他のプロジェクトを検討してください。
ソースコード、HEX ファイル、回路図やサンプルはダウンロードページに置いてあります。