■キーワード
UART、マスター、スレーブ、調歩同期式、クロック(CLC)
■UARTとは?
◯概要説明
シリアル通信の一種であり、1つのマスターで複数のスレーブデバイスとの通信が可能である。
クロック信号はマスターとスレーブで別々で用意しておく調歩同期式通信をする。
高効率でシンプルであるというメリットはあるが、ノイズに弱いというデメリットが挙げられる。
◯どんな信号線?
2本の信号線を用いて通信を行う。
・TXD:自分から見てデータを送信する信号線。
・RXD:自分から見てデータを受信する信号線。
基本的に以下の構成で接続する。
このように送信するマスター側のTXD端子には受信するスレーブ側のRXD端子が接続され、送信するスレーブ側のTXD端子には受信するマスター側のRXD端子が接続される。
◯どんな時に使う?
組み込みシステムなどにおいて、デバイス間(例えばマイコン同士)でデータをやり取りする場合などにおいてUART通信を使用する。
■UARTの通信手順
◯基礎知識
・UART通信ではTXDやRXD信号でデータを送受信することになる。そのデータをTXDやRXDの信号ラインで電気的にHighかLowかで表すことになるため、データを電気的に確認するときは2進数でデータを捉える必要がある。
・UART通信にはTXDと RXD信号線しかなく、クロック信号は用意されておりません。クロック信号はマスターとスレーブでそれぞれ内部クロックを使用していることになります。そのため、通信を始めるときの合図や終わるときの合図が必要となります。
UART通信をする前には、マスターとスレーブでの内部クロックをいくつで設定しておくかを決めておかないといけません。(例:9600bpsや115200bpsなど)
・UART通信はこれから説明する一連の流れを1つのまとまりとして、やっと1つのデータを送信することができます。そのため多くのデータを送信しようとしたら何回も以下の流れを実行することとなります。
◯データ転送の流れ
①スタートビット
②データ転送
③パリティビット
④ストップビット
①スタートビット
通信開始時に、「これから通信を始める」という合図が必要となります。
TXDでHIGHからLOWに立ち下がった時がスタートビットとなります。
②データ送信
送信したいデータを送ります。送る内容としては、センサ値でも良いし、コマンド通信仕様で決めておいたコマンド値でも良いし、とにかく値を送信します。
例では0x51という値を送信したものを挙げています。データはLSB(0x51を2進数にした時の再最下位ビット)から1bitずつ送信するのが一般的です。
③パリティ
パリティとは、UART通信中にノイズなどでデータが変化していないかを確認するための手段となります。
パリティには"なし"と"あり"が存在します。今回の例では"パリティあり"ですが、"パリティなし"の場合はこの項目がなくなり、②データの後にすぐに④ストップビットがきます。
パリティが表す0または1の値としては、データの1の個数が「奇数の場合」または「偶数の場合」においてパリティビットを1にしておくのように仕様を決めておくことで、データの変化がないかを確認します。
④ストップビット
ストップビットと同様にデータ通信の終了の合図が必要となります。
TXDがHIGHとなることでストップビットとなります。
■その他UART関連技術(キーワードと概要のみ紹介)
◯CRC
UART通信はノイズに弱いため、受信したデータが本当に合っているかがわかりません。そのときに重宝されるのがCRCという暗号データとなります。CRCとは、送信データに対して特定の数式を用いて計算し、その計算結果を送信データの末尾につけておきます。
受信した側は同じ数式を用いて受信データからCRCを自分で計算し、その計算結果と受信したCRCの値を比較することで受信データが正しいか照合します。
■オススメ参考書:「組込みエンジニアの教科書」