SPI

spi モジュールを使用すると、シリアルペリフェラルインターフェイス(SPI)バスを使用して、ボードに接続されたデバイスと通信できます。SPI はいわゆる、単一マスターでのマスター/スレーブアーキテクチャを使用します。SPI は3つの信号の接続を指定する必要があります:

  • SCLK : シリアルクロック(マスターから出力)。
  • MOSI : マスター出力、スレーブ入力(マスターから出力)。
  • MISO: マスター入力、スレーブ出力(スレーブから出力)。

関数

microbit.spi.init(baudrate=1000000, bits=8, mode=0, sclk=pin13, mosi=pin15, miso=pin14)

指定の端子 pin と指定のパラメータで SPI 通信を初期化します。正しい通信のためには、両方の通信デバイスでパラメータが同じでなければならないことに注意してください。

baudrate は通信速度を定義します。

bits は送信するバイト列のサイズを定義します。現在のところは bits=8 だけをサポートしています。しかし、これは将来的に変更するかもしれません。

mode は、以下の規則にしたがってクロックの極性と位相の組み合わせを決定します。極性は上位ビット、極性は下位ビットになります:

SPI モード 極性 (CPOL) 位相 (CPHA)
0 0 0
1 0 1
2 1 0
3 1 1

極性(CPOL)が 0 の場合、クロックがアイドル時には論理値 0、アクティブ時にはハイ(論理値 1)になることを意味します。極性が 1 の場合、クロックがアイドル時には論理値 1、アクティブ時にはロー(論理値 0)になることを意味します。位相(CPHA)0 の場合はデータがクロックのリーディングエッジでサンプリングされ、1 の場合はトレーリングエッジでサンプリングされることを意味します(エッジについては https://en.wikipedia.org/wiki/Signal_edge を参照)。

sclk, mosi, miso 引数には、信号のそれぞれのタイプに使う端子を指定します。

spi.read(nbytes)

最大 nbytes を読み込みます。読み込んだものを返します。

spi.write(buffer)

バイト列の buffer をバスに書き出します。

spi.write_readinto(out, in)

out バッファをバスに書き出し、応答を in バッファに読み込みます。2つのバッファーの長さは同じでなければなりません。2つのバッファは同じオブジェクトでもかまいません。