しなぷすのハード製作記

「UART」の解説

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
2017年04月02日 更新。
用語:UART
読み:ユーアート
略語の完全な表記:Universal Asynchronous Receiver Transmitter
このページで解説している他の用語:フロー制御ハードウェアフロー制御ソフトウェアフロー制御XONXOFF

概要

UARTは、調歩同期方式のシリアル信号をパラレル信号に変換したり、その逆方向の変換を行うための回路です。UARTには、パラレルからシリアル、あるいはシリアルからパラレルの変換をするための、シフトレジスタが内蔵されています。また、ほとんどのマイコンには、周辺回路としてUARTが組み込まれています。

最小構成の場合、UARTの入出力線は、CPU等に接続するためのパラレルバスと、他のUARTに接続するためのTX、RXの2本の信号線からなります。(図1参照)

図1、最小構成のUARTの入出力線
↑ 画像をクリックすると拡大
図1、最小構成のUARTの入出力線

パラレルバスは、マイコンのCPU等に接続されており、このパラレルバス経由で、CPU等がUARTの初期化を行ったり、シリアルバスへ送りたいデータを書き込んだり、シリアルバスから届いたデータを読み取ったりします。

TX(TXDと表記する場合もあります)の信号は出力信号で、他のUARTに、調歩同期方式のシリアル通信でデータを送信します。

RX(RXDと表記する場合もあります)の信号は入力信号で、他のUARTから、調歩同期方式のシリアル通信でデータを受信します。

2つのUARTを接続して双方向通信をする場合の結線は、図2の様になります。

図2、最小構成のUARTの結線
↑ 画像をクリックすると拡大
図2、最小構成のUARTの結線

一方のUARTにとっての送信信号線は、他方のUARTにとっての受信信号線になるので、一方のTXを他方のRXと接続します。

図1の様な最小構成のUARTでは、CPUが他の処理をしていて、受信の準備ができていない時にデータを受信すると、そのデータを取りこぼしてしまう恐れがあります。あるデータを受け取ってから、次のデータが到着するまでに、CPUがUARTから受信データを読み取らないと、データの取りこぼしが発生するため、通信速度が速くなるほど、取りこぼしの危険性が上がります。(ただし、受信データを格納しておくためのFIFOメモリを搭載しているUARTでは、FIFOメモリがあふれるまでにCPUがデータを読み出せばいいので、高速通信への対応が容易になります)

この様な取りこぼしが発生しない様に、受信の準備ができていない場合は、通信相手のUARTにデータの送信を禁止するための信号線を付け加える場合があります。通信相手のUARTにデータ送信を禁止するための信号線をRTS、通信相手のUARTから来たデータ送信の禁止信号を受け取るための信号線をCTSと呼びます。図3に、RTSとCTSを付け加えた場合のUARTの入出力線の図を示します。

図3、RTSとCTSがある場合のUARTの入出力線
↑ 画像をクリックすると拡大
図3、RTSとCTSがある場合のUARTの入出力線

この図において、RTSは出力信号です。RTSには、CPUがデータの受信が可能な場合に0を出力し、CPUが他の処理で忙しく、データの受信の余裕がない場合に1を出力します。

またCTSは、通信相手のUARTのRTS信号を受け取る入力信号です。CTSが0の場合、TXから新しいデータを送信できますが、CTSが1の場合は、CTSが0になるまで、データの送信を待機します。

RTSとCTSの信号線がある場合は、図4の様に、一方のUARTのRTSが他方のUARTのCTSにつながる様に結線します。

図4、RTSとCTSがある場合のUARTの結線
↑ 画像をクリックすると拡大
図4、RTSとCTSがある場合のUARTの結線

受信側の装置の受信準備ができていない時に、送信側に合図を送り、送信を待ってもらうことで、データの取りこぼしを防ぐ制御を、フロー制御といいます。

図4の様に、RTSとCTSの信号線を使う事でフロー制御する方式を、ハードウェアフロー制御といいます。

ハードウェアフロー制御では、フロー制御用の信号線が増えてしまうという欠点があるため、図2の様なTXとRXのみの結線のまま、通信禁止や通信許可の合図をTXの信号線に載せてフロー制御する方法もあります。この様なフロー制御の方式を、ソフトウェアフロー制御といいます。ソフトウェアフロー制御では、フロー制御用の文字コードを決め、その文字コードはフロー制御以外の情報送信には使わない様にする必要があります。そのため、送信する情報を、フロー制御用の文字を使わない様にエンコーディングする必要があり、ソフトウェアの設計が複雑になったり、CPUの負荷が増えたり、データ伝送の効率が落ちたりする欠点があります。

ソフトウェアフロー制御において、送信許可の文字コードはXONと呼ばれ、ASCIIコードの17番(11H)を使うのが一般的です。また送信禁止の文字コードはXOFFと呼ばれ、ASCIIコードの19番(13H)を使うのが一般的です。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー

関連用語

このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
こちらのページもおすすめです。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記