CH552Tマイコンでダイナミック制御のLチカボードの組み立てキット用マニュアル

- ## 商品概要
この基板は、CH552Tマイコンを使用してLEDをダイナミックに制御し、楽しむことを目的としています。
本資料は、組み立てから電子工作、プログラミングまでを試みたい方向けに作成されています。

- ## 特長

多数の表面実装部品を使用しているため、はんだ付けの技術レベルは中級者向けです。
抵抗やコンデンサのフットパターンは、手作業による実装がしやすいように広めに設計されています。

- ## ハードウェアの主な仕様
　①制御マイコン:8ビットUSBマイコン CH552T（中国のICメーカーWCH社系）
　②プッシュスイッチ１：RESET
　③プッシュスイッチ２：ローダー
　④6x6　LEDマトリクス

- ## 実装方法

1. 準備: 必要なツール（はんだごて、フラックス、ピンセットなど）を揃えます。
2. 位置確認: 各部品の実装位置を基板上で確認します。
3. 低背部品から実装: 低背部品（抵抗やコンデンサなど）から順に実装を始めると作業がしやすくなります。
4. はんだ付け: 各部品を所定の位置に配置し、はんだごてを用いて固定します。特に表面実装部品のはんだ付けには注意が必要です。

- ## 部品実装について

この基板には、以下の部品を実装します：

1. 抵抗
2. コンデンサ
3. LED
4. 振動子
5. プッシュスイッチ
6. マイクロコントローラ（CH552T）
6. USB保護IC（CH227K）

### 1. マイコン周辺の部品

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/d6f3adbe-eb35-3e10-97af-5d9d1dee635f.png)


マイコンのパスコンは、安定動作のために重要ですね！
VDD5電源のパスコン（バイパスコンデンサ）は、IC直近に配置が必要です。
V33電源は、LDO（Low DropOut Regulator）用3.3V電源のパスコンになります。
RU1, RU2は、USBデータ線DP（D_PLUS）、DM（D_MINUS）配線の直列に入れています。
RU1, RU2 = 0.1Ω
データシートに乗っているブロック図の左下にいます。

The following is the internal block diagram of CH552, for reference only. 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/9a13f31c-06b6-66b7-4627-c3b5bf6fe631.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/34b224f5-e8a4-35d6-61c9-c1afb176bc63.png)

RU1, RU2 0.1Ω

### 2. USB周辺の部品

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/378dc3d6-d5b0-60fe-bcd3-07b556154860.png)

**TYPE-Cコネクタから上方向にいます。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/ba48b91e-7afa-f338-2ba7-3aa9077b6cdf.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/4b5a86f4-e3bf-57ac-4b5f-062398ef871a.png)

Type-Cコネクタを使用しているので、Configuration Channel (CC)信号線CC1とCC2を処理します。
CC1ピンと CC2ピンの両方をそれぞれプルダウン抵抗を介してGNDに接続します。
5V 1.5Aあるいは3AのUSB-C供給電源を使う場合、プルダウン抵抗の値は5.1 kΩ ± 10%になりますね
LED1は、5Vが供給インジゲーターLEDのはずですが、FLAGのBARなので異常を検出すると点灯と推測します。

### 3. 電源保護周辺の部品

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/6c7f335e-ce5f-6cd8-b2c1-6e7917febadf.png)

C1,C2は、電源供給元のパスコンになります。
異なる値のコンデンサを並列にする理由ですが、周波数でインピーダンス特性を見ると
一番小さい抵抗値が異なるので、幅広い周波数でノイズ成分を除去する意図になります。

RISET1は、保護の電流値の設定になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/9d6eccc9-a63a-3bdf-2a34-c13a567159cc.png)
Block diagram of CH217K
FLAGピンについて調べてみると、
```Over-current or over-temperature alarm open-drain output, active low```
アクティブな時は、LOW出力ということですよね。
LEDを順方向に電圧を掛けてあげれば光る気がするんですけど
```FLAG# pin low output voltage Inhale 2mA current ```
NMOSのLOW出力で2mAの仕様なのであまり電流は流せないトランジスタサイズのようですね
保護電流値の設定は、抵抗値で決められます。
```In the ISET pin external resistor Rset to GND can set the current limiting threshold Iset, Iset = 60K / Rset, Rset is not less than 22K. ```
RISET1=47kΩより、1.27Aになります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/a33bbb05-9c85-44f8-1460-4a96f97455d9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/9d3669c3-d8ab-5395-8e92-e1bcf9f6e082.png)

### 4. 振動子周辺の部品

LEDを制御する基板なので、無理して水晶振動子無くてもよいかもしれません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/5eac7b83-7f37-9aa4-6ad2-de267ece2fcd.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/f49322f8-4216-8e66-88c9-24e4178408ea.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/b8b7d6c4-c815-ce1a-75a8-4bc09143ea7f.png)
上から見た場合の図面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/51cda4ff-ec8c-8639-2e32-e1ba5a629175.png)
スマホのカメラのマクロ撮影などで見ると捺印が見えると思います。
天地が逆転していても大丈夫そうな気がします。

