コンテンツにスキップ

UART インターフェース

UART は 2 つのデバイス間の単純なシリアルデータ伝送インターフェースです。展開: ユニバーサル非同期レシーバー/トランスミッター

実際のプロジェクトでは、通常「UART」、「シリアル」、「TX/RX」、または「UART ポート」と聞きます。初心者にとって重要なのは: UART は TX 回線でデータを伝送し、RX 回線で受信し、両方のデバイスが適切な動作のために共通の GND が必要です。

UART が使用される場所

UART はほぼ至るところで見られます:

  • マイクロコントローラからのデバッグログ;
  • USB-UART アダプタ経由のボードのフラッシング;
  • 一部の Klipper シナリオでのホスト-MCU 通信;
  • GPS、RFID、指紋、およびセンサーモジュール;
  • TMC ステッパードライバ設定;
  • 2 つのマイクロコントローラ間の通信;
  • ボード上のサービスポート。

UART は少ないワイヤーが必要で、シンプルなテキスト、コマンド、および診断交換に適しているため便利です。

TX、RX、および GND

最小接続:

  • TX - 伝送;
  • RX - 受信;
  • GND - 共通グラウンド。

1 つのデバイスの TX は他のデバイスの RX に接続します:

UART 接続でのクロス接続された TX/RX および共通 GND

ソース: SparkFun Electronics, CC BY-SA 4.0

ルール:

デバイス A TX -> デバイス B RX
デバイス A RX <- デバイス B TX
デバイス A GND -> デバイス B GND

最も一般的な間違いは TXTX に、RXRX に接続することです。時々モジュールのマーキングは混乱しているため、接続がない場合は、すべてのワイヤーをランダムに変更するのではなく、ピンアウトとドキュメントを最初に再度確認してください。

UART、USB、および USB-UART

UART は USB ではありません。

コンピュータは通常、ベアな UART ピンを持っていません。そのため USB-UART アダプタが必要です: それはコンピュータの USB の一方の側に接続し、もう一方の側に TXRXGND、および時々 VCCDTRCTS 行を提供します。

例:

  • USB-UART 経由でボードからログを読み込むコンピュータ;
  • USB-UART を組み込み USB を持たないボードをフラッシュする;
  • ホストがシリアル経由で MCU に接続する;
  • アダプタが失敗したフラッシング後にボードを回復するのを助ける。

ボード上の USB コネクタを UART ピンのヘッダと混同しないでください。一部のボードでは USB は既に内蔵 USB-UART チップに接続されていますが、他のボードでは USB は直接マイクロコントローラに移動します。

ロジックレベル: 3.3V、5V、RS-232

UART はデータ伝送方法を説明していますが、安全な電圧レベルを保証していません。

DIY エレクトロニクスでは、TTL/CMOS UART が最も一般的です:

  • 3.3V UART - ESP32、RP2040、STM32 およびそれ以降のボード;
  • 5V UART - Arduino Uno/Nano および一部の古いモジュール。

5V シグナルを 3.3V マイクロコントローラ入力に適用するとボードが損傷される可能性があります。互換性のないレベルの場合、レベルコンバーターまたは他の一致する回路が必要です。

RS-232 もあり、これは別です。これは「DB9 コネクタ上の単なる UART」ではありません。RS-232 には異なる電圧レベルと異なる電気ロジックがあります。真の RS-232 ポートを直接マイクロコントローラ GPIO に接続することはできません。MAX232 のような回路または既製のアダプタなどのレベルコンバーターが必要です。

スピードとフォーマット

UART スピードは一致する必要があります。一般的な値:

9600
57600
115200
250000
1000000

スピードが一致しない場合、ターミナルはガベージまたは沈黙を表示します。

また伝送フォーマットもあります。8N1 は多くの場合使用されます:

  • 8 - 8 データビット;
  • N - パリティなし;
  • 1 - 1 つのストップビット。

ほとんどのシンプルなタスクでは、同じスピードと標準 8N1 を設定することで十分です (モジュールドキュメントが別の方法を要求しない限り)。

3D プリンタ内の UART

3D プリンタでは、UART はしばしば 3 つの異なる役割を果たします。

ホストとボード通信

一部のボードはシリアル/UART を介してホストと通信できます。Klipper では、これは [mcu] セクション経由の serial で説明されています。

TMC ドライバ設定

一部のステッパードライバは UART を使用して電流、stealthChop/spreadCycle、診断、およびステータス読み取りを設定します。モーター自体は通常 UART ではなく、STEP および DIR シグナルで制御されます。

デバッグとフラッシング

UART は USB-UART アダプタ経由でログ、ブートローダモード、およびボード回復に使用できます。

1 つの UART - 通常は 2 つのアクティブなデバイス

古典的な UART は 2 つのデバイス間の接続です。複数の送信器を 1 つの RX 回線に盲目的に接続することはできません。

問題:

  • 2 つのデバイスが同時に TX 回線をプル;
  • データが混在する;
  • 1 つのモジュールが別のモジュール用のコマンドを受信する;
  • 可能な電気的紛争。

時々 1 つの TX は複数の受信機で聞く事ができますが、これは意識的な決定であり、普遍的なルールとして適切ではありません。初心者にとって、と想定する方が安全です: 1 つの UART ポート - 1 つのデバイスペア。

接続前に確認すること

UART を接続する前に、確認してください:

  • TXRX はどこにあるか;
  • 共通の GND が必要か;
  • ロジックレベル: 3.3V または 5V;
  • これは TTL UART または RS-232 か;
  • 伝送スピード;
  • フォーマット (指定されている場合);
  • この UART は USB ログまたはフラッシングで占有されていないか;
  • この回線に別の送信機が接続されているか;
  • 電力またはのみ TX/RX/GND が接続される必要があるか。

USB-UART アダプタからの電力は、ボードがそこから電力供給されるべきであることが明確な場合にのみ接続されます。診断には、多くの場合、のみ TXRX、および GND が必要です。

典型的な間違い

  • TXTX に、RXRX に接続する;
  • 共通の GND を忘れる;
  • 5V UART を 3.3V 入力に適用する;
  • TTL UART と RS-232 を混同する;
  • 間違ったボーレートを選択する;
  • 既に電力供給されたボードに USB-UART アダプタから電力を接続する;
  • USB ログまたはブートローダで占有されている UART ピンを使用する;
  • 複数の送信機を 1 つの回線に接続する;
  • UART は強力な負荷を直接駆動できると思う。

要点

UART は 2 つのデバイス間のデータ交換のための単純なインターフェースです。クロス接続された TX/RX、共通の GND、一致するスピード、および互換性のあるロジックレベルが必要です。

UART は電力供給ではなく、電力出力として機能しません。それはデータを伝送し、モーターを回転させたり、直接ヒーターをアクティベートしたりしません。

関連資料