どちらもクロックに合わせてデータを読むシリアルバスです。I2Cは2線でアドレス指定し、一般的なSPIは4線で同時送受信します。
I2CとSPIの波形シミュレータ
1. バスと送信値を選択
2. 1段階ずつ進む
オレンジの点は受信側の標本化時点です。
I2C:2線とアドレス
SCLとSDAはプルアップでhighを保ち、装置はlowへ引くだけのオープンドレインです。複数装置で共有できます。
START後に7ビットアドレスとR/Wを送り、対象がACKします。SCLがlowでデータを変え、highで安定させます。high中のSDA変化はSTART/STOPです。
SPI:4線で同時送受信
SCK、MOSI、MISO、CSを使います。CSで対象を選ぶためアドレスは不要で、標準のACKもありません。8クロックで各側のシフトレジスタを交換します。
モード0はアイドルlow、立上りで読込みです。CPOL/CPHAによる他モードもあるため、装置仕様に合わせます。