*概要 [#l6838bb3]
-3pin式双方向シリアル通信規格(I2C, UARTの同様)
-MasterとSlaveがある(1:n)
-一回の通信で,双方の8bitのレジスタの内容を入れ替えることで実現([[シフトレジスタ>http://www.geocities.jp/zattouka/GarageHouse/micon/SPI/SPI.htm]])
-MISO (Master In Slave Out)とMOSI (Master Out Slave In)は,全デバイスn個で共有
--通信対象のデバイスを指定するためのCS (Chip Select)がn本必要([[CS>http://toragi.cqpub.co.jp/Portals/0/backnumber/2006/06/p153-154.pdf]])
*参考 [#gae820e4]
-http://www.eleki-jack.com/2007/04/1233.html
-http://www.geocities.jp/zattouka/GarageHouse/micon/SPI/SPI.htm(シフトレジスタのリング接続の説明がわかりやすい)
*SPIの実波形 [#u38776fa]
(http://www.eleki-jack.com/2007/04/1233.htmlから引用)
-http://www.eleki-jack.com/archives/images/SPIWave.gif
*Arduinoのわかりやすいサンプル [#rca19176]
-http://www.wsnak.com/wsnakblog/?p=679
*実装 [#f3c34117]
-''SPIのMaster側は全てGPIOで実装可能''([[これ>http://www.eleki-jack.com/archives/images/SPIWave.gif]]を実際に作り出せば良い)
-省略
--片方向通信では,MISO, MOSIが省略可能(省略時は結線しない,[[参考>http://www.avr.jp/user/AN/PDF/AVR151.pdf]]
--スレーブが1つの場合は,SSが省略可能(省略時はHIGHに?)