Adding an Intermediate MCU to Custom Hardware with DWM3000

We are a small team of students trying to develop rechargeable tags using the DWM3000 module and an ESP-32-C3-MINI1 that are interoperable with the U1 chip. We currently have custom devboards, however we have encountered a big issue in regards to communicating between the U1 chip and DWM3000 which has been mentioned on the forum before under the forum post title: Apple NI Configuration Data Frame

The Apple NI docs for third party accessories shows:

In order to generate and send accessory configuration data, you need UWBConfigDataLength and UWBConfigData in the struct which is provided by the middleware: Qorvo. However, it is only compatible with ARM Cortex M33 and M4 MCUs.

Ideally, we would like to stick with the esp32 as that is what we have been developing on, however there is no supported middleware that I know of for it. The alternatives we are thinking about:

  1. Use a ARM Cortex M4 MCU breakout board like or another suggestion:
    DEV-17713 MicroMod
    NUCLEO-L432KC
  2. Use the Qorvo Eval Board to continue development and then come back to custom hardware
  3. Do a complete overhaul of the custom pcb with a ARM Cortex M4 MCU

We are leaning to option 1, however are a bit confused as how to integrate the breakout as a slave mcu to use between the esp32 and dwm3000. The esp will handle BLE to send data to the phone, and the cortex will configure the uwb data for the dwm. How would the communication stack work? Would SPI or I2C suffice between the ESP32 and Cortex?

In my experience communication like that would be using a uart.
SPI or I2C both imply a controller and a device, one processor is in charge of the link, if the other wants to send data it needs to interrupt and then wait for the controller to ro read the data. Great for a processor reading information out of a dumb device, not so good for two way communication between two smart devices.
Uart on the other hand allows either device to send data to the other whenever it needs to.

So BLE sets up the link and then sends the UWB system the configuration data. UWB waits for that and then starts running and sends the BLE / main processor the measured ranges or a connection lost message as required.