Copy Link
Add to Bookmark
Report

Dreamcast シリアルポートアダプター (1.5Mbps)

The original article, written by jj1odm, is available at http://jj1odm.sizious.com/

Dreamcast's profile picture
Published in 
Dreamcast
 · 6 years ago

RS-232C の規格のままでは 230.4kbps 辺りまでですが、それ以上の通信スピードではロジックレベルで行ないます。 本来なら差動型のインターフェースを使用したいところですが FT232BM Dreamcast 間の距離を短くする事を前提で ロジックレベルのまま使用します。

FT232BM の信号は 5V 系 なので Dreamcast3.3V 系 と接続するためレベル変換とバッファーを兼ねて VHC244 を使用しました。 回路図中ドリームキャストのリセット信号がアクティブの間バッファーをフローティングしていますが、その理由は こちら を参照。

Dreamcast Serial Port Adaptor (for FT232BM base unit).
Pin it
Dreamcast Serial Port Adaptor (for FT232BM base unit).

物理的にはこれで OK ですが、問題は FT232BM と Dreamcast の通信スピードの設定です。

Dreamcast は最大 1.56Mbps、FT232BM は最大 3Mbps ですが残念な事に互いに誤差ほぼゼロで設定できる最大のボーレートはかなり低い 57600bps という値になります。但し誤差があってもとりあえず通信が出来る 500Kbps がいちようの最大ボーレートという事になります。

(Dreamcast の場合は 50MHz から 50MHz / (32 * bps) - 1 の計算式で、FT232BM の場合は基本的に 3MHz からの分周比ですが内部的には 48MHz をベースに目的のボーレートに対する分周比を算出するため互いに誤差ゼロでスピードを合わせるのが難しくなります。)

そこで 外部ボーレート端子 の登場です。
外部ボーレート端子は DC シリアルポートの 2番ピン にあります。(外部ボーレート端子発見に関しては こちら を参照)
使い方は使用したい ボーレートの16倍 のクロックを供給するだけです。

ソフトウエア上の設定は SCI インターフェースの SCSCR2 レジスタの CKE1 (bit 1) ビットを ON にするだけですが、以下に外部ボーレート使用時 の SCI インターフェース初期化ルーチンのサンプルを示します。 scif_init() 関数の引数は使用したいボーレート値で 0 以外の値では内部 ボーレートの設定 になり、0 の時は外部ボーレート に初期化します。

 
// ---- example scif_init() -----

void scif_init(int bps)
{
int i;

*SCSCR2 = bps ? 0x0 : 0x02; //////// clear TE and RE bits / if (bps == 0) CKE1 on (bit 1)
*SCFCR2 = 0x6;
*SCSMR2 = 0x0;

if (bps) *SCBRR2 = (50 * 1000000) / (32 * bps) - 1; //////// if (bps != 0) set internal baudrate

for (i = 0; i < 100000; i++);

*SCFCR2 = 12;
*SCFCR2 = 0x8;
*SCSPTR2 = 0;
*SCFSR2 = 0x60;
*SCLSR2 = 0;
*SCSCR2 = bps ? 0x30 : 0x32; //////// set TE and RE bits / if (bps == 0) CKE1 on (bit 1)

for (i = 0; i < 100000; i++);
}

// sci init and set external baudrate
scif_init(0);

今回 FT232BM のベース回路には 1.5Mpbs x 16 = 24Mhz のクロックを内蔵させています。

なぜ 2Mbps : 32MHz あるいは最大の 3Mbps : 48MHz にしなかったかというと実際に試してみた結果ケーブルの影響もありますが DC本体のマザーボード内のパターンがかなり長い距離を引き回しているのと EMI 対策の部品の影響で 24MHz が限界でした。
(普通は数10メガのクロックをロジック信号のまま外部からケーブルで供給するという事はしません。本来なら DC 本体に搭載すべきですね。)

恐らく SH4 の SCI インターフェース自体は 3Mbps (48MHz) でも動作するのではないかと思われます。

← previous
next →
loading
sending ...
New to Neperos ? Sign Up for free
download Neperos App from Google Play
install Neperos as PWA

Let's discover also

Recent Articles

Recent Comments

Neperos cookies
This website uses cookies to store your preferences and improve the service. Cookies authorization will allow me and / or my partners to process personal data such as browsing behaviour.

By pressing OK you agree to the Terms of Service and acknowledge the Privacy Policy

By pressing REJECT you will be able to continue to use Neperos (like read articles or write comments) but some important cookies will not be set. This may affect certain features and functions of the platform.
OK
REJECT