Deefholt Dynamics - ESP32 P4 DevKit
Introduction
We are Deefholt Dynamics e.V., the Formula Student team of the PHWT in Diepholz, Germany. This post comes from our vehicle electronics team, which is responsible for the ECU and the other electronics in our electric race car.
Our project
This season we are switching to new Drivetrain Innovation (DTI) inverters and motors. As a result, the car needs a second CAN bus. Our ECU has been running on an ESP32-S3, which only supports one CAN bus, so we needed a more capable chip. We chose the new ESP32-P4.
Our long-term goal is to understand the ESP32-P4 well enough to design a new ECU with the chip soldered directly onto the board. As an intermediate step, we developed a dev board of our own: the ESP32-P4-Module-DevKit. It plugs into our existing ECU, so we can test the new chip together with all the peripherals already on the old ECU. That was a very fast way for us to get started, and our software team could begin working with the new chip much sooner.
Electronics and design
We built the DevKit around a Waveshare ESP32-P4 module. It already contains:
- the ESP32-P4 itself,
- an ESP32-C6H8 co-processor for Wi-Fi and Bluetooth,
- the power supply,
- the flash memory.
This drastically simplified our layout, and the larger pin pitch makes production easier too.
Key design decisions:
- Drop-in replacement: The pin headers match our old ESP32-S3 DevKit, so the new board plugs straight into the existing ECU. The old DevKit can simply be swapped for the new one.
- Two CAN interfaces: The DevKit has its own CAN transceivers. With jumper resistors, we can switch between the CAN interfaces on the DevKit and the ones already on the ECU.
- New CAN circuit: On the DevKit we tried out a new CAN circuit with a common mode choke and split termination.
- Jumper resistors on every header connection: All connections to the pin headers, and therefore to the old ECU, run through jumper resistors. We can check each connection and try experimental changes without a new board.
- Native USB: The ESP32-P4 has a built-in USB Serial/JTAG interface. Unlike with the ESP32-S3 DevKit, we program and debug directly through the USB port.
- Galvanic isolation: The ECU uses isolating DC/DC converters, so plugging in the DevKit is not enough. The isolated CAN transceivers on the DevKit need their own 5 V supply, which we feed in next to the USB-C connector. This keeps the carβs circuits galvanically separated from the DevKit.
After extensive testing together with our software team, we know of no bugs so far. All functions of the old ESP32-S3 DevKit work on the new board, and both CAN interfaces run properly.
Tips, tricks & offers
- Consider a ready-made module for a new chip. A module with chip, flash and power supply keeps the layout simple and the pin pitch manageable.
- Add jumper resistors where you are unsure. They make it easy to isolate faults and try alternatives.
- We are happy to answer questions about the ESP32-P4, CAN setups in a car, or how we integrated the DevKit into our ECU.
CTA
Has anyone here worked with the ESP32-P4, especially with its CAN (TWAI) peripherals or the USB Serial/JTAG interface? We would love to hear your experiences, tips and feedback on our approach. Our next step is a custom ECU with the chip soldered directly on the board, and we would appreciate any advice on layout and pitfalls.

