4chメモリキーヤー

中華マイコンCH32Vシリーズで作るWinKeyer互換4chメモリキーヤーの開発

概要

アマチュア無線の電鍵操作を支援する4chメモリキーヤーを、中華製マイコンCH32Vシリーズで開発中です。目標はWinKeyer互換モードの実装と、量産頒布を見据えた低コスト・小型化。

マイコン選定:CH32V003F4P6 → CH32V203K8T6

当初はCH32V003F4P6での製作を予定していましたが、USBデバイス機能をハード的にサポートするCH32V203K8T6へ方針転換しました。

  • CH32V003F4P6(50円)+ USB-シリアル変換IC CH340K(70円)=合計120円
  • CH32V203K8T6単体でも120円と同等のコストながら、USBシリアル変換ICが不要になり部品点数を削減できる

秋月電子でマイコン単体とLQFP→DIP変換基板を購入し、ユニバーサル基板で実験用テストボードを自作しました。

自作のテストボードでお試し中

USBデバイス機能の検証

メーカ提供のサンプルプログラムをベースに検証しました。

  • USBシリアルデバイス:クロック元を内蔵発振(外付水晶相当の96MHz設定)に変更し、ターゲットチップ設定をCH32V203C8T6→K8T6に修正するだけで動作
  • USBキーボード(Composite HID):同様の手順であっさり動作確認

USBホスト機能でつまずく

USBホストモードのサンプルを試すもK8T6では認識せず。データシートの「Model comparison」表を確認したところ、CH32V203K8T6はUSBホスト機能非対応と判明しました。

CH32V203 DataSheet Model comparison

ホスト機能対応のCH32V203C8T6をAliexpressで調達し直したところ、USBキーボード接続でキーコード出力を確認できました。

CH32V203C8T6テストボードでUSBホスト機能を試す ヨシッ!USB完全に理解した

キーヤー機能の実装

基本アルゴリズムは過去に製作したMiniKeyerのソースを流用し、GPIO関連の定義をCH32V向けに書き換えました。オシロスコープでの動作確認は以下の通りです(CH1:パドル入力/CH2:キーイング出力/CH3:サイドトーン出力/CH4:キーイング速度調整A/D電圧)。

キーイング動作のタイミング

パドル入力に応じた短点・長点のキーイング出力とサイドトーン出力、速度調整電圧に応じた可変動作を確認しています。

メモリ符号化方式

短点・長点・文字間隔をそれぞれ2bitで表現し、符号パターンテーブルのアドレスをEEPROM(または内蔵Flash)に書き込む方式を検討しています。例えば「J」(・ーーー)は0b01111111として符号化します。UARTコマンドによる符号再生やUSBキーボード入力でのキーイングにも対応させるため、あえてこの変換方式を採用しました。

記憶先は内蔵Flash(サンプルベースのドライバは実装済み)と外付EEPROM(3ワイヤ方式)のどちらにするか検討中です。

開発環境

純正IDE「MounRiver Studio2」がLinuxに対応したため、自宅のLinux環境で開発しています。ICE「WCH-Link」もUSB接続だけで認識し、トレース実行まで問題なく動作しました。

今後の予定

中華マイコンでのエレキー実装が実現可能と判明したので、次は仕様をまとめて試作用回路図を起こす予定です。量産頒布を見据え、低コスト・小型チップ部品での実装を検討しています。