en:User:Cburnett - 投稿者自身による作品 このW3C-unspecified ベクター画像はInkscapeで作成されました ., CC 表示-継承 3.0, リンクによる
改めてSPIについてを知る4の記事までで、同期方式のSPI通信のざっくりとした概要を整理することが出来た。
最後に
BBC Micro:bitの方のMicroPythonのSPI通信の仕様を確認して、触れてないものがないか?を確認してみる。
microbit.spi.init(baudrate=1000000, bits=8, mode=0, sclk=pin13, mosi=pin15, miso=pin14)
SPI — BBC micro:bit MicroPython 1.0.1 ドキュメント
大体が今までの説明やUARTの時に触れた内容だけれども、modeという見慣れない属性値がある。
SPI通信におけるモードは、クロック極性(CPOL:Clock Polarity)とクロック位相(CPHA:Clock Phase)の組み合わせで構成されている。
CPOLの値は 0 or 1 で 0 の場合は、クロックのアイドル状態が 0 になり、CPOLの値が 1 の場合はクロックのアイドル状態が 1 になる。
この図では、クロックのアイドル状態(SCLKの左端)が 0 (LOW)であるため、CPOLは 0 の状態を示している。
CPHAは私の理解が正しければ、
クロックのどの位置でMOSIやMISOでデータの送受信時のデータの取得が発生しているか?で、CPHAが 0 の場合は①の箇所で、CPHAが 1 の場合は②の箇所になる。
※CPHAが 1 の場合は矢印の向きが逆になる。
CPOLとCPHAの組み合わせは下記の通り。
SPI モード | 極性 (CPOL) | 位相 (CPHA) |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
2 | 1 | 0 |
3 | 1 | 1 |