まごころせいじつ堂

浜町庄金 研究開発  マイコンで遊んでばっかりで

シリアル

RJ45コネクタを使うシリアル通信の調査

 まずは前回、PASOPIAのシリアルインターフェース PASOPIA232C の続きから。

 当時のシリアル通信、RS-232Cの主なコネクタの形状はDsub25ピンだった。これを現代のパソコンにつなごうとするとDsub9ピン(EIA-574)かそれをUSBに変換するUSBシリアルケーブルを使うことになる。これが結構煩雑で途中にクロス変換やジェンダーチェンジャーが必要になることがある。PASOPIA232Cはストレートとクロス接続をスライドスイッチで切り替えるのでクロス変換は不要だがそれでもこんなかんじになる。
2023-02-18 19.32.04

 そこでCISCOルータとのコンソール接続に使われるRJ45コネクタを使ったシリアル通信を流用することにした。RJ45-8P8Cのジャックなら通常のLANケーブル(CAT5以上の全結線)が使えて取り回しも楽になるはず。

以下はCISCOのコンソールポートに関する資料:

これらの資料によると、CISCOルータ側のコンソールポートであるRJ45ジャックのピンアサインは以下のとおり。

1 - RTS
2 - DTR
3 - TXD
4 - DCD
5 - GND
6 - RXD
7 - DSR
8 - CTS

このピンアサインはうまくできていて、逆順だとシリアル通信のクロス接続になる。これはLANケーブルのクロス接続とは異なり、ストレートに対してロールオーバーと呼ばれている。

 さてこのルータ側にあるコンソールポートはDTEかDCEか?

 これ以前のルータはコンソール接続にDsub9ピンオスのコネクタが使われていた。これがコストダウン目的かRJ45のコンソールポートに変化した。PCとの接続はクロスケーブルだったはずで、そうなるとこのピンアサインはDTEになるはずだが決め手となる文書が見つからない。
 ということでPASOPIA232Cを元にRJ45コネクタに変更したPASOPIARJ45Sを作ってみた。この基板はRJ45コネクタを2つ搭載し、ストレートとロールオーバーに対応させている。

使用部品:
※PASOPIA232Cと同じく接続にはDIP CABLE(16P)が必要

IMG_20230307_173454

PASOPIARJ45S-sch

PASOPIARJ45S

 これをUSB-RJ45変換のコンソールケーブルを使用して接続する。互換品はたくさんある。



RTSが1番ピンのJ2コネクタに接続したら通信できた。これがコンソールポート相当になる。
IMG_20230307_173425

さてこのRJ45-USBケーブルは、パソコン側にDsub9ピンオスのシリアルポートがあれば以下のRJ45-Dsub9メスケーブルと同等。

ピンアサインは以下のとおりでRJ45のRTS-1番ピンに対応するのがDsub9の8番ピン、CTSに接続されている。つまりこれらのコンソールケーブルはRS-232Cのクロスケーブルになる。ということはPASOPIARJ45SのJ2コネクタはDTEということになる。

スクリーンショット 2023-03-13 1.06.48

 さて以上をふまえてもうちょっと一般的なものを作ってみますよ。Dsub25オスをRJ45コネクタ2つに変換するDSUB25RJ45S 、昔のPCなどの本体側に直接接続しLANケーブルを使って通信する。

DSUB25RJ45SV01L01-sch

DSUB25RJ45SV01L01-pcb

IMG_20230312_234759

 確認したとおりRTSが1番ピンのRJ45コネクタで通信できた。
IMG_20230312_213434

 ここで使った機器は東芝のMSX、PASOPIA IQ HX-22で当時のMSXとしてはめずらしくRS-232Cインターフェースを内蔵している。MSXでRS-232Cを使用するには拡張BASICが必要となり、それも内蔵している。以下の操作で接続先PC側のTeraTermと通信できた。

call comini("0:8N1NNNNN",9600,9600,30)
call comterm("0:")




↓こういうのもあるのでテスターで調べてもよかったんですけどね

