次はSTM32ボードを積極的に使ていきたい(2) - シリアルポートの調査
更新 2018/08/26 : 書込み方法指定時のSerialオブジェクトのマッピングについて追記しました
STM32F103C8T6搭載ボードをArduino STM32環境下にて利用する場合に
利用出来るシリアルポートを調べてみました。
事前調査の通り、USB経由のシリアルを含め、4本使えました。
(UART1のピン割り付けは間違っていたので修正しました)。
これは大変便利です。シリアル通信を利用するプログラムを作る時、
もう一本使えるとデバッグが楽になります。

動作確認に利用したスケッチ
#define LED_PIN D32 // PC13 or 32 or D32 void setup() { pinMode(LED_PIN, OUTPUT); Serial.begin(); while (!Serial.isConnected()) delay(100); Serial.println("Serial USBport"); Serial1.begin(115200); Serial1.println("Serial port1"); Serial2.begin(115200); Serial2.println("Serial port2"); Serial3.begin(115200); Serial3.println("Serial port3"); } void loop() { digitalWrite(LED_PIN, HIGH); delay(200); digitalWrite(LED_PIN, LOW); delay(200); }
USB経由のシリアル通信はSerialオブジェクト、UART1、UART2、UART3が
Serial1、Serial2、Serail3オブジェクト使って利用出来ます。
このSerialオブジェクト群と、シリアルポートのマッピングは、
Arduino IDEのスケッチ書き込み指定(Upload method)により異なります。
Arduino STM32のArduino_STM32\STM32F1\variants\generic_stm32f103c\board.cppに
次の条件付きコンパイルの記述があります。
SERIAL_USBが定義されている場合とされていない場合で、異なります。
#ifdef SERIAL_USB DEFINE_HWSERIAL(Serial1, 1); DEFINE_HWSERIAL(Serial2, 2); DEFINE_HWSERIAL(Serial3, 3); #else DEFINE_HWSERIAL(Serial, 1); DEFINE_HWSERIAL(Serial1, 2); DEFINE_HWSERIAL(Serial2, 3); #endif
SERIAL_USBの定義は、Arduino_STM32\STM32F1\boards.txt にて行われています。
Arduino IDEのメニューでスケッチ書き込み指定(Upload method)に
"Serial","BMP"を指定した場合は、SERIAL_USBの定義は行われません。
上記のスケッチをコンパイルするとSerial、Serail3が未定義でエラーとなります。
このあたりは、ちょっと注意が必要です。
また、USB経由のシリアル通信はちょと特殊な利用となります。
通信速度の指定をする必要がありません。指定してもエラーになりませんが、
指定値は無視されます。
最初は接続時に転送速度を自動調整しているのかと思ったのですが、
どうも違うようです。
対応していないような、通信速度でも正しく表示されます。


別の大量の出力を行うアスキーコード表示を行うスケッチを試すと
TeraTermの通信速度を極端に変えても常に同じ速度で出力されているようです。
ちょっと謎です。
また、USB経由でプログラムの書込みを行うため、
書込み中や直後ではUSB経由のシリアル通信は切断されます。
そのため、下記の1行を入れて、接続の確立をチェックと待ちが必要があります。
while (!Serial.isConnected()) delay(100);
次は、PWM、analogReadが8ビット扱いなのか等を調べてみます。
追記 2017/07/19
Serial.isConnected() の利用は非推奨となったようです。
詳細については、下記を参照下さい。
・ 「次はSTM32ボードを積極的に使ていきたい(19) - シリアルポートの調査(2) 」
« 次はSTM32ボードを積極的に使ていきたい - ピン割付の調査 | トップページ | 次はSTM32ボードを積極的に使ていきたい(3) - アナログ入力 »
「arduino」カテゴリの記事
- Freenove Mecanum ホイール カー キットを購入しました(2025.05.28)
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
「ARM」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- PocketGoで遊んでみる(1)(2020.03.24)
- Arduino用 MML文演奏ライブラリの作成 その1(2019.04.01)
- BluePillボードで4桁7セグLEDの制御(2019.03.21)
「STM32」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- 「Arduino STM32 リファレンス 日本語版」が2万アクセス突破!(2021.03.26)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Arduino STM32でキャラクタ液晶ディスプレイを使う(2019.06.01)
« 次はSTM32ボードを積極的に使ていきたい - ピン割付の調査 | トップページ | 次はSTM32ボードを積極的に使ていきたい(3) - アナログ入力 »

コメント