Skip to main content

SPI mode Guide

1. はじめに

W55RP20-S2EはSPIスレーブモードで動作し、ATコマンドを使用して制御できます。このモードでサポートされる最大SPIクロック速度は10 MHzです。MCUと通信するためには、SPIピンを接続し、UART_SPI_SEL (GPIO13) ピンをHighに設定してSPIを使用する必要があります。W55RP20-S2EのSPIピン配置については、図1を参照してください。
W55RP20-S2E(SPIスレーブ)がデータを送信する必要がある場合、SPI_INT (GPIO26) 信号をLowに設定し、SPIマスターが読み取れるようにします。通信が時々中断される場合は、Config Toolを使用してシリアルデバッグを無効にしてください。

2. Githubリンク

  • W55RP20-S2E用のSPIマスターコードは以下で確認できます:

Github : W55RP20-S2E - SPI Mode Master

3. ピン配置

機能ピン番号シンボル説明
SPI_SCK67GPIO2データSPI送信(SPIモード)のためのSCK入力ピン
SPI_MISO68GPIO3データSPI受信(SPIモード)のためのMISOピン
SPI_MOSI9GPIO4データSPI送信(SPIモード)のためのMOSIピン
SPI_CSn10GPIO5SPIチップセレクトピン(SPIモード)
SPI_INT46GPIO26SPIマスターのデータ受信待機ピン
UART_SPI_SEL19GPIO13UART/SPIインターフェース選択ピン
(High: SPI, Low/NC: UART)
Debug_UART_TX65GPIO0デバッグメッセージを出力するためのTXピン
Debug_UART_RX66GPIO1デバッグメッセージを出力するためのRXピン

4. SPIフレームフォーマット

W55RP20-S2Eは、SPIマスターによって送信されるSPIフレームに基づいて動作します。SPIフレームフォーマットは、データフレームとATコマンドフレーム(AT CMD Frame)で構成されます。
すべてのコマンドは4バイト長です。例えば、データ読み取りコマンドは以下で構成されます:

  • 1バイトのコマンド (0xB0)
  • 3バイトのダミーバイト (0xFF * 3)

4.1 マスター データフレーム

4.1.1 TXデータフレーム

TCPまたはUDPデータを送信するには、以下の手順に従います:

  1. マスターはデータ送信を開始するために0xA0を書き込み、送信するデータのサイズを指定するデータ長(2バイト)を指定し、これを0xFF(ダミーバイト)と共に送信し、合計4バイトを形成します。
  2. マスターはスレーブが*ACKで応答するまで0xFFを送信して待機します。
  3. スレーブはACKを示すために0x0A + 3バイトのダミーバイト (0xFF) で応答します。
  4. マスターはデータフェーズでデータを送信します。
  5. 完了後、スレーブはACKを送信します。

*NACK : マスターがデータ長を2048バイト以上に設定した場合、またはスレーブがネットワークに接続されていない場合、スレーブはNACK (0x0B + 3バイトのダミーバイト (0xFF)) で応答します。

図: SPI TXデータフレーム①
図: SPI TXデータフレーム②

4.1.2 RXデータフレーム

TCPまたはUDPデータを受信するには、以下の手順に従います:

  1. SPI_INT信号がLowになったとき、マスターは読み取り操作を開始します。
  2. マスターは0xB0を書き込み、3バイトのダミーバイト (0xFF) を送信します。
  3. マスターはスレーブが応答するまで0xFFを送信して待機します。
  4. スレーブは0xB1、データ長(リトルエンディアン形式で2バイト)、および0xFF(ダミーバイト)で応答します。
  5. スレーブはデータフェーズでデータを送信します。
  6. 完了後、SPI_INT信号はHighに設定されます。
図: SPI RXデータフレーム①
図: SPI RXデータフレーム②

4.2 マスターAT CMDフレーム

4.2.1 AT CMD TX(SET)フレーム

ATコマンドを送信するには、以下の手順に従います:

  1. マスターはATコマンドの最初の2バイトを送信します。
  2. AT CMDモードではメッセージの最後に0x0Dと0x0Aを送信する必要があるため、マスターはメッセージ全体の長さから2を引いたデータ長を送信します。データ長はリトルエンディアン形式の2バイト値として指定されます。
  3. マスターはスレーブがACKで応答するまで0xFFを送信して待機します。
  4. スレーブはACKとして0x0Aと3バイトのダミーバイト (0xFF) で応答します。
  5. マスターは残りのATコマンドデータを送信します。
  6. 完了後、スレーブはACKを送信します。 注意: AT CMDフォーマットの詳細については、AT Command Manual ドキュメントを参照してください。
図: SPI AT CMD TX(SET)フレーム ①
図: SPI AT CMD TX(SET)フレーム ②

4.2.2 AT CMD RX(GET)フレーム

ATコマンドの応答を取得するには、以下の手順に従ってください:

  1. AT CMDモードでは、コマンドの末尾に0x0Dおよび0x0Aを送信する必要があるため、マスターはこれらの文字を含む4バイトのATコマンドをスレーブに送信します。
  2. 送信が完了すると、スレーブはSPI_INT信号をLowに設定して、AT CMDデータで応答します。
  3. スレーブは0xB1、データ長(リトルエンディアン形式で2バイト)、および0xFF(ダミーバイト)で応答します。
  4. スレーブはATコマンドデータの応答を送信します。
  5. マスターがAT CMDデータの読み取りを完了すると、スレーブはSPI_INT信号をHighに設定します。

注意: AT CMDフォーマットの詳細については、AT Command Manual ドキュメントを参照してください。

図: SPI AT CMD RX(GET)フレーム ①
図: SPI AT CMD RX(GET)フレーム ②

5. 操作

5.1 データ操作

5.1.1 TXデータ操作

TCPまたはUDPデータを送信するには、以下の手順に従ってください。

図: SPI TXデータ操作フローチャート

5.1.2 RXデータ操作

TCPまたはUDPデータを受信するには、以下の手順に従ってください。

図: SPI RXデータ操作フローチャート

5.2 AT CMD操作

5.1.1 AT CMD TX(SET)操作

ATコマンドを送信するには、以下の手順に従ってください。

図: SPI AT CMD TX(SET)操作フローチャート

5.1.2 AT CMD RX(GET)操作

ATコマンドを受信するには、以下の手順に従ってください。

図: SPI AT CMD RX(GET)操作フローチャート