ESP32-S3のUSBホスト・デバイス両方実験できるマイコンボードを設計したいと思います。
ESP32-S3
ESP32-S3は、これまでのESP32に比べ機能が向上しています。クロックが少し高速化されたり、Bluetoothが5になりました。
中でもUSBの機能が内蔵され、ホストにもデバイスにもなれるようになったところが大きいと思います。USB-JTAGの機能もあり、プログラムにブレイクポイントを設定しながらデバッグすることができます。
とても魅力的なマイコンなので、ブレッドボードで実験しやすいマイコンボードを設計したいと思います。
ブロック図
上の図は全体のブロック図です。
まず左下は、USBコネクタを含むホストとデバイス切り替えできるブロックです。ESP32-S3のUSBピンにつながります。
右下は、UART用のUSBコネクタを含むブロックです。
右上は、USBシリアル変換と、書き込み機能のブロックです。ESP32-S3はこれまでのESP32同様、UART経由でのプログラムの書き込みも可能です。左下のUSBを使ったプログラム中は、デバッグ情報をシリアル経由で出力するのにも利用できます。
左上はUSBの5VからESP32-S3の3.3Vへ変換するためのレギュレータブロックです。
真ん中はESP32-S3のブロック、ESP32-S3とピンヘッダになります。
以上の5つのブロックを設計していきます。
回路図
USB(Host/Device)ブロック
USBコネクタとその周辺回路です。このUSBはホストとデバイスどちらにもなれるのですが、その際にCCピンの扱いが異なります。
CCピン
CCピンはUSB-Cコネクタに2つあり、2つとも同じ値の抵抗を接続する必要があります。ホストの場合はプルアップ、デバイスの場合はプルダウンします。ホストからデバイスへ供給できる許容電流を伝えるために使われます。
ホストの場合、56kΩでプルアップすることで、500mA(USB2.0の場合)または900mA(USB3.0の場合)供給できることをデバイスに伝えます。
デバイスは5.1kΩの抵抗でプルダウンします。(この抵抗に発生する電圧を測定することで、デバイスはホストの許容電流を知ることができます)
このため、ホストかデバイスかによってプルアップ(R8,R9)かプルダウン(R5,R6)を変更しないといけません。
この切り替えを、スイッチ(SW3)で変更できるようにしました。
保護回路
この回路図は、Espressif製のESP32-S3-DevKitCの回路図の一部です。サージ電圧からの保護のため、5.0VのTVS(D8,D9,D10)が入っています。
同じようにTVSを回路に入れます。USBは通信速度が速いので、TVSの中でも寄生容量が小さい物を選びます。高速通信にも対応して2素子入っているNexperia PESD5V0U2BTを選択しました。
(50piece)100% New PESD5V0U2BT 1UW sot23-3 Chipset
電源用は容量は気にすることなく、実装しやすいSOD-323パッケージのNexperia PESD5V0S1BAを選択しました。
このコネクタの電源ピンは双方向に電流が流れる必要があることから、オフィシャルの回路のようにダイオードを入れることができません。そのため過電流保護として、500mAのリセッタブルヒューズを入れました。500mAまでは必ず流れて、1Aではほぼ切れます。これまでの経験では700mAから800mAで切れている感じです。このため、USB3.0の許容電流900mAに合っていて良いのではないかと思います。
USB(UART)ブロック
こちらのUSBコネクタはデバイス専用なので、先ほどのCCピンのように切り替える必要はありません。5.1kΩ(R1,R2)でプルダウンします。
USBと電源ピンには、先ほど同様TVS(D3,D5)を入れました。
逆向きに電流が流れないようにするためと、過電流保護のためにMT9700(U3)を使います。
このICはMOS-FETによる逆流防止の機能と、抵抗値でトリップ電流を設定できる過電流保護の機能が入っている便利なICです。
逆流防止には一般的にショットキーダイオードを使いますが、それでも0.3Vから0.5V程度電源電圧がドロップしてしまいます。MOS-FETのスイッチを使うことでこのドロップ電圧がほぼなくなります。
過電流保護の電流値と抵抗値はデータシートのグラフから
- 800mA:9.1kΩ
- 900mA:7.5kΩ
- 1A :6.8kΩ
な感じです。900mAに設定するために7.5kΩ(R7)としました。
USB-Serial & Writer ブロック
USBシリアル変換には安価はCH340Cを使います。
(5piece)100% New CH340G CH340 340G SOP-16 Chipset
書き込み信号を発生させるための回路は、オフィシャルの回路図オフィシャルの回路図ではトランジスタを使っていますが、MOS-FET BSS138(Q1,Q2)に変更しました。
100PCS BSS138LT1G BSS138 SOT23 SOT SOT23-3 MOSFET SOP New original
MOS-FETにすることで、トランジスタでは必要だったベース抵抗が不要になり、回路を簡略化できます。
ENピンには1uFのコンデンサ(C8)が入っています。過去にこの値を0.1uFとした時に、ESP32がダウンロードモードにならず書き込みできないことがありました。
LDOブロック
USBの5Vから3.3Vへ変換する回路です。USBの電圧は5Vですが、実際はケーブルの損失が結構あり4.5V程度になることもあります。
レギュレータICは、出力電流によって必要な入力電圧(出力電圧に対する最低入力電圧との差=ドロップ電圧)が変わります。レギュレータのドロップ電圧が1A出力時に1Vだったとすると、USBからの電圧が4.5Vであった場合、1V下がった3.5Vの電圧を使って電圧安定化させて3.3Vを出力します。結構ギリギリです。
ESP32ではWiFi通信を開始すると瞬間的に800mA程度必要だったことから、1Aのレギュレータを使っていました。ESP32-S3がどれほど電流が必要かわかりませんが、同様に1Aのレギュレータを使おうと思います。
はなるべく低ドロップ電圧で1A出力できるレギュレータを探した結果、1A出力時にドロップ電圧が425mVのTLV75733を使うことにしました。
(10piece)100% New TLV75733PDBVR TLV75733PDBV TLV75733 1FKF sot23-5 Chipset
TLV75733は出力コンデンサが1uFでもいいようなのですが、心配なので大容量のセラミックコンデンサを使おうと思います。
これには、秋月電子の八潮店でアウトレット品として、リール1000円で売られていた物を使います。100uFと220uFどちらを買おうか悩んだ末に、両方買ってしまいました。
セラミックコンデンサは、電圧を印加すると容量が減ってしまうDCバイアス特性という現象があります。
村田製作所の公式サイトのグラフから、購入した220uFのセラミックコンデンサは、3.3Vの時に40%の容量まで減ってしまうことがわかります。220uFの40%は88uFです。
88uFもあれば大丈夫だと思いますが、とりあえず2個実装できるようにしておきます。
ESP32-S3ブロック
ESP32-S3のKiCadモデルは、Espressifの公式のライブラリを使いました。GitHubにインストールの方法が書いてあります。
ピンヘッダにはESP32-S3モジュールの全てのピンを接続し、ピン配置と同じ並び順にました。このピンヘッダをDIP ICの間隔で並べて、実験時にブレッドボードを有効に利用できるようにします。
回路図完成
全てのブロックの回路設計が完了しました。これで、USBホストもデバイスも実験し放題です。
さて次回は、基板を設計してPCBgogoに発注したいと思います。
コメント