【STM32備忘録】RN-42を使用したシリアル通信
はじめに
前回はタイマー割り込みの設定について書きました。
今回はRN-42とNUCLEO-F303K8を用いて無線でシリアル通信する方法について書きます。
CubeMXの設定
USARTの設定
PA9をUSART1_TXに設定
PA10をUSART1_RXに設定
「Connectivity」→「USART1」をクリックしてUSART1の設定画面を表示。「Mode」を「Asynchronous」に設定すると「Configuration」にデフォルトの設定が出てくる
「Baud Rate」を「115200」に設定
設定が終わったら「Ctrl」+「s」でGenerate Code。main.cにMX_USART1_UART_Init()が追加されていればOK。
エコーバックプログラムの作成
シリアルポートで受信したデータをそのまま送信することをエコーバックという。
適当なバッファ変数を宣言。
char buff[1];
受信と送信の処理をmain文のwhile文の中に追加。あとはビルドして書き込む。
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の接続
使用部品
配線
下記サイトを参考にしてください。使用しているのはArduinoですがそれをNucleoだと思って配線すればいけます。RN-42のCTSとRTSはショートさせることを忘れないように。RN-42とPCのペアリングについても書いてあります。
動作結果
打った文字が返ってくれば成功です。
おわりに
RN-42とNUCLEO-F303K8を用いて無線でシリアル通信する方法について書きました。今回はエコーバックだけですが本格的にデバッグで使用するならちょっと機能不足です。
そういった時は、下記のxprintfというものを使用するのがオススメです。
使い方は下記のブログが参考になります。
gsmcustomeffects.hatenablog.com
書き溜めてたものが尽たので次回は未定です。
USB関係の記事になりました↓↓↓