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_SCK | 67 | GPIO2 | データSPI送信(SPIモード)のためのSCK入力ピン |
SPI_MISO | 68 | GPIO3 | データSPI受信(SPIモード)のためのMISOピン |
SPI_MOSI | 9 | GPIO4 | データSPI送信(SPIモード)のためのMOSIピン |
SPI_CSn | 10 | GPIO5 | SPIチップセレクトピン(SPIモード) |
SPI_INT | 46 | GPIO26 | SPIマスターのデータ受信待機ピン |
UART_SPI_SEL | 19 | GPIO13 | UART/SPIインターフェース選択ピン (High: SPI, Low/NC: UART) |
Debug_UART_TX | 65 | GPIO0 | デバッグメッセージを出力するためのTXピン |
Debug_UART_RX | 66 | GPIO1 | デバッグメッセージを出力するた めの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データを送信するには、以下の手順に従います:
- マスターはデータ送信を開始するために0xA0を書き込み、送信するデータのサイズを指定するデータ長(2バイト)を指定し、これを0xFF(ダミーバイト)と共に送信し、合計4バイトを形成します。
- マスターはスレーブが*ACKで応答するまで0xFFを送信して待機します。
- スレーブはACKを示すために0x0A + 3バイトのダミーバイト (0xFF) で応答します。
- マスターはデータフェーズでデータを送信します。
- 完了後、スレーブはACKを送信します。
*NACK : マスターがデータ長を2048バイト以上に設定した場合、またはスレーブがネットワークに接続されていない場合、スレーブはNACK (0x0B + 3バイトのダミーバイト (0xFF)) で応答します。
![]() |
図: SPI TXデータフレーム① |
![]() |
図: SPI TXデータフレーム② |
4.1.2 RXデータフレーム
TCPまたはUDPデータを受信するには、以下の手順に従います:
- SPI_INT信号がLowになったとき、マスターは読み取り操作を開始します。
- マスターは0xB0を書き込み、3バイトのダミーバイト (0xFF) を送信します。
- マスターはスレーブが応答するまで0xFFを送信して待機します。
- スレーブは0xB1、データ長(リトルエンディアン形式で2バイト)、および0xFF(ダミーバイト)で応答します。
- スレーブはデータフェーズでデータを送信します。
- 完了後、SPI_INT信号はHighに設定されます。
![]() |
図: SPI RXデータフレーム① |
![]() |
図: SPI RXデータフレーム② |
4.2 マスターAT CMDフレーム
4.2.1 AT CMD TX(SET)フレーム
ATコマンドを送信するには、以下の手順に従います:
- マスターはATコマンドの最初の2バイトを送信します。
- AT CMDモードではメッセージの最後に0x0Dと0x0Aを送信する必要があるため、マスターはメッセージ全体の長さから2を引いたデータ長を送信します。データ長はリトルエンディアン形式の2バイト値として指定されます。
- マスターはスレーブがACKで応答するまで0xFFを送信して待機します。
- スレーブはACKとして0x0Aと3バイトのダミーバイト (0xFF) で応答します。
- マスターは残りのATコマンドデータを送信しま す。
- 完了後、スレーブはACKを送信します。 注意: AT CMDフォーマットの詳細については、AT Command Manual ドキュメントを参照してください。
![]() |
図: SPI AT CMD TX(SET)フレーム ① |
![]() |
図: SPI AT CMD TX(SET)フレーム ② |
4.2.2 AT CMD RX(GET)フレーム
ATコマンドの応答を取得するには、以下の手順に従ってください:
- AT CMDモードでは、コマンドの末尾に0x0Dおよび0x0Aを送信する必要があるため、マスターはこれらの文字を含む4バイトのATコマンドをスレーブに送信します。
- 送信が完了すると、スレーブはSPI_INT信号をLowに設定して、AT CMDデータで応答します。
- スレーブは0xB1、データ長(リトルエンディアン形式で2バイト)、および0xFF(ダミーバイト)で応答します。
- スレーブはATコマンドデータの応答を送信します。
- マスターが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)操作フローチャート |