LabVIEW通信入門 SPI(シリアル・ペリフェラル・インタフェース)
SPI(Serial Peripheral Interface シリアル・ペリフェラル・インタフェース)は、4線式の同期シリアル通信プロトコルです。高速かつ全二重通信が可能で、ADC/DAC、フラッシュメモリ、ディスプレイ、FPGA コンフィグレーション、RF トランシーバなど、広範なデバイスで採用されています。
本記事では、LabVIEWからSPIデバイスを制御するための基本知識、ハードウェア選定、手法、プログラミングで役立つノウハウを解説します。
SPIの特徴
- 同期式シリアル通信
SPIは同期通信方式で、マスタのクロック信号に合わせてデータを送受信します。 - 全二重通信
SPIは全二重通信をサポートして、同時にデータ送受信が可能です。 - シンプルなプロトコル
通信プロトコルがシンプルで高速かつ安定した通信を実現しますが、エラーチェックはソフトウェアで補います。
SPIプロトコルの基本
信号線
SPIは以下の4本の信号線で構成されます。
- SCK(Serial Clock シリアル・クロック)
マスタが生成するクロック信号で、通信の送受信タイミングを決定します。 - MOSI(Master Out Slave In マスター・アウト・スレーブ・イン)
マスタからスレーブへデータを送るための信号線です - MISO(Master In Slave Out マスター・イン・スレーブ・アウト)
はスレーブからマスタへデータを返すために使用されます。 - SS (Slave Select スレーブ・セレクト)
複数スレーブの中から通信対象を選択する信号線で、通常はアクティブLowです。
CS(Chip Select チップ・セレクト)などと表記される事があります。
クロック極性とクロック位相(CPOL/CPHA)
SPIには 4 つの動作モード の存在です。
| モード | CPOL | CPHA | クロックアイドル状態 | データサンプリングエッジ |
|---|---|---|---|---|
| Mode 0 | 0 | 0 | Low | 立ち上がりエッジ(最初でサンプル) |
| Mode 1 | 0 | 1 | Low | 立ち下がりエッジ(最後でサンプル) |
| Mode 2 | 1 | 0 | High | 立ち下がりエッジ(最初でサンプル) |
| Mode 3 | 1 | 1 | High | 立ち上がりエッジ(最後でサンプル) |
CPOL(Clock Polarity クロック・ポウラリティ):クロックのアイドル状態が Low(0)/High(1)
CPHA(Clock Phase クロック・フェーズ):データをサンプリングするのがクロックの最初エッジ/最後エッジ
デバイスのデータシートに記載された CPOL/CPHA 設定を合わせなければ、データ化けや通信ができないという問題が発生します。一般的なのはMode 0ですが、必ずデータシートで確認してください。
全二重通信
SPIはMOSIとMISOが独立しているため、マスタがクロックを供給する限り、送信と受信が同時に行われます。
- 読み出し時でも、マスタはダミーデータ(通常 0x00 or 0xFF )を送出する必要がある
- 最初のバイト交換では、スレーブはまだコマンドを受け取っていないため無効なデータを返す
通信速度
SPIにはプロトコル規格上の速度上限はなく、デバイスの仕様に依存します。
- 一般的なセンサ・EEPROM:1~20MHz
- 高速フラッシュメモリ:50~100MHz
- FPGA間通信:100MHz以上も可能
SPIとI²Cの比較
| 項目 | SPI | I²C |
|---|---|---|
| 通信方式 | 全二重 | 半二重 |
| 配線本数 | 最小4本(デバイス数に比例して増加) | 2本:SCL, SDA |
| マスタ/スレーブ | 1マスタ + 複数スレーブ | 1マスタ + 複数スレーブ(マルチマスタ可) |
| スレーブ選択 | CS信号(デバイスごとに1本) | アドレス指定 |
| 通信速度 | 高速(数MHz〜数十MHz) | 3.4 MHz(High Speed Mode)(標準: 100kHz) |
| プロトコルの複雑さ | シンプル | やや複雑(ACK/NACKあり) |
| エラーチェック | 基本なし(実装依存) | ACK/NACKによる確認あり |
| 配線距離 | 短距離向き | 比較的長距離向き |
| プルアップ抵抗 | 不要 | 必須 |
| 消費電力 | やや高め | 低消費電力 |
| 主な用途 | ADC, DAC, Flash, LCD | センサ, RTC, EEPROM |
| LabVIEWでの扱い | 専用SPIツール/ VISA / DAQ | VISA / I2C対応デバイス |
SPI が適するケース
- 高速データ転送が必要(ADC の連続サンプリングなど)
- 全二重通信が必要
- デバイス数が少ない(1~4 台程度)
I²Cが適するケース
- 配線数を最小化したい
- 多数のデバイスをバス接続したい
- 低速で十分(センサモニタリングなど)
LabVIEWからSPIを制御
- 専用LabVIEWツール(VI)を使用
NI・メーカーが提供しているデバイス専用APIを使用して、LabVIEWからSPI制御を行います。 - NI-VISAを使った外部機器通信
NI-VISAを利用しSPI対応外部機器と通信可能で、多様な機器接続に対応します - NI-DAQmxによるデジタルI/O制御
NI-DAQmx対応デバイスでクロックやデータ線をソフト制御します。柔軟ですが高速通信には不向きです。
SPI通信が可能なNIハードウェア例
| ハードウェア | 特徴 |
|---|---|
| NI USB-8451 | USB 接続の I2C/SPI マスタ。最大12MHz。LabVIEW ドライバあり |
| NI USB-8452 | USB-8451の後継機。最大50MHz。LabVIEW ドライバあり |
| CompactRIO | FPGA搭載。CシリーズDIOモジュール(例:NI-9401)とSPI/I2CドライバAPIで実装。 |
| sbRIO/Single-Board RIO | 組み込み向け。FPGA上でSPI通信IPを実装可能。 |
| FlexRIO/Rシリーズ | LabVIEW FPGAでSPI通信IPを実装可能。高性能・カスタム用途向け。 |
NI USB-8452

