UARTについてを知る2までの記事で、UARTの基礎となるシリアル通信の仕方を見てきた。
microbit.uart.init(baudrate=9600, bits=8, parity=None, stop=1, *, tx=None, rx=None)
UART — BBC micro:bit MicroPython 1.0.1 ドキュメント
前回はparity(パリティ・ビット)とstop(ストップ・ビット)に触れた。
今回は残りのbaudrate(ボーレート)について触れる事にしよう。
ボーレートは一秒間に何ビットのデータを送受信するか?の設定で、microbitのMicroPythonのドキュメントによると一般的なボーレートは
- 9600
- 14400
- 19200
- 28800
- 38400
- 57600
- 115200
であるそうだ。
UARTでは、データを送信時にクロック(時を刻む)のデータを合わせて送信しないため、送受信の双方でボーレートを意識しておかないといけない。
例えば、送信側のボーレートが9600で、受信側のボーレートが115200であった場合、受信側がスタート・ビットの 0 を受信した時に次のビットが一向に送られてこないので、0 が続く値だと認識されつつ、ストップ・ビットの 1 もこないのでひとかたまりのデータとして認識できなくなる。
BBC Micro:bitのUARTの記事の時の受信側であるRaspberry Piの方のコードを見てみると、
import serial # 9600の値はMicrobitの方のbaudrate(ボーレート)と合わせる ser = serial.Serial("/dev/ttyS0", 9600, timeout=1) ser.close() ser.open()
ボーレートをmicrobitの方と合わせている。
今回の記事で、UARTのA(Asynchronous)の非同期の箇所以外の仕様に触れたことになり、コードを書く時に迷わずに書き進めることができるようになった。