■ RS232C
■ パソコンのシリアルポートはRS232C準拠と云われますがRS232C規格とはかなり異なるものとなっています。IBM
が1981年に販売したIBM/PCのシリアルポートの規格として、 RS232C規格の一部を借用しこれをRS232C規格
(準拠)とうたったため ”PCのシリアルインター フェース = RS232C規格”のようになってしまいました。 以下の
ような点でRS232C規格とは違いがあります。
・ RS232C規格の端子には同期通信、調歩同期通信、2チャンネルの全二重通信がサポートされるべきである
がPCのシリアル端子には1チャンネルの調歩同期通信全二重通信しかサポートされていない。
・ RS232C規格のコネクタはDサブ25ピンであるが、PCのシリアルコネクタはDサブ9ピンである。
・ PCのCOMポートにはRS232C規格としてサポートされるべき信号が一部サポートされていない
・ RS232C規格の最大伝送速度は20Kbpsであるが最近のPCのCOMポートの最大伝送速度は200Kbps以上
が定格伝送速度となっている。
■ 現在のPCのCOMポートの正式規格名はEIA-574規格です。PCのCOMポート”RS232C準拠規格”とRS232C規格
との混同を避けるためEIA(米国電子工業会)が1991年に規格として追認、制定した規格です。
■ RS232C規格はCCITT(国際電信電話諮問委員会)のV.24、V.28勧告にもとづきEIAが1969年に制定したもので
EIA-232規格のことです。
・ RS232Cと云う名称は Recomended Standard 232 Class に由来した通称のようです。
・ EIA-232規格はもともとデータ端末とデータ通信装置(モデム)との接続インターフェースに関する電気的特性、
機械的特性、機能等を規定した規格です。
■ インターフェース電気的諸元
RS232Cでは 論理0(スペース)が+3V〜+15Vと正電圧で、論理1(マーク)が-3V〜-15Vと 何故か一般の論理における場合と正負が逆に
となっていますので注意が必要です。
項目 | 規格値 | 備考 | |
ドライバー側 (出力側) |
無負荷最大出力電圧 | ±25V | |
負荷時最小出力電圧 | ±5V〜±15V | ・負荷条件: 3KΩ 〜 7KΩ ・RS232Cレシーバー/ドライバーICのADM3202では TXから±9〜10Vが 出力されています。(→実際のADM3202のTX出力波形)) ・私が使用しているデスクトップPC 2台(注1)の実測値は±約10Vです。 ( → PC(マザーボードAX4B-533)のTX出力信号波形) ・私が使用しているRS232C拡張基盤2枚(注2)の実測値は±約5Vです。 ( → RS232C拡張拡張基盤RX-PCI160のTX出力信号波形) |
|
最大電流 | 500mA | 負荷条件: 短絡時 | |
最大スルーレート | 30V/μsec | ||
レシーバー側 (入力側) |
入力抵抗 | 3KΩ 〜 7KΩ | |
入力スレッショルド電圧 | ±3V | 0(スペース): +3V 〜 +15V 1(マーク): -3V 〜 -15V |
|
最大入力電圧 | ±25V | ||
最大ケーブル長 | 15m |
(注1)マザーボード : AX4B-533(AOpen)、 55H-M(ECS)
(注2)RS232C拡張基盤 : REX-PCI160(ラトックシステム)、SD-PE9901-2SL(Area)
■ PCのバイオスとCOMポート
・ PCでは16個の割り込み要求チャンネルIRQ(Interrupt ReQuest)が用意されています。レガシー(過去の遺産)となったI/Oもありますが
いまでも基本的には下表にもどづきIRQ0〜RIQ15はバイオスにより管理されています。COM1、COM2ポートにはそれぞれIRQ4、IIRQ3が割
あてられています。
M/S | IRQ番号 | 用途 |
マスター | IRQ0 | システムタイマー |
IRQ1 | キーボード | |
IRQ2 | IRQ9よりの呼び出し | |
IRQ3 | シリアルポート(COM2) | |
IRQ4 | シリアルポート(COM1) | |
IRQ5 | パラレルポート(LPT2) | |
IRQ6 | フロッピーディスク | |
IRQ7 | パラレルポート(LPT1) | |
スレーブ | IRQ8 | リアルタイムクロック |
IRQ9 | 未使用(IRQ2へ転送) | |
IRQ10 | 未使用 | |
IRQ11 | 未使用 | |
IRQ12 | PS/2マウス | |
IRQ13 | 数値演算コプロセッサ | |
IRQ14 | プライマリIDE | |
IRQ15 | セカンダリIDE |
・RS232Cインターフェースのデバイスが 減ってきたためCOMポートがマザーボード上についてはいるがメーカ出荷時にバイオスでDisableとなって
いる(デバイスマネージャで表示されない)場合があるようです。この様な場合は、PC起動時Deleteボタンを押してバイオスを立ち上げCOMポートを
EnableにするとCOMポートが使えるようになります。。
・ISAバスの時代と違ってPCIバスでは1つのIRQを複数のデバイスで使用可能・自動割り当てになっています。バイオス・OSががUSB、LAN等の
割り込みも含め未使用IRQ及びレガシーの空きIRQをつかい割り当てを行っています。こんなことからあまり使われなくなったCOMポートを
Disabkeにして出荷することがあるのでしょう。
■ PICの通信エラー
PICの場合下記3つの通信エラーがあります。
@ フレーミングエラー …… ストップピットが0になっている場合のエラー
A オーバーランエラー…… 前のデータが取り出されないうちに次のデータが来てしまった場合のエラー
B パリティエラー …… パリティチェックで検出されたエラー
■ 実際の送受信波形
下記に実際の波形を示します。
・パルスはビットレベルでは、スタートビットのあと、データビットが下位ビットからb0→b1→b2 …… b6→b7と 上位ビットへの順番で
送受信され、最後がストップビットとなります。 パリティビットが追加される場合はデータビットの後の追加となります。
・下記の波形では、データとデータの間はストップビットのあとウェィトなしですぐ次のデータのスタートビットが来ています。データとデータの
間のアイドルパルス数や時間についてはRS232Cでは特に規定等はないようです。送信側のC言語のソースコードが同じでもパルスも
あいてくるものもあります。送信モジュール、コンパイラ、ドライバーにより異なるようです。ウェートは送信側で、受信がオーバーラン
エラーをおこさないようにコントロールする必要があります。
下記はPCのTXからの波形とPICのRXの実測波形です。
受信文字 (16進数表示) (2進数表示) |
受信パルス実測波形(パリティなし) 上側:PICのRX端子波形 下側:PCのTX端子波形 |
A (0x41) (0b01000001) |
|
B (0x42) (0b01000010) |
|
C (0x43) (0b01000011) |
|
AA (0x41 + 0x41) (0b01000001+ 0b01000001) |
デジタルオシロ:岩通 DS-5102
(参考)
・ 上記波形の測定プログラム(注): → VC++ プログラム
・ 上記波形の測定回路: → 回路図のPDFファイル
(注) データの A、B、C、AA を送信するPCのプログラム