ESP32-S3、C3のUSB書き込み
ESP32開発ボードではなく、モジュール単体で利用する場合、
開発ボードに実装されている書き込み回路を自作する必要がある。
ESP32-WROOM-02など従来からあるモジュールの場合は、
シリアル通信を使った書き込みが一般的で開発ボードにも実装されている。
ところが、比較的新しいESP32-S3およびC3は従来のESP32と異なるところがあって、
どうもシリアル通信モジュールが内蔵されているらしく、USBシリアル変換モジュール
が不要で、電源は3.3Vに降圧が必要だが、ほぼ直結で書き込みできるらしいのでやってみた。
ESP32-C3-WROOM-02モジュールの書き込み
ESP32-C3には USB Serial/JTAG Controller が搭載されており、これを利用すると 自動的にダウンロードモード(書き込みモード)に入る ことができます。
そのため、特別な操作をせずに通常の方法でファームウェアを書き込めます。
ESP32-C3-WROOM-02 | USB |
---|---|
3.3V | 5V->3.3Vへ降圧 |
GPIO18 | D- |
GPIO19 | D+ |
GND | GND |
SW1周辺はチャタリング防止回路を入れているが、10kΩ1個だけでも動作する。
データシートのp12、4 Boot Configurationsには、IO02、IO08、IO09などもモードに合わせて設定が記載されているが、この内蔵USBを使う場合、設定なくても動作しました。
特にIO09はデフォルトでプルアップされていて、通常のブート(HIGH)か書き込み(LOW)を決定するはずですが、未接続でも書き込み可能で、書き込みが終わるとプログラムが起動しました。
ESP32-S3-WROOM-1モジュールの書き込み
ESP32-C3とほぼ同じですが、こちらはIO0がLOWじゃないと、書き込みできなかったです。
データシート通りでした。
ESP32-S3-WROOM-1 | USB |
---|---|
3.3V | 5V->3.3Vへ降圧 |
GPIO0 | LOW |
GPIO19 | D- |
GPIO20 | D+ |
GND | GND |
まとめ?
- ESP32-S3とC3はUSB機能が内蔵されているにもかかわらず、違いがあったのは気になる。
- S3については、モード切替がいるなら従来のUART方式でいいかと思う。
- C3は安いし、この方式だと書き込み回路が単純で楽。
- "通信モジュール"として割り切るならC3がお手軽でESP8266の後継マイコンとして使いやすい。
あと、ESP32シリーズはGPIOが少ないので、通信モジュールとして割り切って、RP2040/2050などペリフェラルが柔軟でピン数の多いマイコンと連携するのがいいのかもしれない。
Discussion