フェーズ0

E0-05 ログ出力(UART):HelloログをTeraTermに出す(EK-RA8M2)

シリーズ:実験シリーズ(フェーズ0)
対応ロードマップ:フェーズ0 / E0-05
この記事で扱う範囲:Helloログを1回だけUARTで出して、TeraTermで確認する。
この記事で扱わないこと:周期ログ、状態遷移ログ、エラーログ(これらは次回以降)

1. 目的

RA8M2(RTK7EKA8M2S00001BE)からUARTでHelloを出し、WindowsのTeraTermで受信表示できる状態にします。
「動いている」を止めずに確認するための最低限のログ経路を作るのが目的です。

2. 前提・環境(ボード/ツール/使用部品)

  • ボード:RTK7EKA8M2S00001BE(RA8M2)
  • IDE:e² studio + FSP
  • PC:Windows + TeraTerm
  • 接続:USB-UART変換(3.3V系)
  • 配線材:ジャンパ線(最低2本、推奨3本)
  • UART:RXD0:P602 / TXD0:P603

最低限の配線:

  • GND(ボード) - GND(USB-UART)
  • TX(ボード) - RX(USB-UART)
  • RX(ボード) - TX(USB-UART)(※今回は受信しませんが、次回以降も同じ配線で使えるように接続しておくと迷いません。)

注意:GNDはボードのGNDピン同士を共通接続します。
5V系USB-UARTは使わず、3.3V系を使います。

3. 今回の変更点(差分)

  • FSP ConfiguratorでUARTスタック(SCI UART)を1つ追加
  • UARTの通信条件を設定
  • hal_entry.cに「Hello UART from RA8M2」を1回送信するコードを追加

4. 手順

4-1. FSP ConfiguratorでUARTを追加・設定する

  1. e² studioで対象プロジェクトを開く。
    ※統合開発環境e² studio+FSPのインストールからビルドまで(リンク)の4章で作成したプロジェクト
  2. configuration.xmlをダブルクリックして、FSP Configuratorを開く。
  3. Stacksタブを開き、New Stackを押す。
  4. 一覧からConnectivity → UART(r_sci_b_uart)を選び、1インスタンス追加する。
FSP Conf NewStack UART選択
  1. 追加されたg_uart0 UART(r_sci_b_uart)を選択し、プロパティを表示する。
    ※プロパティがどこにも見当たらない場合は、「ウィンドウ」→「ビューの表示」→「その他」→「一般」→「プロパティー」を開くと表示されます。
プロパティビュー表示
  1. 追加したUARTスタック(g_uart0 UART (r_sci_b_uart))を選び、通信条件をそろえる。
    • Baud rate:115200
    • Data bits:8
    • Parity:None
    • Stop bits:1
    • Flow control Support:Disable
    • Channel:0
UARTプロパティ

4-2. PinsでUARTピンを割り当てる

  1. FSP ConfiguratorPinsタブを開く。
  2. Peripherals→Connectivity:SCI→SCI0を選択する。
  3. Pin ConfigurationのRXD0:P602と、TXD0:P603を選択する。
FSP Conf SCI Pin RX TX設定
  1. 設定後、Generate Project Contentを実行する。
GenerateProjectContent

4-3. コードを追加する(Helloを1回送信)

hal_entry.cに以下を追加する。

#include "hal_data.h"
#include <stdbool.h>

void hal_entry(void)  
{  
  fsp_err_t err;  
  static const uint8_t msg[] = "Hello UART from RA8M2\r\n";  
  
  /* UART Open */  
  err = R_SCI_B_UART_Open(&g_uart0_ctrl, &g_uart0_cfg);  
  if (FSP_SUCCESS != err)  
  {  
    while (1) {;}  
  }  
  
  /* UART Write (send once) */  
  err = R_SCI_B_UART_Write(&g_uart0_ctrl, msg, (uint32_t)(sizeof(msg) - 1));  
  if (FSP_SUCCESS != err)  
  {  
    while (1) {;}  
  }  
  
  /* 簡易待ち(送信が終わる前に次へ進まないため)  
  ※本格的な完了待ちは次回以降(Callback/割り込み)で扱う */  
  for (volatile uint32_t i = 0; i < 1000000U; i++)  
  {  
    __asm volatile ("nop");  
  }  
  
  while (1) {;}  
}

