On the Teensy boards, precise timings can be accomplishing using the cpu cycle counter and a macro for the clock frequency.
Here is an example that uses the cpu cycle counter to time the conversion and readout for an ADC
// cpu cycles for 700 nanoseconds
uint32_t wait_counts = (700 * (F_CPU/1000))/1000000;
uint32_t counts_at_start;
// Start the conversion in the ADC
digitalWrite( CNVST, HIGH);
// Wait 700 nsecs for the conversion to complete
counts_at_start = ARM_DWT_CYCCNT;
while(( ARM_DWT_CYCCNT-counts_at_start)<wait_counts);
// Enable the readout
digitalWrite( CNVST, LOW);
// Read the data
u16result = SPI.transfer16(0xFFFF);
Is there similar access to a cpu counter and a macro for the cpu frequency, in the UNO R4?
P/S Aside, in case someone is interested, the wait is actually a little less than 700 nsecs, because of the setup time for the spi. And that depends on the platform. That is probably not so relevant to the question. But it goes to the point that if you want to get the best speed for the external ADC, you need to be able to time this closely.
It compiled OK for me. (in setup())
Check the surrounding lines for missing semicolons or something.
(Note that this a Cortex core stuff; it should work on any ARMCM3 or higher that has the DWT unit.)