暇人の技術備忘録

ハサミの技術備忘録

趣味でやっている電子工作の備忘録です。

【STM32備忘録】RN-42を使用したシリアル通信

f:id:sbasami:20210417145021p:plain

はじめに

前回はタイマー割り込みの設定について書きました。

sbasami-tech.hatenablog.com

今回はRN-42とNUCLEO-F303K8を用いて無線でシリアル通信する方法について書きます。

CubeMXの設定

USARTの設定

  1. PA9をUSART1_TXに設定
    f:id:sbasami:20210418175554p:plain

  2. PA10をUSART1_RXに設定
    f:id:sbasami:20210418175619p:plain

  3. 「Connectivity」→「USART1」をクリックしてUSART1の設定画面を表示。「Mode」を「Asynchronous」に設定すると「Configuration」にデフォルトの設定が出てくる
    f:id:sbasami:20210418175634p:plain

  4. 「Baud Rate」を「115200」に設定
    f:id:sbasami:20210418175647p:plain

  5. 設定が終わったら「Ctrl」+「s」でGenerate Code。main.cにMX_USART1_UART_Init()が追加されていればOK。
    f:id:sbasami:20210418175707p:plain

エコーバックプログラムの作成

シリアルポートで受信したデータをそのまま送信することをエコーバックという。

適当なバッファ変数を宣言。
f:id:sbasami:20210418175721p:plain

char buff[1];

受信と送信の処理をmain文のwhile文の中に追加。あとはビルドして書き込む。
f:id:sbasami:20210418175732p:plain

HAL_UART_Receive(&huart1, (uint8_t *)buff, sizeof(buff), 0xFFFF);
HAL_UART_Transmit(&huart1, (uint8_t *)buff, sizeof(buff), 0xFFFF);

HAL_UART_ReceiveとHAL_UART_Transmitの引数をまとめると以下のような感じ。

HAL_UART_Receive HAL_UART_Transmit
第1引数 使用するCH 使用するCH
第2引数 受信データを格納する変数とか配列 送信データを格納する変数とか配列
第3引数 何バイト受信するか 何バイト送信するか
第4引数 タイムアウト時間 タイムアウト時間

RN-42とNUCLEO-F303K8の接続

使用部品

akizukidenshi.com

f:id:sbasami:20210418180133p:plain
秋月販売ページのマニュアルより引用

akizukidenshi.com

f:id:sbasami:20210418180234p:plain
"https://os.mbed.com/platforms/ST-Nucleo-F303K8/"より引用

配線

下記サイトを参考にしてください。使用しているのはArduinoですがそれをNucleoだと思って配線すればいけます。RN-42のCTSRTSはショートさせることを忘れないように。RN-42とPCのペアリングについても書いてあります。

qiita.com

動作結果

打った文字が返ってくれば成功です。
f:id:sbasami:20210418180640p:plain

おわりに

RN-42とNUCLEO-F303K8を用いて無線でシリアル通信する方法について書きました。今回はエコーバックだけですが本格的にデバッグで使用するならちょっと機能不足です。

そういった時は、下記のxprintfというものを使用するのがオススメです。

elm-chan.org

使い方は下記のブログが参考になります。

gsmcustomeffects.hatenablog.com

書き溜めてたものが尽たので次回は未定です。

USB関係の記事になりました↓↓↓

sbasami-tech.hatenablog.com