SPIモード
SPIモードでは、USB-ISSは、マスターのみでスレーブにすることはできません。スレーブデバイスに対し、SCKでクロック信号を供給します。
USB-ISSは、常にPCより送信されたバイト数と同じバイト数を返信します。
フォーマットは、シンプルです。
送信 |
SPI コマンド (0x61) |
0x01 |
0x41 |
受信 |
ACK (0xFF) or NACK (0x00) |
0xnn |
0xnn |
全てのバイトを1回のシーケンスでUSB-ISSに送信してください。各バイト間に間が空くとUSB-ISSの内部コマンド同期ループが初期化され、無視されてしまいます。
コマンドを含め、最大フレーム長は、63バイトです。
ここでは、Microchip社のSPI SRAM 23K256をSPIモードで使用した例を示します。
23K256は、5Vでは動作しないので、USB-ISSの電圧切り替えショートピンを外して、3.3V動作にしなければならないことに注意してください。
電源を入れると23K256は、デフォルトでバイトモードになっています。
ここでは、任意のバイト数を1フレームで読み出し・書き込みができるように変更します。ステータスレジスターに書き込むためのコマンドは、下記のとおりです。
送信 |
SPI コマンド (0x61) |
0x01 |
0x41 |
受信 |
ACK (0xFF) or NACK (0x00) |
0xnn |
0xnn |
3バイトのコマンドです。0x01は、23K256の「ステータスレジスター書き込み」コマンドです。0x41が新たにステータスレジスターへ書き込む値で、23K256のシーケンシャルモードにしてホールドを無効にします。
それに対して、USB-ISSより同じバイト数の返信があります。上記では、1バイト目のみが有用な情報で、あとの0xnnは無視してもいいです。
次にSRAMへ4バイトのデータを書き込みます。
送信 |
SPI command (0x61) |
0x02 |
0x00 |
0x00 |
0x12 |
0x34 |
0x56 |
0x78 |
受信 |
ACK (0xFF) or NACK (0x00) |
0xnn |
0xnn |
0xnn |
0xnn |
0xnn |
0xnn |
0xnn |
この場合、SPIコマンドに続いて、23K256の書き込みコマンド0x02を初めに送ります。次にSRAMのアドレスを上位・下位の順で2バイトを送ります。その後、書き込むデータとして、0x12、0x34、0x56、0x78を送ります。
読み出しは下記のとおりです。
送信 |
SPI command (0x61) |
0x03 |
0x00 |
0x00 |
0xnn |
0xnn |
0xnn |
0xnn |
受信 |
ACK (0xFF) or NACK (0x00) |
0xnn |
0xnn |
0xnn |
0x12 |
0x34 |
0x56 |
0x78 |
23K256の読み出しコマンド0x03に続いて、SRAMのアドレスを上位・下位の順で2バイトを送ります。その後、読み出すのと同じバイト数の任意のデータ(0x00等)も送らなければなりません。