Arduino STM32 X68000でプレステ2のコントローラーを使う


中華パチモンとか呼ばれているので、実際に STM32F103C6T6 のチップを見てみたのですが、純正STMでした。
C6T6 は元々廉価版なので純正チップ自体が安いのか、インチキ互換チップは使われていないようです。
これなら、STM32 を名乗ってもいいですよね?

何かマーキングが汚いなぁと思って調べたら、STMicroはとうの昔に STM32F103C6T6 を生産中止していました。
ということは...(知らぬが仏)

各種ミニゲーム機で遊んだところで、そろそろ本番に行きます。
STM32 はオープンドレインが使えて便利とか言っておきながら、まだ使っていませんでしたね。

以前 X68000 用にプレステ2コントローラー for namco をATmega8で作りましたが、今度は STM32 で作ってみます。
ATmega8 の時には信号切り替えに処理が追い付かず、リブルラブルで動作がカクカクになってしまいました。
仕方がないので、8ボタン対応も考慮してマルチプレクサのロジックICを2個も使うという贅沢をしてしまいました。
しかし STM32 ほどの実力があれば、マルチプレクサなしで処理をこなせるかもしれません。
また、プレステ2のコントローラーも本来は3.6V仕様のところを強引に5Vで使っていましたが、
STM32F103C6T6 は5V⇒3.3Vのレギュレータも搭載しているので、本来の電圧に近い3.3Vで駆動することができます。

それではやってみましょう。
まずは digitalRead()/digitalWrite() で信号を読み書きしました。
Arduino をお使いの方はご存知だと思いますが、digitalRead()/digitalWrite() はクッソ遅いライブラリ関数なので、ATmegaの時と同様にリブルラブルでカクカクになってしまいました(ドラゴンスピリットとパックランドは通常動作)。

今度は digitalRead()/digitalWrite() を使わずに、GPIOをレジスタで直接操作しました。
BRR と BSRR を使うのが最も高速らしいのですが、指定にかなり癖があります。

さてどうでしょうか...。
うまく行きました!
リブルとラブルがヌルヌル動きます。
もちろん、ドラゴンスピリットとパックランドも動作します(ストⅡは未確認)。

やはり STM32、ロジックIC相当の処理速度を出せるとはすごい実力ですね。
もっとも、使っているのは廉価版 C6T6 ですが。
















戻る