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.


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.

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

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!

Follow Adafruit on Instagram for top secret new products, behinds the scenes and more https://www.instagram.com/adafruit/

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


Maker Business — Moving manufacturing out of China

Wearables — Take control of your LED sequins

Electronics — Current limiting!

Python for Microcontrollers — Python on Microcontrollers Newsletter: ESP32 Web Workflow for CircuitPython, CircuitPython Day 2022 and more! #CircuitPython @micropython @ThePSF @Raspberry_Pi

Adafruit IoT Monthly — Detect Radiation, ML Baby Monitor, 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! — New Products 8/11/2022 Featuring #adafruit 14-segment LED Alphanumeric Backpack – STEMMA QT!

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.