8ビットマイコンと言えばArduino(ATmega328P)やATtinyシリーズなどのAVRマイコンは非常に有名です。
そして前回、CH55xシリーズのマイコンも使ってみました。
CH55xはUSB機能が使えるにも関わらず非常にお安く、16KBのフラッシュメモリ・SPI・ADC・PWMなどが内蔵されています。
秋月電子さんでもCH552EやCH552Tは1個100円程度の価格で入手する事が出来るようです!(2023年12月現在)
自作基板などでATtinyを使うことが多いのですが、CH552はスペック的にはほぼ同等といったところのマイコンとなりチップ単価や入手性がよく、おまけにUSB機能も使うことが出来ます。
普段Arduinoを扱う時のようにArduino環境で開発が出来るのも便利なマイコンです。
そして今回はCH552Gを使った自作開発ボード(ブレークアウトボード)を製作した話となります。
目次
CH552G開発ボードの製作!
WCH CH55xシリーズのマイコンとは?
簡単にCH55xシリーズのマイコンについて書いておきます。
CH55xシリーズは8ビットマイコンとなり中国のICメーカーWCHの製品です。
WCHと言えばマイコンを使った電子工作をやられている方ならUSB-シリアル変換チップのCH340シリーズはよく使われているのを見かけますよね!
USB機能が使えるマイコン、例えばRP2040やATmega32U4などと比べCH55xシリーズはチップ単価がお安く入手性が良いのも魅力的です。
そしてCH55xは書き込み装置が不要なので、普段Arduinoを使う時と同じ感覚で扱えるのも非常に便利なマイコンです。
CH55xをArduiono環境(Arduino IDE)で扱う基本的な方法はこちらの記事でまとめているので、合わせて見て頂ければと思います。
自作CH552開発ボードの概要
今回製作に使ったCH55x(CH552G)の主なスペックはこんな感じ。
ブートローダーに2KB占有されているので実際に使用可能なフラッシュメモリ容量は14KB程度となります。
CH551からADC機能も追加されています。
動作電圧 | フラッシュメモリ | クロック周波数 |
3.0~5.5V | 16KB | 最大24MHz |
CH552にはパッケージサイズによりいくつかチップがリリースされています。
使えるI/Oの数など違いがありますが、CH552GやCH552Tを使った開発ボードが1台あればテスト等で便利に使えそうです!
参考 CH552 データシートWCHAliExpressなどの海外サイトでは、CH552Gを使ったこのような開発ボードがいくつか扱われています。
初めてCH55xを使ったテストをする際には便利なんですが、USB端子が今ではもう古い規格のMiniUSBになっていたりリセット端子が無いことから少し使いにくかったので、今回CH552Gを使った自作開発ボードを製作することにしました。
回路設計
CH552GはSOP-16というパッケージになっています。
ブレッドボードでテストする際はピッチ変換基板やUSB端子のDIP化基板も必要となってきます。
CH552Gを動作させるための基本回路を組むだけでブレッドボードではこれだけ占有してしまうので、先程のAliExpressで売られているような開発ボード的なものがあるとテストでは便利に使えます。
それではCH552を使った基本回路構成を見ていきます。
CH552はUSB経由でプログラムの書き込みを直接行うことが出来るので、書き込み装置が不要となりシンプルな接続で動かすことが出来ます。
電源(VCC/GND)をUSB端子のVBUS(5V)から取り(CH552の動作電圧は3.0~5.5V)、あとはデータラインD+(UDP) / D-(UDM)を接続するだけと非常に簡単です!
基本動作させるための接続はこのようになります。
ここで初めてCH552を使った時にハマったポイントなんですが、CH552が未プログラム状態(初めて書き込む場合)や[Default CDC]を使っていない場合はDFUモード(書き込まれているブートローダーを起動)で書き込む必要があります!
AliExpressで購入したボードにはDFUモードで起動させるためのスイッチが付いています。
スイッチを押した状態でUSBケーブルを差し込みCH552を起動するとこのモードに入りUSB経由でプログラムの書き込みが行えるというものです。
この書き込みモード(DFUモード/ブートローダーモード)で起動するには、CH55xの[D+]をプルアップした状態で電源を投入する必要があります。
これでCH552に書き込まれているブートローダーが起動しUSB経由で書き込みが行えます。
CH552には3.3Vの内蔵レギュレーターが搭載されています。(V33端子)
そしてUSBの信号ライン(D+/D-)は3.3Vなので、このV33端子にプルアップ抵抗(10kΩ)とスイッチを取り付けることにより、上記AliExpressで購入したボードのような構成のものが作れます。
上記接続図をこれに対応させるとこのようになりますね。
これでブートローダーを起動しCH552にUSB経由でスケッチを書き込むことが出来ます。
一度何かしらプログラムを書き込みArduino IDEの[USB Settings]で[Default CDC]を選択していた場合は、以降PCに接続するとシリアルポートが現れるのでArduino IDEでシリアルポートを選択して通常のArduinoを扱う時のように書き込みを行うことが出来るようになります。
そして開発ボードとしてはリセットスイッチもあると便利です!
CH55xのリセットピン(RST)は正論理となっているので、GNDではなく5V端子(VCC)との間にリセットスイッチを接続し”1(HIGH)”でリセットをかけます。
またArduino IDEにはCH55xのサンプルスケッチが多数収録されています。
CH55xのLチカスケッチ(Blink)ではP3.3ピン(33番)を点滅させるサンプルスケッチとなっていたので、P3.3ピンにオンボードLEDを取り付け全体構成はこのようにしました。
あとはCH552Gの全I/Oを使えるように取り出し、全体の回路構成はこのようなボードとなりました。
CH55xは書き込み装置が必要なく非常にシンプルな回路構成で組むことができ、開発環境はArduino IDEが使えるので便利です!
基板設計
KiCadでの基板設計です。
開発ボード(ブレークアウトボードに近いですが)としてはI/Oラベルは極力大きく見やすくし、そしてブレッドボードに差し込んで使う際に通常よく使われる片側5列タイプのもので両サイド2レーンを使うことが出来れば便利です。
以上のことを踏まえボードサイズを決定しました!
I/Oラベルも見やすく、販売されているボードには無いオンボードLEDやリセットスイッチを搭載しType-C端子なので使い勝手も非常に良くなりました。
JLCPCBに基板発注
基板の製造はJLCPCBを使いました。
送料区分はOCS NEPを選択しトータル500円ほど(基板5枚)で製作出来ました。
トータルコストが非常にお安く、毎回JLCPCBさんは重宝しています!
基板データ(ガーバーファイル)をダウンロード出来るようにしておきます。
何かの参考になればと思います。
CH552G Breakout Board(Gerber)
またJLCPCBでの基板発注方法に関してはこちらの記事で詳しく紹介しています。
合わせて見て頂ければと思います。
パーツの実装
発注から8日ほどで基板が到着しました。
毎回早いですね、JLCPCBさん!
パーツの実装はリフロー装置MHP30を使って行いました。
ミニサイズで作業スペースの邪魔にもなりにくく、非常に便利なミニリフロー装置です!
使用パーツ一覧
今回使用したパーツ一覧です。
使用パーツ | 定数 | 入手先 |
抵抗(0603) | R1/R4 5.1kΩ | Amazon / AliExpress |
R2/R3 1kΩ | ↑ | |
R5 10kΩ | ↑ | |
コンデンサ(0603) | C1/C2 0.1μF | Amazon / AliExpress |
LED(0603) | D1/D2 LED | Amazon / AliExpress |
ダイオード | D3 1N5819W(SOD-123) | AliExpress |
ポリヒューズ | F1 500mA(0805) | AliExpress |
スイッチ | SW1/SW2 3×4mm(SMD 4P) | AliExpress |
MCU | U1 CH552G | AliExpress |
USB端子 | Type-C(16P) | AliExpress / 秋月電子 |
Arduino IDEの環境構築
それでは完成したCH552G開発ボードの動作テストをしてみます。
まずArduino IDEでCH55xシリーズのマイコンを扱う際の環境構築です。
CH55xシリーズのプログラム開発が出来る[ch55xduino]ボードパッケージをArduino IDEに導入します。
Arduino IDEの[基本設定(環境設定)]を開き、[追加のボードマネージャのURL]に以下URLを追加します。
次に[ツール]→[ボード]から[ボードマネージャ]を開き”ch55x”で検索すると必要となるボードパッケージ[CH55xDuino MCS51 plain C core(non-C++)]が見つかります。
これをインストールして完了です。
インストールが完了すると、[ツール]→[ボード]の項目に[CH55xDuino MCS51 plain C core(non-C++)]が追加されます。
今回CH552Gに書き込みを行うので[CH552 Board]を選択して書き込むことになります。
CH55xの書き込みには、[USB Settings]で[Default CDC]を選択しシリアルポートを選択して書き込みを行う方法とCH55xに既に書き込まれているブートローダーを使った書き込み方法があります。
こちらでは[Default CDC]を選択し通常のArduinoのように以下Lチカスケッチを書き込み動作テストをしてみます。
詳しくはこちらの記事も参考にして下さい!
動作テスト
最後に動作テストです。
CH55xのサンプルスケッチ(Blink)を書き込んでみます。
1 2 3 4 5 6 7 8 9 10 11 12 | #define LED_BUILTIN 33 void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } |
ボードの[DFU]スイッチを押した状態でUSB端子を差し込むとブートローダーが立ち上がります。(DFUモード)
DFUモードではArduino IDEにシリアルポートは現れませんが、この状態で[アップロード]ボタンをクリックして書き込むことが出来ます。
スケッチを書き込みオンボードLED(P3.3)が1秒間隔で点滅すれば成功です!
以降は通常のArduinoのようにUSBで接続するとシリアルポート(COMポート)に[CH55x]として表示されるので、これを選択して書き込みが出来るようになります。
通常のArduinoのように扱うことが出来るので便利ですね!
以上で動作確認の完了です!
最後に!
これまでUSB機能を使った製作物でATmega32U4やRP2040などを使ったテストをしていた際に自作キーボードやマクロパッドなどにも使われることが多いCH55xシリーズのマイコンを使ったテストもしていたのですが、USB機能や書き込み装置が内蔵されArduino環境で開発が出来る便利なマイコンだと思います。
シンプルな回路構成で組み使うことが出来るので、自作基板を作る際のATtinyの代用としても良さそうです!
CH55xチップ単体でのテストでは先述のようにDIP化基板等を使いブレッドボードに組む必要がありテストのたびにこれらを用意するのは手間がかかるので、今回CH552G開発ボードを自作してみました。
簡単なものですがテスト環境で便利に使えます!
何かの参考になればと思います。
コメントを残す