Up UART (ユーアート) 作成: 2026-09-09
更新: 2026-09-19

4足歩行ロボット自律型コンピュータハードウェアデータ通信方式UART

    非同期─全二重─シングルエンド
    主従関係なし
    物理/論理トポロジ:P2P


  • 接続
      デバイス   MCU
        Tx ─→ Rx
        Rx ←─ Tx
        RTS ─→ CTS
        GND ── GND


  • 接続端子 信号端子
    Tx(Transmit,TxD)
     送信側の出力端子
     受信側のRxと接続
    Rx(Receive,RxD)
     受信側の入力端子
     送信側のTxと接続
    ハードウェアフロー制御端子
    RTS(Request To Send)
     バッファの空き状況に応じて,
     受信側より送信許可を出す
     送信側のCTSと接続
    CTS(Claer To Send)
     出力された送信許可を受け取るための端子
     受信側のRTSと接続


  • 配線本数
    ハードウェアフロー制御を使わなければ,2本
    使えば,4本


  • ハードウェアフロー制御
    Tx,Rxの他にRTS,CTSを加えた4本で通信を行う。
    受信側のバッファに空きができたら,RTS=0 を出力し,送信許可を出す。
    バッファがほぼ満杯になったら RTS=1を出力し,送信停止信号を出。
    専用の信号線で開始/停止制御を行うため,オーバーヘッドが無く,本来送りたいデータ量を多くすることができる。
    またRTS/CTSで送信するのは1ビットのみのため,受信してから即座に停止処理を行う事ができ,バッファオーバーの恐れもない。


  • 設定
    送信側,受信側で,つぎを同じにする必要がある
    ボーレート
    1秒当たりのビット数(bps)
    9600,115200bps等がある。
    データビット数
    フレーム内のデータのビット数。
    一般的には8bitだが,7bitもある。
    パリティ
    フレーム内のパリティ有無。
    パリティなし,偶数パリティ,奇数パリティの中から選択できる
    (パリティなしでも通信は可能です)
    ストップビット数
    ストップビットは,通信終了の合図。
    1bitまたは2bitで選択できる。
    フロー制御
    フロー制御なし,ソフトウェアフロー制御,ハードウェアフロー制御の中から選択できる。
    設定は,SBC, MCU それぞれにおいて,プログラムで行う。


  • 表記
    例えば
      ボーレート:9600 bps,
      データビット:8 bit,
      パリティ:なし (None),
      ストップビット:1 bit,
      フロー制御:なし
    の場合,
      「9600 8N1」
    と書く。


  • 標準的。
    「標準的」 となる理由は:
    ○ 実装が簡単 (Cf. SPI は高速だが複雑)
      配線がシンプル
      ROS2 から扱いやすい
      Linux でも安定
      STM32 側も HAL で簡単に書ける
      1ms周期のモータ制御にも十分な帯域
      デバッグが容易

    ○ ROS2 と相性が良い
    ROS2 のノードは,UART を簡単に扱える。
    即ち,
      /dev/ttyAMA0
      /dev/serial0
    などのデバイスファイルを使って通信できる。

    ○ STM32 HAL が UART を強力にサポート
      HAL_UART_Transmit
      HAL_UART_Receive
      DMA 受信
      割り込み受信