SPI_three_slaves2

en:User:Cburnett - 投稿者自身による作品 このW3C-unspecified ベクター画像Inkscapeで作成されました ., CC 表示-継承 3.0, リンクによる


spi_serial


改めてSPIについてを知る4の記事までで、同期方式のSPI通信のざっくりとした概要を整理することが出来た。


最後に


P6248915


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という見慣れない属性値がある。

UARTについてを知る3


SPI通信におけるモードは、クロック極性(CPOL:Clock Polarity)とクロック位相(CPHA:Clock Phase)の組み合わせで構成されている。

CPOLの値は 0 or 1 で 0 の場合は、クロックのアイドル状態が 0 になり、CPOLの値が 1 の場合はクロックのアイドル状態が 1 になる。


spi_serial


この図では、クロックのアイドル状態(SCLKの左端)が 0 (LOW)であるため、CPOLは 0 の状態を示している。




CPHAは私の理解が正しければ、


spi_serial2


クロックのどの位置でMOSIやMISOでデータの送受信時のデータの取得が発生しているか?で、CPHAが 0 の場合は①の箇所で、CPHAが 1 の場合は②の箇所になる。

※CPHAが 1 の場合は矢印の向きが逆になる。


CPOLとCPHAの組み合わせは下記の通り。

SPI モード極性 (CPOL)位相 (CPHA)
000
101
210
311