SORDm5F カートリッジの試作その3


 V01L03基板で20KBのBASIC-Fイメージとその他8K/16Kイメージの動作確認ができた。この部分の動作に必要な汎用ロジックはLS86とLS02の2個で前作SORDm5Cと規模は変わらず上位互換。シリアル周りにミス連発。

 SORDm5FV01L03回路図
SORDm5FV01L03-sch

SORDm5FV01L03-pcb


 メモリ部分の切り替えはOK。64KBの27C512を32KBの2バンクに分け、バンクはA15SELで選択。

・BASIC-Fのイメージを置く場合
先頭から8KBを空けてBASIC-Fの20KBを書き込む。
DIPスイッチの設定:
EXMSEL=ON("L")
A14SEL=OFF("H")
A13R=ON("L")

・BASIC-I(8KB)やBASIC-G(16KB)のイメージを置く場合
DIPスイッチの設定:
EXMSEL=OFF("H")
A14SELで32KB内の前半と後半を切り替えて選択
A13RでA14SELで指定した16KB内の前半と後半8KBを入れ替える

 これにより27C512にBASIC-F,BASIC-G,BASIC-I,m5terminalを書き込んで選択することができる。

2023-01-07 23.06.07


 さてシリアル周りだがミス連発。ここの部分は@morecat_labさんがV01L02を先行して動作確認してくださったので動くことはわかっているのだがV01L03でのミスが多く難航した。


V01L03での修正点は以下のとおり:
・8251のリセット反転を追加したインバータLS04に変更
・8251のRxRDY→*EXINT接続にインバータ挿入
・8251の*DSR-*DTRのショートプラグをオープンに

動作確認時に発覚した問題点:
・USBシリアル変換へのピンアサインミス
 何を参考に作ったのかピンアサインが全然違ってた。しかもTxD/RxDが入れ替わっているという。TxDとRxDをショートさせてループバックテストは確認できるのだが入れ替わりはこれではわからない。

・8251のTxDに挿入したダイオードとプルアップ抵抗の削除
 これはSORD m5から相手側への送信だけできなかったことから発覚。そもそもは電流の回り込み防止のためにRxDに入れるべきもの。削除。

・SORD m5 Jr.でのシリアル端子の干渉
 実際に使ってみて干渉したので2.54mm上にずらした。

・8251の*DSR-*DTRのショートプラグをショートに戻す
 シリアルインターフェースSI-5の回路図を参照するとオープンだったが、@morecat_labさんに確認してもらったV01L02のボードではショートだったことから元に戻した。

・シルクに説明など追加


2023-01-09 00.50.48


m5terminalについて
 m5terminalはシリアルカートリッジSI-5に内蔵されていたと思われる通信ソフト。設定についていくつか注意点がある。接続の相手先はWindowsのTeratermで確認。

CODETYPE: ASCII8だと相手先が8bit長でも文字がカタカナなどに化ける。JIS8か7bit長ならJIS7を選択。
BAUDLATE: 300だと相手は600ボー、600だと相手は1200ボー。なぜか2倍。
MODE: IGNOREに設定。WAITだと応答しない。
その他は自由に設定可能。Xon/Xoffは設定するのならば相手側に合わせておく。

 1200ボーの速度でTeraterm側から長めのテキストを送信してみたが特に取りこぼしは確認できなかった。


 ここまでの修正を反映しV01L04として発注。今後は以下を確認予定。

ハードウェア
・Z80CTCのEXCLK出力観測(8251のTxC/RxC)
・EXO-3発振器を使い任意のボーレートを設定できるかどうかの実験

ソフトウェア
・BASIC-Fでの通信確認 デバイスディスクリプタ "SIO:"
・BASIC-GやBASIC-Iからの設定と通信ができるかどうかの確認

ということでV01L04着荷まち。

記事検索
プロフィール

hardyboy

カテゴリ別アーカイブ
月別アーカイブ
QRコード
QRコード
  • ライブドアブログ