NI USB-8452は、集積回路(I2C)、シリアルペリフェラルインターフェース(SPI)デバイスに接続し、通信を行うためのマスターインターフェースです。
| モデル | USB-8452 |
| バスコネクタ | USB 2.0 |
| 最大I2Cクロックレート | 3.3 MHz |
| 最大SPIクロックレート | 50 MHz |
LabVIEWでSPI通信が可能なハードウェア例
| ハードウェア | 特徴 |
|---|---|
| Arduino | SPI/I2C/UART対応。 |
| Raspberry Pi | Linuxベース。SPI/I2C/UART対応。 |
| Analog Discovery 3 | 教育・評価用。SPI/I²C/UART/CANなどに対応。 |
VIパッケージマネージャー(VIPM)を用いて対応するLabVIEWのツールキットをダウンロードできます。
Analog Discovery 3

Analog Discovery 3は、デジタルオシロスコープ、ロジックアナライザ、波形発生器、パターンジェネレータなど、多彩な機能を備えた計測器です。
- 16個のデジタルI/Oチャネル(チャネルあたり最大125 MS/s)
- 個別に設定可能な3.3Vデジタル入力と出力、5Vトレラント入力
- SPI、I2C、UART、CAN、JTAG、ROMロジック、カスタムプロトコルなど対応
テストシステムでの活用例
- 高速 ADC データ収集
SPI 接続の高分解能 ADC(ADS1256, AD7768 など)から計測データを高速に取り込むシナリオです。FPGA ベースの SPI マスタと組み合わせることで、連続サンプリングとリアルタイムデータストリーミングが実現できます。 - フラッシュメモリの読み書き検査
製品に搭載された SPI フラッシュ(W25Q シリーズなど)に対し、ファームウェアイメージの書き込み・ベリファイ・消去を行います。セクタ消去やページプログラムのタイミング管理が実装のポイントです。 - RF トランシーバの設定・検査
SPI 経由で RF IC(Si4463、CC1101 など)のレジスタを設定し、各周波数・出力電力条件での送受信性能を評価します。TestStand のシーケンスと連動させることで、多条件の自動試験が可能です。 - DAC を用いたアナログ信号生成
SPI 接続の DAC(AD5761、MCP4921 など)を LabVIEW から制御し、任意波形や精密基準電圧を生成するシステムです。DUT への試験入力信号源として活用できます。
LabVIEW SPI通信プログラム例(NI USB-8452)
NI USB-8452を使用して、SPI通信で熱電対センサーMAX31855のデータを読み込みます。
- USB-8452との通信ポートを開く
- SPI通信の設定
- SPIデータを読み込み
- SPIデータを熱電対の温度データに換算
- USB-8452との通信ポートを閉じる


まとめ
- SPIは高速性、全二重通信、シンプルなプロトコル構造を特長とする通信インタフェースです。
- SPI制御はセンサや評価システムで幅広く応用可能で、正確な理解と注意が不可欠です。
- LabVIEWでは NI-845x ドライバによる手軽な実装から、FPGA によるカスタム高速実装まで、幅広い選択肢があります。
- LabVIEWを使うと複雑なSPI処理を視覚的かつ直感的に構築でき、開発効率が向上します。

