There is no explicit syncing, but the way it’s set up all channels are always processed in the same callback.
It does process the GPIO for each, but advancements are done all at once between conversions.
I actually want to rework the internal callback to work a bit more succinctly and be more efficient when dealing with mux’d channels. Currently when using a mux half of the reads for each channel are thrown away so that the channels can swap without having stop/start the DMA every time.
Here’s the internal callback that happens after the conversion (including all hardware oversampling conversions, etc.)