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.


Adafruit publishes a wide range of writing and video content, including interviews and reporting on the maker market and the wider technology world. Our standards page is intended as a guide to best practices that Adafruit uses, as well as an outline of the ethical standards Adafruit aspires to. While Adafruit is not an independent journalistic institution, Adafruit strives to be a fair, informative, and positive voice within the community – check it out here: adafruit.com/editorialstandards

Stop breadboarding and soldering – start making immediately! Adafruit’s Circuit Playground is jam-packed with LEDs, sensors, buttons, alligator clip pads and more. Build projects with Circuit Playground in a few minutes with the drag-and-drop MakeCode programming site, learn computer science using the CS Discoveries class on code.org, jump into CircuitPython to learn Python and hardware together, TinyGO, or even use the Arduino IDE. Circuit Playground Express is the newest and best Circuit Playground board, with support for CircuitPython, MakeCode, and Arduino. It has a powerful processor, 10 NeoPixels, mini speaker, InfraRed receive and transmit, two buttons, a switch, 14 alligator clip pads, and lots of sensors: capacitive touch, IR proximity, temperature, light, motion and sound. A whole wide world of electronics and coding is waiting for you, and it fits in the palm of your hand.

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: Programming Pi 5 PIO, CircuitPython & VSCode 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 — Halloween, WiLo, and more!

Maker Business – Adafruit Daily — Slipping through Nvidia’s grip on A.I. chips

Electronics – Adafruit Daily — Crouching LED, Hidden Photodiode

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.