今まで散々調歩同期を使ってきたが、過去に使って最近使っていないものもあったので整理しておくことにした。

 まず、RS-232C。他にRS-422、RS-485などがある。が、これらの言葉は通信規格というより、物理規格であり、電圧がどれくらい、どういう風につなげる、ということを定義している過ぎない。中に流すデータはまた別で定義される。

 で、最近全く使っていなかったRS-232C。あれ?なんだっけ?

参考URL:https://qiita.com/mmake/items/57c0fcfe7a37f743a465

 こういうことらしい。イメージと異なり、プラス電圧は論理0、マイナス電圧が論理1(おっと!)となっている。ここで、BSUSRC0705BS/Nをアマゾンで購入し、機器とPCにつなげてみた。機器側はいわゆるD-sub9ピン、PC側はUSB。D-sub9ピンって、昔のPCには標準的についていたが、今はまず見かけない。何せ、今は全部USBなんで。信号経路は、機器側はマイコン→UART→RS-232Cドライバー→D-sub9ピンコネクタとなる。これを上記ケーブルとつなげ、USB側はPCにつなげる。これで繋がった。

 ところで、なんで最近RS-232Cを使わないかというと、無駄だから。上では機器側にRS-232Cドライバーが必要になり、RS-232CをUSB変換するケーブルが必要になる。だったら、USB-UART変換ケーブルを使う方がドライバーIC分コストが減らせて楽。この場合、機器側はマイコン→UARTのみ。それをUSB-UART変換ケーブルでつなげればそのままPCにつながる。それでよくつかうのが、FTDIのケーブル。中国製の安いケーブルも売っているが、良くトラブルを起こす。そこで、私はFTDI製(TTL-234X-3V3-WE、これは3.3Vで5V供給もそれなりにある)を使っている。

参考URL:https://ftdichip.com/product-category/products/cables/

 ここでちょっと勘違いが発生した。そもそも、最近RS-232C使っていなかったんですっかり忘れていた。RS-232CとUARTは信号電圧レベルは違うし、論理も逆。マイコンはHighが1でLowが0、RS-232Cはこれが逆になっているし、電圧が違う。危なかった!

 やっとここまで来て調歩同期の話をする。調歩同期とは、スタートビット、データ、パリティ、ストップビットと連続してデータを送信する通信規格で、とっても大事なことなのだが、データはLSB(下位ビット)から送信され、最後にMSB(上位ビット)が送信されること。送り手が0x0Fを送りたいとすると、通信路上は11110000とデータ送出され、受けてはこれを見て0x0Fと判断する。だから、オシロで信号を見ると、逆に並んでいる。と、まあ、基本はこんな感じです!