Keil Logo

UART 通信

多くのマイクロコントローラは、標準の UART または RS232 シリアルインタフェースを備えています。µVision4 デバッガは、マイクロコントローラの UART インタフェースをシミュレートし、ターミナルのように機能する 3 つのシリアルウィンドウを提供します。シリアルウィンドウは、[表示](View)→[シリアルウィンドウ #1 .. #3](Serial Window #1 .. #3)から開きます。これらのシリアルウィンドウはターミナルのように操作できます。また、ASSIGN コマンドを使用して、コンピュータの使用可能な COM ポートにシリアル出力を送信することもできます。

ペリフェラルダイアログ

[ペリフェラル](Peripheral)メニューのダイアログには、マイクロコントローラシステムの UART の現在の状態が表示されます。ここで、通信速度およびシステムのその他のパラメータを簡単に確認できます。

UART ペリフェラルダイアログ

仮想シミュレーションレジスタ(VTREG)

µVision4 デバッガは、UART 通信のシミュレーション用に以下の仮想シミュレーションレジスタ(VTREG)を実装しています。

VTREG 説明
SxIN シリアルインタフェース x の入力バッファ。ユーザは 8 ビットまたは 9 ビットの値を SxIN に書き込むことができます。これらの値はターゲットプログラムによって読み出されます。SxIN を読み出して、入力バッファで別の文字を受け入れる準備が完了するタイミングを決定できます。値 0xFFFF は、前の値が完全に処理され、新しい値を書き込むことができるというシグナルを送信します。その他の特殊な値を使用して、パリティエラーまたはフレームエラーをシミュレートできます。
SxOUT シリアルインタフェース x の出力バッファ。µVision4 は 8 ビットまたは 9 ビットの値を(プログラムされたとおりに)SxOUT VTREG にコピーします。
SxTIME シリアルインタフェース x の通信速度タイミングを定義します。SxTIME が 1 の場合、µVision4 はプログラムされた通信速度を使用してシリアルインタフェースのタイミングをシミュレートします。SxTIME が 0(デフォルト値)の場合、プログラムされた通信速度タイミングは無視され、シリアル送信時間は即時に設定されます。

VTREG 命名規則における SxIN、SxOUT、および SxTIME はデバイスによって異なります。複数の UART インタフェースを提供するデバイスでは、VTREG 名に S0 または S1 という接頭辞が付けられます。コマンド DIR VTREG を使用して、選択したデバイスの UART インタフェースの仮想シミュレーションレジスタ名をチェックできます。

SxIN VTREG 経由の文字入力

SxIN VTREG では、マイクロコントローラのオンチップシリアルポートへの入力が可能です。

次のデバッグコマンド(デバッガの[コマンド](Command)ウィンドウに直接入力)は、値をシリアルストリームに入力します。µVision4 デバッガのシリアルウィンドウを使用してシリアルポートに文字を入力することもできます。

SIN = 'A'      /* Input the letter A into the serial stream */
SIN = 0x019E   /* Input the 9-bit value 19Ex into the serial stream */
SIN = 0xA9     /* input value 0xA9 to I/O stream for the UART */

UART 通信タイミングの制御

SxTIME VTREG では、シミュレートされたシリアルポートのタイミングを制御できます。

  • 1 の値は、シリアルポートのタイミングがターゲットハードウェアと同じであることを示します。シリアルポート I/O の通信速度の効果を確認する場合は、この値を使用します。
  • 0 の値は、すべてのシリアル入出力が同時に発生することを示します。通信速度を考慮する必要がない場合、またはシリアル出力を速くする場合は、この値を使用します。

以下に例を示します。

STIME = 0   /* Set Serial 0 for FAST timing */
STIME = 1   /* Set Serial 0 for accurate timing */

UART シミュレーションの例

次のデバッグスクリプトは、約 19.200 ボーの速度で文字 'A' - 'Z' を送信します。

signal void serialA_Z (void) {
  char ch;

  for (ch = 'A'; ch < 'Z'; ch++)   {
   S0IN = ch;                                // send character
   twatch (CLOCK / 900);
  }                                          /* repeat */
}

サポートのナレッジベース(www.keil.com/support)にある「Automated Serial Input Script」およびその他の例を参照して下さい。

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.