CH552Eの使い方

電子工作

自作keybordを作りたくなった際に,どのマイコンを使おうか悩んでいる時CH552Eというマイコンを見つけたので使用してみました.深夜テンションで以下のような基盤も発注して,しばらく放置していましたが,使用すると,普通にいいマイコンだったので皆さんにもぜひ一度試してもらいたいと思い紹介します.(表面実装小さすぎてめっちゃ汚いですが動きます…)

なお,今回使用したのはCH552Eというマイコンです.本稿ではこのマイコンを使用して解説しましが,おそらく他のマイコンも同じようにいけるとおもいます.

CH552Eとは

まず,このマイコンはCH55xシリーズという中国のICメーカ(南京沁恒微电子)のマイコンの一つです.USBシリアル変換ICなどではおなじみのメーカーですね.
そして,CH55xシリーズ全体を通して言えることですが,何と言っても値段が激安なのが特徴です.自身が利用したCH552Eはなんと秋月価格で100円でした.しかも,なんと言っても値段が安いのにUSB機能がついているので,HIDデバイスも作れちゃうんです.正直,この値段でUSB機能が使えるのは信じられないですw.
以下に秋月のリンクを張っておきます.

8ビットUSBマイコン CH552E: 半導体 秋月電子通商-電子部品・ネット通販
電子部品,通販,販売,半導体,IC,LED,マイコン,電子工作8ビットUSBマイコン CH552E秋月電子通商 電子部品通信販売


各シリーズのスペックの詳細は以下の方が表にまとめてくれています(感謝).

CH55xをArduinoIDEで使う - Qiita
※この記事の内容をベースに、解説を加えた書籍(薄い本 / CH55xでどうでしょうもありますので、あわせてご覧ください。CH55xというマイコンWCH(南京沁恒微电子股份有限公司)という中国のI…

ただし,このマイコンは通信系はUARTやSPIが乗っていますが,I2Cは無いのが注意点です(他のシリーズの物でも乗っていないと思ます).また,GPIOが少なかったりROMが少なかったりと,普段ArduinoやESP,STM32Fシリーズなどを使われている方は同じような感覚で使えない部分が多くあるので,購入前によくスペックを確認しておきましょう.

回路

早速ですが,マイコンを動かす回路は下のような感じです.kicadデータなので,ピンヘッダなど入っていて分かりづらい回路図になってしまい,すみません…

なにやらごちゃごちゃしていますね.回路に関しては久々に触ったので上級者の方には怒られてしまうかもしれませんがw.
少し補足をいれると以下のような感じになります.

まず,スイッチですが,DFUモード書き込む際にD+をプルアップした状態で電源を入れないと書き込めないのでスイッチを取り付けています.
また,RSTにHIGHをいれるとマイコンのリセットがかかるのでここにもスイッチを付けています.
USBに関してはtypeCを使用していますが,コネクタが高い(110円)ので何のために激安マイコンを使ってるのかわからなくなります.なので,他のコネクターを使ってみるのもありだと思います.そうするとCC1,2など省けるので部品も減ると思います.また,5Vと3.3VからLEDを動作確認用として引いていますが,どちらか一つ,もしくは無くてもいいと思おいます(何で2つもつけちゃったんだろう…).

書き込み

まず,このマイコンにプログラムを書き込む方法としては,Arduino IDEを使用する方法とWCHISP Studioを使う方法があるらしいですが,今回はお手軽なArduino IDEを使用する方法を解説したいと思います.

インストール

前提としてArduino IDEはインストール済みとして解説をしていきます.

WCHISP Studio


まずドライバーを入れないといけないのでWCHISP Studioをインストールします.以下にリンクを張っておきます.私は,最初これを入れていなくて,全然書き込めず悩んでいましたw

https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html

以下のサイトの赤丸のところからダウンロードします.ちなみに,ダウンロード速度は激遅で,私がダウンロードしたときは18MBぐらいしか無いのに10分ぐらいかかりました…

ダウンロードしたらインストーラに従って「I agree」押してれば大丈夫です.最後にソフトが立ち上がると思いますが,ドライバーはインストールできているので,閉じてしまって大丈夫です.

追加ボード

次はArduino IDEの方で,CH55Xの追加ボードを入れます.
ボードの追加は[File->Preferences->Setting]と進み,下の[Additional board manager URLs]に以下のURLを追加します.
https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json

その後,画面左のboard managerから[CH55xDUino MCS51 plain C core (non-c++)]をインストールします.

プログラム

以上の環境構築が終わりましたら,適当なファイルを作り,以下のLチカコードをコピペしてください.

#define LED_PIN 14

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

このプログラムは,0.5秒おきに点滅を繰り返すだけのプログラムです.使用するPINはP1.4です(どうやら,ピンの指定は小数点を取り除いた値になるようですね).あとはP1.4に適当なLEDと抵抗をつければOKです.
ちなみに,CH55xシリーズはC++がダメなようなので,クラスやオーバロードなどは使えないみたいです.

書き込み

ではいよいよ書き込みをしていきましよう.書き込みにはDFUモードとDefault CDCで以下の2つのモードがあります.初回はDFUモードとなっており,少し面倒です.それぞれのやり方は以下のとおりです.なお,Arduino IDEでは以下のように,自身が使用するボードを選んでおいてください.

また,データシートに以下の記述があり,どうやら200回程度しか書き込めないっぽいです.まあ,200回も書き込むことがあるか分かりませんが一応注意しといたほうがいいです.

DFUモード

DFUモードでの書き込みは,上述した通りD+をプルアップする必要がります.
そのため,D+に接続されているスイッチを押した状態でUSBをPCに接続します.接続したらスイッチは離して大丈夫です.
そしたら,ポートは選ばず(選べないはず)Uploadボタンで書き込みを開始してください.
ここで,注意点として数秒で勝手にDFUモードが解除されます.なので,Uploadボタンを押してからコードのコンパイル処理が入りますが,このタイミングぐらいで接続すると書き込みタイミングに間に合います.

Default CDCモード

こちらは,普通のArduinoと同じようにPortを指定してUploadするだけです.こちらの方が楽なので,二回目以降はこちらを使用するほうがいいです.
Default CDCモードで書き込むためには,ボードやPortを指定する画面の下にある,[USB Settings]をDefault CDCにして書き込めば次回以降はこのモードで書き込めます.

終わりに

激安でUSBも使える素晴らしいマイコンを発掘してしまいました.秋月でも取り扱っているので入手も比較的簡単だと思います.今度はこのマイコンを使用してテンキーなどを自作してみたいと思います.
最初は使い方がさっぱり分からなかったので,同じように困っている方の手助けになれば幸いです.
もし,間違いなどございましたら,お気軽にコメントください.
次回の記事もぜひご覧ください.

コメント

  1. a より:

    参考になりました.

タイトルとURLをコピーしました