PR 記事には広告が含まれています
スポンサーリンク
Translate

激安USBマイコンCH552の便利な書き込みツールを作っています

スポンサーリンク

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のマイコンボードを購入することができます。

ProMicroCH552
中国WCH社の8bitマイコンCH552搭載のボードです。ArduinoシリーズのProMicroとフットプリントが同じ...

プログラムの書き込み方が特殊

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」で販売しています。

CH552書き込みツールキット | kohacraftのshop
CH552マイコンの便利な書き込みツールです。プログラムの書き込みの度にUSBを抜き差しする必要がなくなります。