XBeeモジュールの使い方(SPI Interface)


 XBee3 の STMにおいて、SPIインタフェースに関する設定(ConfigurationのSPI Interface)は、従来のTH(Through-Hole)バージョンにはなかった新しい機能です。STMでは、SPIピンを利用した外部デバイスとの通信が可能になっており、設定もXCTUなどから行えます。今回はこの新機能について解説します。  以下の図に示すように、従来のXBee3 THバージョンにはなかった新しい機能がXBee3 STMにおいて、XCTUのConfigurationにSPI Interfaceとして表示されています。

 XBee3のMicroPythonでSPI通信を使う際に、XBeeをマスターとしてSPIセンサ等を制御する用途ではConfigurationでSPIを有効化する必要はありません。また、ATAPやSIのようなAPIモードやホスト通信向けSPI設定は、MicroPythonからのSPIセンサ制御には関係ないため、XCTUには表示されていません。SIPを使用するには、MicroPythonで「machine.SPI()」を用いることでSPI通信はソフトウェア的に有効になります。

 以下にConfigurationのSPI Interfaceの項目を示します。デフォルトのままでSPI通信を使用できることが分かります。

名称機能デフォルト説明
P5DIO15/SPI_MISO ConfigurationSPI_MISO[1]Configure options for the DIO15/SPI_MISO line of the module. SMT pin 17 | MMT pin 16 Options include:SPI_MISO on SMT/MMT variant & Digital output
P6DIO16/SPI_MOSI ConfigurationSPI_MOSI[1]Configure options for the DIO16/SPI_MOSI line of the module. SMT pin 16 | MMT pin 15 Options include:SPI_MOSI on SMT/MMT variant & Digital output
P7DIO17/SPI_nSSEL ConfigurationSPI_nSSEL[1]Configure options for the DIO17/SPI_nSSEL line of the module. SMT pin 15 | MMT pin 14 Options include:SPI_nSSEL on SMT/MMT variant & Digital output
P8DIO18/SPI_CLK ConfigurationSPI_CLK[1]Configure options for the DIO18/SPI_CLK line of the module. SMT pin 14 | MMT pin 13 Options include:SPI_CLK on SMT/MMT variant & Digital output
P9DIO19/SPI_nATTN ConfigurationSPI_nATTN[1]Configure options for the DIO19/SPI_nATTN line of the module. SMT pin 12 | MMT pin 11 Options include:SPI_nATTN on SMT/MMT variant & Digital output

 念のため、XBee3 STMのSPIに関連したピンアサインを以下に示します。XBeeを正面から見て左上が1番ピンで、反時計回りにナンバリングされています。Digiの資料ではアクティブ・ローは上線(オーバーバー)で表示されていますが、ここでは「~ATTN」のようにチルダ(~)で表しています。アクティブ・ロー(Active Low)とはその信号が「Low(0V)」のときに有効になるということを意味します。例えば、「SPI~ATTN」の場合は12番ピンがLow(GNDに接続されている状態)になると、ATTNモードが有効になります。

ピン名称方向デフォルト説明
12SPI_~ATTN/ ~BOOTMODE/DIO19OutputOutputSerial peripheral Interface attention. Do not tie low on reset.
14SPI_CLK/DIO18InputInputSerial peripheral interface clock/ GPIO.
15SPI_~SSEL/DIO17InputInputSerial peripheral interface not select/GPIO.
16SPI_MOSI/DIO16InputInputSerial peripheral interface data in/ GPIO.
17SPI_MISO/DIO15OutputOutputSerial peripheral interface data out/GPIO.

【SPI(Serial Peripheral Interface)センサについて】

 SPIセンサは、マイコンやエッジデバイス(XBee、Raspberry Pi、Arduinoなど)と高速かつ安定した通信を行うために広く利用されているシリアル通信方式を使ったセンサです。以下に、SPIセンサの歴史、技術的特徴、長所、短所、代表例、入手方法などを詳しく解説します。

1. SPIセンサの歴史と背景

 SPIは、**Motorola社(現在のNXP)によって1980年代に開発されました。元々は自社製のMCU(マイクロコントローラ)と周辺機器を効率的に接続するためのシンプルな同期シリアル通信プロトコルとして設計されました。その後、SPIはすぐに業界標準となり、さまざまなデバイス(EEPROM、ADC、DAC、センサ、LCD等)に搭載されるようになり、SPIセンサというカテゴリーが生まれました。

2. SPI通信の技術的特徴

・通信方式はフルデュプレックス(送受信同時)方式です。

・通信速度は数Mbps〜最大数十Mbpsであり、一般的にI2Cより高速です。

・ピン数は最低4本(SCLK, MOSI, MISO, SS(CS))は必要です。

・通信距離は数十cm程度であり長距離には不向きです。      

・トポロジはマスタースレーブ方式であり複数スレーブが可能です。      

・クロック同期はクロック信号(SCLK)をマスターが提供します。周波数は1MHz〜10MHz程度が一般的である。

・電源電圧は3.3V or 5Vである。

3. SPIセンサの長所と短所

(長所)

・高速通信:通常のI2Cの10倍以上のスピードで通信可能。リアルタイム性が高い。

・安定性:ノイズに強く、データ誤りが少なくI2Cよりも堅牢である。

・単純なプロトコル:複雑なアドレッシング不要。CSピンの制御で接続先を決定

・高分解能データ向き:高速で大容量のデータを送受信できる。

・フルデュプレックス:同時に送信・受信ができるため、高速応答が可能。      

(短所)

・ピン数が多い:最低4本必要。複数デバイス接続時はさらにSS線が必要。

・通信距離が短い:高速だがノイズに弱く、長距離には不向き(数10cmが限界)

・標準規格が曖昧:デバイスごとに通信プロトコルが異なるため、個別対応が必要。

4. 代表的なSPIセンサの例

センサ名種類メーカー備考
ADXL345加速度センサAnalog Devices製I2CとSPIの両対応
ICM-20948IMU(加速度+ジャイロ)InvenSense製高速モーションセンサ
BMP390気圧センサBosch製高精度・高分解能
MAX6675熱電対(温度)センサMaxim製K型熱電対対応
MCP3008-I/PADC(外部A/DMicrochip製 10ビット 8チャネル ADC