ESP32-S3 ADC accuracy for a gimbal use case

I am building camera gimbal / pan/tilt/yaw type device that will be doing face tracking. I have been designing using the ESP32-S3 to run the three FOC loops, and use the onboard ADCs for current sensing.

I stumbled upon some threads saying the ESP32-S3 does not have a great ADC implementation. I have not ordered my test boards yet, but I wanted to check with the community for advice on the topic. For more context I am pairing the ESP32 with three DRV8317 driver ICs which have dedicated current sense monitors for each phase.

  • Is the ESP32-S3 problematic? I will have wireless disabled actually.
  • I am seeing that the ESP32-C6 has a better ADC implementation, would that be better?
  • Can the C6 handle 3 FOC control loops running for each motor?
  • Should I move to a dedicated SPI based ADC IC?
    • Is this supported by SimpleFOC?
  • Am I just over thinking this and it would be fine for a slow moving gimbal use case? I am mostly concerned about limiting current spikes should someone grab the gimbal and push on it.
  • How material is having all 3 phases monitored? (More material for the C6 given it does not have 9 ADC pins available).
  • Lastly, I believe the ESP32’s are muxed, so I am guessing I would need to read multiple readings per loop? Is there a good target here?

Thank you for any advice!

I’m currently running two motors from an ESP32-S3 with a >10 kHz loop rate (i.e. <0.1ms period, which is probably what you need to target), though I’m operating without current sensing. Adding a third motor and current sense might exceed the processor’s bandwidth, but I haven’t benchmarked that specific configuration. Note that these figures are based on ABZ encoders; SPI cannot achieve this target loop time.