CH552はUSBデバイスになれる激安マイコンです。このマイコンの書き込みが楽になるツールを作っています。
CH552はじめました
CH552の機能
CH552は1kBのメモリ、16kBのフラッシュ、PWM、SPI、ADCなどを内蔵し、AVR Attinyマイコンよりも少し高機能な感じのマイコンです。特徴的なのは、USBデバイスの機能があることです。このため、プログラム次第でマウスやキーボードなどとして振る舞うことができます。
ICパッケージは16ピンのSOPやTSSOP20ピンなどがあります。秋月電子でも売っていて、1個100円で買えてしまいます。USBの機能が入っているのにも関わらず、なんて安いんでしょう。
開発環境
CH552はCH55xduinoを使うことで、Arduinoでプログラムすることができます。
CH552についてや、プログラミングについては、「CH55xでどうでしょう」という本にとてもわかりやすく書いてありました。これ1冊あれば、CH552の全体像や使い方をとても楽に把握することができます。
マイコンボード
CH552のマイコンボードはAliexpressで安価に売っています。
CH551 CH552 Development Core System Board USB Communication 51 Single Chip Microcomputer Module
または、スイッチサイエンスでもCH552のマイコンボードを購入することができます。

プログラムの書き込み方が特殊
CH552はUSB経由でプログラムを書き込みことができるので、書き込み機が不要です。その際の手順がとてもユニークです。
CH552のD+ピンを3.3Vでプルアップした状態で、マイコンの電源を入れます。プログラムをダウンロードするためのブートローダーが起動するので、USB経由でプログラムを書き込みます。
CH552には3.3Vのレギュレータが内蔵されていて、V33ピンに出力されています。この3.3Vを使い10kΩの抵抗でD+のピンをプルアップすることができます。プルアップ抵抗の抵抗値はAliexpressで購入したボードは20kΩがついていましたが、ブートローダーが起動したりしなかったりと不安定でした。20kΩを並列に接続して10kΩにしたところ安定してブートローダーが起動するようになりました。また、海外のサイトの情報では5Vでプルアップするようなことが書いてあるのですが、USBの信号は3.3Vなので3.3Vの方がいのではないかと思います。CH552のデータシートにはこれらの情報が書かれていないので、詳しいことはわかりません。
書き込み機が不要な点はいいのですが、電源の再投入というのがとても面倒です。パソコンのUSBコネクタからマイコンボードのUSBを抜き取り、ブートローダーのスイッチを押しながらUSBを再度差し込まないといけません。1回ならいいですが、テストしながら何回も書き込む場合には、その都度USBを抜き差しする必要があります。
とても面倒なので、抜き差ししなくてもいいようなツールを作ることにしました。
自動ブートローダー起動ツール
アイデア
物理的にUSBデバイスを抜き差ししなくてもいいように、電子的にUSBの抜き差しとD+プルアップが行える回路を作りたいと思います。
書き込み用のスイッチを押すと、USBが先に切断され、次に電源が切断されます。スイッチを離すと電源が入ると共にD+プルアップが行われ、次にUSBが接続されます。しばらくするとプルアップが終了します。
電源とUSBの接続にタイムラグがあるのは、USBコネクタの端子の形状がそうなるように設計されていて、物理的に行なっているのと同じような動作をさせるためです。
タイムラグ発生回路
タイムラグを作る回路です。ダウンロードボタンを押すと、USBの信号はすぐにOFFするのですが、Powerの信号は遅れてOFFします。ダウンロードボタンを離すと、PowerはすぐにONするのですが、USBは遅れてONします。D+ PullUpの信号はボタンが離されるとすぐにONし、しばらくするとOFFします。
ブレッドボードで動作を確認します。青いLEDがPowerの信号につながっており、緑がUSB、赤がD+ PullUpの信号です。光っているとON、消えているとOFFです。
ダウンロードスイッチを押してみます。
スイッチを押す前はPowerとUSBがどちらONしてアクティブの状態です。スイッチを押すと①USBがOFFし、②PowerがOFFしています。
続いてスイッチを離した場合。
スイッチを離すと①PowerがONして同時にD+ PullUpがONします。②次いでUSBがON、③しばらくするとD+ PullUpがOFFします。
設計通りの動作をしていますね。
全体回路の動作テスト
電源、USB、プルアップのスイッチを電子的なスイッチに置き換えて、先ほど作ったタイムラグ発生回路に接続します。
CH55xduinoでプログラム済みのCH552を、ダウンロードツール経由でMacBookに接続します。MacBookからは、USBデバイスの中に「CH55xduino」としてマイコンが正常に認識されています。
ダウンロードスイッチを押します。CH552が電子的に切断され、USBのデバイスリストから消えました。
ダウンロードスイッチを離します。CH552が「製造元固有の装置」として認識されました。これはCH552がブートローダーが起動している状態です。
Arduinoでプログラムを書き込んでみます。「Verify complete」と表示され正常に書き込めました!
これで、CH552にプログラムを書き込む度に、USBを抜き差しする必要がなくなりました。
ダウンロードツールの回路ができました!
ボタン一つ押すだけで、自動でCH552のブートローダが起動する回路が完成しました。この回路を基板化して、便利な書き込みツールを作りたいと思います。
2023.09.20 続きはこちら
完成した書き込み機は「kohacraftのshop」で販売しています。

コメント