4-4. TeraTermで受信確認する

  1. USB-UARTケーブルのUARTとEK-RA8M2を接続する。
    ※EK-RA8M2のPMOD2のPin2とUSB-UARTケーブルの黄線を繋げる。
UART接続
Pmod2コネクタ
  1. ビルドして書き込む。
  2. USB-UARTをPCへ接続し、WindowsのデバイスマネージャーでCOM番号を確認する(例:COM7)。
デバイスマネージャー
  1. TeraTermを開き、該当COMを選ぶ。
TeraTerm COM選択
TeraTerm COM設定 選択
  1. TeraTermのシリアル設定をマイコン側と一致させる(115200, 8bit, None, 1bit, None)。
TeraTerm COM設定 1
  1. e² studioでデバッグ実行を開始します。
    TeraTermの画面にHello UART from RA8M2が1行出れば成功です。
    ※デバッグ方法は、「初心者のためのデバッグ入門:ブレークポイントと変数を見る」の記事を参照してください。

5. 結果

Hello UART from RA8M2

6. ハマりポイント/原因と対策

6-1. TeraTermに何も表示されない

まずは「PC側が正しいCOMを開けているか」→「配線が正しいか」→「Pinsが正しいか」の順で潰します。

(1) COM番号が違う / 開けていない

  • 確認:Windowsの「デバイスマネージャー」→「ポート(COMとLPT)」で、USB-UARTが何番(例:COM7)か確認する
  • 対策:TeraTermで同じCOMを選び直す
  • よくある落とし穴
    • COMが複数あるのに別のCOMを開いている
    • すでに他ソフトがCOMを掴んでいてTeraTermが開けていない

(2) 配線が違う(TX/RX逆・GND未接続)

  • 確認
    • GND(ボード)↔ GND(USB-UART)
    • USB-UART TXD → ボード RXD
    • USB-UART RXD → ボード TXD
  • 対策:1本ずつ抜き差しして、上の対応に揃える
  • コツ:迷ったら「TXは相手のRXへ(交差)」だけ覚える

(3) Pins設定が違う(SCI0じゃない/別ピンになっている)

  • 確認:FSP Configurator → Pins → SCI0 の RXD0/TXD0 が、記事の通りになっているか
  • 対策:RXD0/TXD0の割り当てをやり直して Generate する
  • よくある落とし穴:Pinsを変えたのに Generate Project Content をしていない

6-2. 文字化けする

ほぼ「通信条件が一致していない」が原因です。

(1) ボーレート不一致(最頻出)

  • 確認
    • マイコン側(FSP UARTプロパティ):例 115200
    • TeraTerm側:例 115200
  • 対策:両方を同じ値に揃える(まずは 115200 を推奨)

(2) 8-N-1 が一致していない

  • 確認:Data bits=8 / Parity=None / Stop=1 が両方一致しているか
  • 対策:TeraTermのシリアル設定を 8bit / none / 1bit に固定

6-4. 動作が不安定 / 反応しない(出たり出なかったり)

「電圧レベル」と「接触不良」が多いです。

(1) USB-UARTが5V系(3.3V未対応)

  • 症状:出ない/不安定/最悪、故障リスク
  • 対策3.3V対応のUSB-UARTを使用する(3.3V系の信号レベルで接続)

(2) ジャンパ線の接触が悪い

  • 症状:触ると変わる、たまに出る
  • 対策
    • 別のジャンパ線に交換する
    • ピンにしっかり刺さっているか確認する
    • GNDを最優先で確実に接続する

6-5. ビルドは通るのに出ない

  • 原因:書き込みができていない/別のプロジェクトを書き込んでいる
  • 対策:書き込みログを確認し、リセット後に再度TeraTermを見る

7. 次回やること

同じUART経路で周期ログを出し、状態(INIT/IDLE/RUN/ERROR)をログで追える形に進める。

8. 関連リンク

  • 基礎シリーズ:ログ出力入門(UART)
  • 基礎シリーズ:GNDとは?なぜ基準点が必要なのか?
  • 実験シリーズ:フェーズ0入口
  • 次の実験:E0-06 状態遷移とエラー判別(INIT/IDLE/RUN/ERROR)

-フェーズ0