### 5.　プッシュスイッチ

PSW1は、RESETです。押すとリセットされます。
PSW2は、書き込み時に押すローダーです。
画像は、スイッチの3Dモデルが用意できませんでした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/1238d706-c48d-a706-d61f-0074cdf30ff7.png)

RESET信号は、PushSW（PSW1)を押すとHIにプルアップされます。
RRST1、CRST1を入れている理由は、電圧がパタパタ（チャタリング）してしまうのをコンデンサで抑えています。
``` RST pin built-in pull-down resistor.Other GPIO have pull-up resistor in default. ```
充電時間は、3τつまり　3倍のCRST1（0.1uF）とRRST1（330Ω）の時間で設計値としています。
τ（タウ）は、時定数と呼ばれる変数名になります。
1CRで63%の到達点なので、デジタル端子のHI判定しきい値をVDD×0.7つまり70%を超えた値になれば
良いので2CRとか3CRで回路定数を決めてあげればよいことになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/96e3c5ea-4703-5f2b-ad9e-dba17be0940b.png)
放電時間は、IC内部にプルダウン抵抗とCRST1（0.1uF）で放電時間が決定します。
IC内部は、24kΩがいるようですが、データシートに抵抗値は記述が見当たりませんね。
ざっくり3×0.1uF×24kΩ＝7msecぐらいになります。
なので、抵抗値は1kΩでも0.1msecなので抵抗値は、1kΩ前後が入っていれば大丈夫な緩い設計です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/b52be0d1-e076-ff25-372e-e4e05fb27aed.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/34068bf6-e68b-1f3d-ec8d-06cba99e21a6.png)



### 6.USBと電池切り替え
ボタン電池とUSB電源を切り替えスイッチです。
書き込み時はVBUSに倒してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/7d712f1a-0829-f57d-b8f7-c3de1d12312e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/2d6856cf-62e2-e160-0972-a7dcc9e6772a.png)

**スルーホールタイプなので、表面実装後の実装になります**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/244d2bc4-fb69-9190-a558-998dfc054e0b.png)


### 7.LEDアレイ（6ｘ6）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/762cc502-0b62-f4bc-86e6-2ea15ab19dcd.png)

**ここが最大の山場というか修行なのかと突っ込みしたくなるLEDアレイです。**
**制限抵抗を加えると36個＋36個になります。**
思ったより簡単だと思いました。苦行ではなかったですね！
抵抗は、1kΩになります。
ダイナミック制御になると点灯時間が短くなるので抵抗値を低めにしています。

ダイオードは、カソード側に緑色を目印にすることで実装方向に気を付けてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/21aa2654-869c-7857-a4fb-660225a641b8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/0b5aa5fe-0faf-608e-6fe4-25073df704ad.png)


最後にドライバをインストールして、ArduinoIDEでプログラムでLEDを光らせてみてください。
実装したのが動くと楽しいですね！

- ## ドライバーダウンロード

https://www.wch.cn/downloads/WCH-LinkUtility_ZIP.html


### 8.パソコンから認識しないときの対処方法

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/f0e63d18-2095-0acf-f346-edd626bd5a0e.png)

無事はんだ付けが完了してもパソコンとUSBで接続しても正常に認識しないです。
チップ出荷初期値が予測になりますがシリアルで書き込みがデフォルトになっている気がしますね。
なのでUSBから認識できるようにする対処方法です。

先ずは　``` WCHISPStudio ```　をダウンロードします。

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/6762f906-0d54-8e81-dbc6-94c726e7f51a.png)

対応する型番にCH55xが入っていますね！

``` 
CH54x,CH55x,CH56x,CH643x,CH57x,CH58x,CH59x,CH32F10x,CH32F20x,CH32V00x,
CH32V10x,CH32V20x,CH32V30x,CH32X035x 
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/bdf1beaf-293e-8b83-cba1-2adfc2fbb86b.png)

ダウンロードが完了するとしっかりCH55xチップが認識されているのがわかりますね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/b466eb55-57da-5534-ff99-76837a82a611.png)

認識できたらArduinoIDEでプログラムを作成して一度コンパイルしてhexファイルを作成します。
ArduinoIDEの窓で生成されたhexファイルの出力ディレクトリを確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/b4a5f8f8-6990-d6e8-a4bd-c14345860f3e.png)

hexファイルを書き込んであげるとデバイスマネージャーから認識されるようになりますね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/44d93367-8f16-e74b-6f17-c9f45ffa8a87.png)




そうすればArduinoIDEからも認識できるようになりますので書き込みできるようになります。
うまく書き込めないときは、downloadボタンを押しながらUSBを接続すると書き込みできるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/f0efe24c-43fd-fad7-b22a-df53c08b5079.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3782127/bb0535e5-5f1f-0062-8125-9aafa6b32bcf.png)

ArduinoIDEから書き込みしたときの窓になります。
ベリファイも完了して無事書き込みできるようになりました。
最後にRESETしてプログラムが動き始めます。

それではマイコンライフをお楽しみください。