アナリティクス

2023年8月14日月曜日

ESP32-WROOM-32D/UにCH340K経由でUSBから書き込み

今までESP32-WROOM-32を使って色々試していたけど、USBから書き込みできる基板として作りたくなったのでCH340Kを使って作ってみた。

参考にしたもの


  1. ESP32-S3-KEY-R2(microfan社製)
    マイクロファン社製(といっても今回初めて知った)のブレッドボードを占領しないS3のボード。CH340Cが載っていたのでMacでもドライバ使ってちゃんと書き込みできるか手っ取り早く確認するために購入。秋月電子のCH340GにあるWCHダウンロードページからドライバファイル(CH341SER_MAC.ZIP)をダウンロードしてインストールすれば使えた。
  2. Esptool.py Documentation
    Esptool.pyの資料。プログラム書き込みのモードにする流れがBoot Mode Selectionに載っている。Automatic Bootloader を読むと自動書き込みにおいて、シリアル通信モジュールのRTSをESP32のENに、DTRをESP32のGPIO0に繋げるとある。
  3. ESP32-WROOM-32D&ESP32-WROOM-32U Datasheet
    WROOM-32D/32Uのデータシート。Peripheral SchematicsのページでIO0がBOOT OPTIONのボタンでGND落ちるようになっている。
  4. ESP32-DevKitC-V4 Reference Design r2.1(zipファイルがダウンロードされます)
    DevKitCのリファレンスデザイン。展開して01_schematic/ESP32-DevKitC-V4_SCH_20180607A.pdfを見るとDevKitCの回路図を見ることができる。
    これが俺を狂わせる。

出来てしまったもの


話長いので完成品から


要はPULL UPされているRSTとDTRをESP32のENとGPIO0に繋ぐと出来てしまったという話。


何で混乱したの?


これが原因


ESP32が次のようにダウンロード待機の状態になってくれないと書き込みが始められないはずなのだが上の回路でどうやっても出来なかった


説明元 説明
Esptool.py Documentation Manual Bootloaderを読むと書き込みモードにするには
  • Bootボタンを押す(GPIO0=LOW)
  • Resetボタンを押す(EN=LOW)

ならんよ?
この状態からResetボタンを離した時に waiting for download になるよ?
ESP32-DevKitC-V4 Reference Design r2.1 EN:GPIO0=LOW:LOW を出来なくしてるけど?

出来ないものは出来ない。少なくとも俺には出来ない。
でも手元のDOIT DEVKIT V1見ると載ってるんだよな。2個のJ3Y...

俺だって用意したんだよ。
2個のBSS138。



確認と愚痴


CH340Kだから動いてしまうのか?
CY7C65123でもRTS-EN,DTR-GPIO0で自動で書き込めたよ。


最後に整理してCH340Kで


はい書き込めた。
書き込めちゃったんだよ。
だからこの話はここでおしまいなんだ。