UART
UARTとは
UART(Universal Asynchronous Receiver Transmitter)は調歩同期式シリアル通信のひとつで、開始と終了の合図を取り決めておいて、その合図にしたがってデータを通信するという方式です。開始の合図を「スタートビット」、終了の合図を「ストップビット」とし、「スタートビット」と「ストップビット」の間に「データビット」を挟んで通信します。「データビット」の後に、通信するデータが正しく転送されたかを確認するための「パリティビット」を付加する場合もあります。
スタートビットは1bit、データは8ビット、パリティビットは1ビット、ストップビットは2ビット(あるいは1ビット)となり、一回の通信で送るデータ数は12bit(あるいは11bit)となります。
「スタートビット」と「ストップビット」(場合によっては「パリティビット」も)を付加して転送するため、データ転送の効率は若干悪くなりますが、最も手軽で扱いやすい通信手段といえます。
パリティビットとは
「パリティビット」はデータの誤りを検出するためのビットで、奇数パリティと偶数パリティの2種類があります。
奇数パリティの場合はデータビットの中の1の数が奇数となるようにデータビットの最後に0または1を付加し、偶数パリティの場合はデータビットの中の1の数が偶数となるようにデータビットの最後に0または1を付加します。
例えば、11000101という8ビットのデータの場合、1の数は4個で偶数です。奇数パリティの場合、1の数を奇数個にするためパリティビットは1となります。一方、偶数パリティの場合、1の数を偶数個にするためパリティビットは0になります。
このようにパリティビットを付加しておくと、転送中にデータ中のいずれかのビットが変わってしまった場合に、データ中の1のビットの数とパリティビットの値に矛盾が出るので、受信側はデータの誤りに気づくことができます。
ボーレートとは
UART通信をする場合、お互いのデバイスの内部でそれぞれクロックを発生させ、その内部クロックに合わせてデータのやり取りを行っています。このクロックをボーレートクロックといい、お互いのデバイス間で同じボーレートに設定することで、送信側と受信側で同じタイミングでデータのやりとりができるようになります。
ボーレートの誤差
もし、送信側と受信側の内部クロックが違っていると、データをやり取りするタイミングが違ってくるため通信が正しく行われないことになります。
8ビットの通信を行う場合、送信側と受信側で許されるボーレートクロックの誤差は、一般的にそれぞれ±1%といわれています。