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 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:

Join Adafruit on Mastodon

Adafruit is on Mastodon, join in!

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, 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 7pm ET! To join, head over to YouTube and check out the show’s live chat – we’ll post the link there.

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

Join over 36,000+ makers on Adafruit’s Discord channels and be part of the community!

CircuitPython – The easiest way to program microcontrollers –

Maker Business — “Packaging” chips in the US

Wearables — Enclosures help fight body humidity in costumes

Electronics — Transformers: More than meets the eye!

Python for Microcontrollers — Python on Microcontrollers Newsletter: Silicon Labs introduces CircuitPython support, and more! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Guardian Robot, Weather-wise Umbrella Stand, and more!

Microsoft MakeCode — MakeCode Thank You!

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

New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — #NewProds 7/19/23 Feat. Adafruit Matrix Portal S3 CircuitPython Powered Internet Display!

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

No Comments

No comments yet.

Sorry, the comment form is closed at this time.