LoginSignup
1
1

ESP32のIO12ピンに何かつなぐと書き込めなくなる

Last updated at Posted at 2024-05-01

背景

ESP32に書き込もうとするとエラーが出て書き込めない。ディスプレイ1つを引っこ抜くと動く。
原因はIO12ピンにSPIのCSピンをつないでいたこと。

調べると様々な解決策があり、体系的にまとめた記事がなかったため、執筆

解決策をサクッと見たかったら こちら、espefuse.pyで、IO12ピンの設定を変える

エラー内容

エラーの出方が様々でデバッグに難航したが、原因はIO12ピンにSPIのCSピンをつないでいたこと。
A fatal error occurred: MD5 of file does not match data in flash!
A fatal error occurred: Packet content transfer stopped (received 8 bytes)

環境

  • platformio
  • windows11
  • ESP32+display2個+mp3プレイヤー+加速度センサ
  • ピンアサイン的にどうしてもCSピンをIO12から動かせない状況

試したこと

書きこめた

espefuse.pyで、IO12ピンの設定を変える

  1. ESP32をPCにつなぎ、デバイスマネージャーでCOM何ポートとして認識されているかを確認します。

  2. espressiffのesptoolリポジトリから、esptool-v4.7.0-win64.zipをダウンロードして展開します。(バージョンは適宜変更してください)

  3. powershellやgit bashなどで展開したディレクトリまで移動し、以下を実行してESP32のポートを指定します。

     .\espefuse --port COM10 summary
    

    すると表示された文章の一番下にFlash voltage (VDD_SDIO) determined by GPIO12 on reset (High for 1.8V, Low/NC for 3.3V)の表記が見られるので、これを変更します。

  4. 続いて以下のコマンドで電圧の設定を行います。

    .\espefuse --port COM10 set_flash_voltage 3.3V
    

    This is an irreversible operation!Type 'BURN' (all capitals) to continue.と聞かれるのでBURNも入力しましょう

  5. もう一度.\espefuse --port COM10 summaryを実行して、Flash voltage (VDD_SDIO) set to 3.3V by efuse.が出ていれば変更完了です。書き込めると思います。

解説

esp-idfのgithubのNote about GPIO12 (ESP32 only)を読むと、IO12ピンは、フラッシュチップへの供給電圧(VDD_SDIO)を決めるのに使われていて、LOWなら電圧が3.3V、HIGHなら電圧が1.8Vに決まります。どこにもつながっていないときは、プルダウン抵抗でLOWに落とされ、ESP32に3.3Vが供給されます。しかし、IO12が何処かにつながって、HIGHになっているときは、電源電圧が1.8Vとなるため、フラッシュチップが起動せず書き込みができない状態となるようです。今回実行したコマンド.\espefuse --port COM10 set_flash_voltage 3.3Vで、IO12の状態に関わらず、フラッシュチップへの供給電源電圧3.3Vに設定すると、無事電源が供給されて書き込めるようになる、ということでした。

供給電圧が1.8VのときはビルトインBASICモードに入るようです。イースターエッグ機能らしい。
BASIC INTERPRETER HIDDEN IN ESP32 SILICON
Easter Egg of ESP32
ESP32を始めてみる BASIC編

参考記事

その他の解決策

  • ピンアサインを変える(今回はこの方法が使えないが、一旦別に変えてみて動作確認できた)
  • IO12ピンにつながっているディスプレイを書き込み時に抜いてもう一度差す

書き込めなかった

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1