ESP32uesday: ESP-IDF is Actually Pretty Easy

Last week we successfully got an ESP32-S3 board and LCD screen talking over an 8-bit parallel connection; potentially much faster than the usual SPI interface that’s used. Some configurations were producing visual glitches though. And while fast, we couldn’t push it fully to the speeds expected.

Was the problem with our code (despite following the examples), some limitations or quirks of the hardware, or unresolved issues in Espressif’s libraries relating to the LCD? Two of these were untestable…but the third, the libraries, we actually have options…

Espressif’s ESP-IDF framework can be accessed a couple of different ways:

The ESP-IDF version bundled with the Arduino board package tends to lag the latest code somewhat…it looks like a new release is made roughly quarterly, bringing the current ESP-IDF release snapshot at the time, while the mainline branch continues to evolve.

LCD support is so vital in devices today, I just had a hunch this would be one of the evolved areas. If I switched from Arduino development to Espressif’s command line tools, the glitches and speed issues might clear up on their own. I’d been favoring Arduino-centered development mostly because its wide adoption makes it easier to share code and projects…but a little bit, also, I’d just been dreading yet another one-off toolchain install that’s unpleasant to use or ill-supported. But I had to verify the evolved library theory…

And as it turns out, the ESP-IDF command line tools are a breeze! Setup and basic use is summarized right there in the top-level README…

The build tools work great on Windows, Linux or Mac (I hate needing to bring out a second machine or set up a VM for one vendor’s tools). And the “menuconfig” tool is really interesting to fool around with. To build and upload one of the example projects, the same idf.py script performs several different actions: set-target, menuconfig, build, flash and monitor.

And sure enough, the newer LCD-related library code resolved all the previously-seen issues; byte swapping in hardware worked without visual glitches, and we could now drive the parallel connection up to 20 MHz (16 MHz with graphics data in PSRAM), refreshing the screen at 70 Hz. Buttery smooth!

Just a few days ago, the ESP32 Arduino boards package saw a new release, bringing with it an updated ESP-IDF…and sure enough, this version includes the LCD fixes! So it’s nice to know that either approach — Arduino or command line — are solid options now.


Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7:30pm ET! To join, head over to YouTube and check out the show’s live chat and our Discord!

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 38,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — New Products 11/15/2024 Featuring Adafruit bq25185 USB / DC / Solar Charger with 3.3V Buck Board! (Video)

Python for Microcontrollers – Adafruit Daily — Python on Microcontrollers Newsletter: A New Arduino MicroPython Package Manager, How-Tos and Much More! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

EYE on NPI – Adafruit Daily — EYE on NPI Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

Adafruit IoT Monthly — The 2024 Recap Issue!

Maker Business – Adafruit Daily — Apple to build another chip at TSMC Arizona

Electronics – Adafruit Daily — SMT Tip – Stop moving around!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !


No Comments

No comments yet.

Sorry, the comment form is closed at this time.