学習のゴール
UART (ユーアート)、I2C (アイツーシー)について学習しよう!
シリアル通信
シリアル通信は、1ビットずつ順番にデータを送受信する通信・転送方式です。
シリアル通信には、データ信号とは別にクロック信号を転送して転送データを同期させるクロック同期式と、同期信号を利用せずに、受信側と送信側でデータフォーマット、データ転送速度を一致させておく非同期式があります。
UART
UARTはUniversal Asynchronous Receiver Transmitter (汎用非同期式通信回路)の頭文字をとったもので、代表的なシリアル通信の1つです。(非同期式)
UARTの後に登場したUSARTというものもあり、こちらは同期式の信号変換に対応しています。
URATの信号と接続方法
UARTでは、信号を送受信するために送信(TxD)と受信(RxD)に1本ずつ、また送受信する機器同士のGNDを接続するので、信号線は最低3本必要になります。
また、通信は1対1でのみ成立します。
その中で信号レベルを次のように規定したものをRS232Cと呼んでいます。
UARTでは以下のように接続し、お互いの通信速度とデータフォーマットを合わせることで送受信を可能にしています。
UARTの通信方法
UARTは通信を開始する前に、通信速度の他に、データ部分の長さ (7 or 8ビット)、誤り検出符号のパリティビット (有/無、奇数/偶数)、ストップビットの長さ (1 or 2ビット)などを、あらかじめ決めておく必要があります。
通信はスタートビット(1ビット:0)から始まり、ストップビット(1 or 2ビット:1)までを1フレームと呼び、この1フレームで1つのデータとして扱います。
通信速度
通信速度は1秒間に何bitのデータを送るかで表現され、単位はbps (bit per second)を使います。
例えば、1秒間に9600bit送るなら9600bpsです。
UARTは通信速度を決めて通信するため、データの送信(受信)時間は単純な計算式で算出できます。
例えば、9600bpsの場合、1bitを送信するのにかかる時間は (1/9600)秒 (Sec)です。
I2C
I2C (Inter-Integrated Circuit)は、フィリップス社が提唱した方式で、主にセンサやEEPROMメモリなど高速通信を実現する方式です。
近距離で直結したデバイスとの高速通信の場合に使用されますが、離れた装置間の通信には向いていません。
信号と接続方法
通信はマスタ側 (メイン)とスレーブ側 (レプリカ)に役割が分かれ、2本の信号線を用いて通信します。
また、マスタ1つに対し、スレーブは複数接続できます。
通信フォーマット
I2Cの通信は、スタートコンディション (Start Condition)と呼ばれる、通信の最初を示す信号から始まり、スレーブアドレス (Slave Address)や応答を示すACKなどを含めたデータおよび、ストップコンディション (Stop Condition)と呼ばれる通信の最後を示す信号までを1つのフォーマットとして通信します。
また、通信全体はマスタが管理し、スレーブ側がデータを送信したい場合でも、最初にマスタ側が受信側になることをスレーブに対して送信し、その後スレーブ側がマスタに対してデータを送信する必要があります。