■シリアル・ポートってなに? パソコンに、9ピンのコネクタがついているのを見たことはないでしょうか?最近のパソコンでは省略されているものもあるので、みかけないかもしれません。玄箱PROの場合には、シリアル・コンソールをあきらめれば、内蔵シリアル・ポートが使えますが、以下では USB シリアルを利用しています。

左はノート・パソコンのシリアル・ポート、右は USB シリアル
「シリアル(serial)」というのは直列・順次という意味で、データを1ビットずつ順に送っていることから名づけられています。同時にデータを送る方法もあり、その場合は「パラレル」(並列)と呼ばれます。パラレルの場合は4ビット、8ビット、16ビットなどのデータを一度に送ります。
■EIA-574 (RS-232C) を使用するメリットは? 最近では USB が普及したので影が薄れてしまいましたが、まだ自作のデバイスを作るには USB よりも簡単です。また信号の流用によって簡単に外部機器を制御することも可能です。また信号線も比較的少なくて済みます。
■シリアル・ポートの規格
シリアル方式の通信にはいくつもの規格があります。USB や Ethernet もシリアル通信です。ここで取り上げるのは D-sub 9 ピン・コネクタを使う、EIA-574 規格です。
この規格は RS-232C (EIA-232) 規格 (25ピン) の、ピン数が少ないものと見なせるので、歴史的経緯から RS-232C (規格, 形式) とも呼ばれることがあります。ここでも厳密な区別は必要ないので、以下区別はしません。
■ピンの意味
各ピンの意味は表のようになっています。

グラウンド(5ピン)に対して、信号ピンの電圧が 3[V]から 15[V] のとき、'0', -3[V]から -15[V] のとき '1' を意味します。通信の向きはPC/USBシリアルなどオス(メス?)側のコネクタのついている機器から見たものです。 最低限、通信に必要なのは、2, 3, 5 ピンの3本です。玄箱PROのシリアル・コンソールでは、この3本のみを使っています。このときには 7, 8ピンをコネクタ内でショートしておく(ループバックしておく)とトラブルを防げます。
PC同士をつなぐときには、クロス・ケーブルを使って 2, 3 を相手の 3, 2 に、7, 8 を 8, 7 につなぐことで通信できます(ソフトウェアで指定がある場合はそのようにつなぐ)。5 はそのままつなぎます。
■データの送受信
データは7または8ビット単位で送受されます。最初にデータの開始を表す、スタート・ビット(0)、データ(最下位ビットから送る, 0または1)、(必要な場合にパリティ・ビット, 0または1)、ストップ・ビット(1)が1単位です。1ビットを送る時間(タイミング)を送受する機器間で合わせることで、1本の線で1方向のデータのやり取りを実現します。送受で2本と、電圧の基準となるグラウンドをあわせて3本の通信線でデータのやり取りが実現されます。
送受間で、ボーレート(1ビットを送る時間を決める)、データの単位(7または8ビット)、パリティ(データ・エラーを検出するの方式、偶数・奇数・なし)、ストップビットの長さ(1ビットまたは2ビット)、フロー制御の方式を一致させます。ボーレートの単位は bps (bit per second, 1秒あたりに送るビット数) です。
9600bps の場合は、1ビットの長さは 1/9600[s] です。データのほかに、スタート・ビットとストップ・ビットがつくので、データが8ビット(1バイト)でも、8+2=10ビットを送る必要があります。そのため、9600bps では、1秒間に送れるのは 960 バイトまでです。
■フロー制御
機器がデータを受け取る準備ができていないときに、相手からデータを送られると受け取りそこなってしまいます(とりこぼし)。そこで、相手に送信を待たせることでデータの取りこぼしを防ぐのがフロー(flow, 流れ)制御です。
フロー制御には、データの中の2文字(XON/XOFF)を送信中断と再開に使ソフトウェア・フロー制御、RTS/CTS線を使うハードウェア・フロー制御があります(RTS が + のときに相手に送信許可を示し、CTS が + のとき相手から送信許可を受けたとする)。
ソフトウェア・フローでは、通信に必要な線が省略できる反面、2文字が特別な意味に使われてしまいます。ハードウェア・フローでは、データに制約はありませんが、専用に2本の線が通信に必要になります。
お互いが十分に速く、とりこぼしがないことを仮定できるか、とりこぼしをほかの方法でカバーできる場合は、フロー制御をしない(フロー制御なし)場合もあります。玄箱PROのシリアル・コンソールが、その例です。7,8 ピンをコネクタ内でつないでおくのは、フロー制御なしで通信するときにも、通信用 LSI の都合で CTS が + でないと送信しないようになっているものがある(あった)ための対策です。自身の RTS (+)を CTSにつなぐことで、つねに + と見なしてしまうということです。
■モデム制御
DCD, DTR, DSR, RI はモデム制御用信号です。最近ではあまり利用されなくなりましたが、電話回線を通してコンピュータを使うのにモデムが長く利用されてきました。
DCD は、モデムが相手との通信を確立したことを示します。RI はモデムから PC に電話がかかってきたことを知らせます。DTR はモデムに、PC が準備ができたことを知らせます。モデムは、これを DSR により受け取ります。これにより、電話線を通した通信にモデムを使うときに、自動でダイヤルしたり、着信時にPCに知らせるといったことが想定されています。
■信号の転用
RTS, CTS, DCD, DTR, DSR, RI 線は、フロー制御やモデム制御が不要な場合には別の用途に転用することもできます。転用することで最大2本のディジタル(ON/OFF)出力と、最大4本のディジタル入力が使えることになります。
ディジタル出力の電圧は、PC(USBシリアル)によって±3から±15V の範囲で差があること、ディジタル入力の電圧は±3Vを超え、±15Vを超えない範囲にすることが必要です。
----------------------------------------------------------------------------------
2007/07/25: シリアルポートの写真を追加。DSR について追記。
コメントする