あみらぼ

電子工作がメインのDIYもの作り雑記

ESP32の新バージョンのチップが登場?

さて、前々回、ESP32-WROVERを使って240x320のLCD60fpsでヌルヌル動かすという目標と共に、計算上の理論値で最大94fpsまで出せそうだし、60fpsならきっと余裕だよね、みたいな事を書きましたが、(案の定)そう上手くはいかず見事に苦戦しています。

 

苦戦した果てに、いろいろ最適化を工夫して、8ビット接続でも30fpsは達成して、16ビット接続のLCDモジュールなら60fpsもなんとか達成できそうな目途がたちました。どうやったかはかなり長くなりそうなので詳細は後日として、そもそも94fpsはかなり夢物語だったんですね。ネット上を見ても、毎フレーム全画素書き換えはせいぜい15fps程度みたいで、30fpsはなかなか厳しく、60fpsはほぼ不可能、といった様子ですね。30fpsで妥協してもいいのですが、他の人ができてないの知ると、逆に意地でも60fps出したくなりますw

 

で、今日はその途中で偶然見つけたESP32に関する興味深い話。ESP32のウエハレベルでの新バージョンが今年のはじめ辺りから登場しているようです。日本語で検索しても、ほとんどその情報は見かけないので、ドキュメント読んで確認した、現バージョンとの違いについて書いておきます。

 

そもそも、チップの更新は今回が初めてではなくて、現在もESP-WROOM32とESP-WROOM32Dが両方流通してたりしますね。モジュールの型番と、内蔵ESPの型番やリビジョンの違いがかなり複雑になっていて、非常にわかりづらいです。今使ってるのも、ここではESP32-WROVERと呼んでいますが正確にはESP32-WROBER-Bですね。従来の製品間でも細かな違いはあるようですが、個人的に一番気になったのは、Rev0のチップには「同じペリフェラルアドレスに連続して書き込むと値が化ける」というエラッタでしょうか。ちょうど、LCDを表示するときなんかに、このエラッタをもろに踏んで原因の究明に苦労した方もいらっしゃるようです。

 

で、今回新しく生産が始まったのは、ESP32-D0WD-V3というチップのようです。公式でも、Recommendedと強調されていることから、今後はWROOMもWROVERもこのチップを搭載したものに統一したいといった感じでしょうか。実際に購入するモジュールの方ですが、このチップが搭載されたモジュールは「E」が付いた型番になるようです。恐らく日本の電子部品屋や通販では、ESP-WROOM-32Eとか、ESP32-WROVER-Eなどという名前で販売されるのではないかと思います。

 

で、肝心の従来チップとの違いは、5つほどの変更点があるようですが、個人的に気になるのは次の2つのエラッタが修正されたことです。(詳細が気になる方は、「ESP32 ECO V3」で検索してみてください。リンクがいつまで有効かわからないので、あえて直リンクは貼りません)

  • CPUが特定の順序で外部SRAMにWrite/Readを行った際に予期しない動作となる場合がある
  • デュアルコア使用時にそれぞれのCPUが異なるアドレス空間を読み込んだ際に予期しない動作となる場合がある

両方とも、いくらでも簡単に踏みそうなエラッタですが、ユーザーが書いたプログラムがこれらのエラッタを踏みそうな場合は、ESP-IDFの方でこれらのエラッタを回避するためのソフトウェアのワークアラウンドが追加されるようなので、特に表向きに明らかなバグが出たりすることは現状でも起こらないようになっているようです。なので、ユーザー側のプログラムは特にチップの更新を意識する必要は無さそうです。ただ、これらのエラッタが修正されることによりV3のチップを使用する場合は、ソフトウェアワークアラウンドが必要なくなるので、実行する処理によってはパフォーマンスが向上する可能性は十分考えられます。

 

確証はありませんが、LCDを60fpsで動かすためのテストをしている中で、極端に速度が落ちる場合などがあり、どうもこれらのエラッタワークアラウンドが関係しているような気がしています。なので、今使ってるESP32-WROVER-Bはテスト用と割り切って、最終的に本番を作る際には、V3チップが搭載されたESP32-WROVER-Eを使った方がよさそうな気がしています。

 

にしても、様々な組み合わせで、ESP32のモジュールの種類が大変な数になってきていますね。(気になる方は、「Espressif Products Ordering Information」で検索してみてください)

  • デュアルコアorシングルコア
  • チップの種類が古い物から順に少なくとも3種類
  • PSRAM無しorPSRAM有り
  • 無線アンテナ内蔵or外付け
  • SPI-Flashサイズが4MB or 8MB or 16MB

上記の選択がそれぞれ独立な上に、これ以外にもいろいろチップの種類があるので、もはや組み合わせ爆発状態ですw

日本で手軽に手に入るのは、SPI-Flashサイズが4MBのモジュールだけのようですが、16MBのモジュールも値段がほぼ変わらないようなので、V3チップの16MB SPI-FlashのWROVERが秋葉原とかで安く買えるようになるとありがたいですね。

 

以上、ESP32の新チップに関して、個人的に調べた情報でした。

需要があるかは全くわかりませんが(恐らく需要は無いとは思いますが)、次回は毎フレLCDピクセル更新を60fpsで行うために考えた工夫なんかを紹介できればと思っています。

 

ではでは。