La velocità di “scambio” dati della USB è limitata dal kernel del sistema operativo che ha un tick di 1 mS
Questo è un limite dei kernel di tutti i sistemi operativi, Linux e Mac compresi.
Per cui nelle condizioni migliori si potrebbe arrivare a 1000 scambi al secondo ma normalmente oltre a 800 non si arriva
E questi scambi sono anche un po’ sovrastimati dal contatore dell’HAL,
se vai a vedere con l’oscilloscopio i tempi saranno di 1 o 2 mS per cui puoi avere una certa sicurezza solo fino a 500
e una buona stabilità dei tempi solo fino a 100 scambi al secondo.
Per mandare più campioni li si dovrebbero mandare in “batch” cioè accumularli nel micro e poi mandarne decine o centinaia ad ogni scambio.
Ma, mi dispiace, il nostro sistema non è fatto così.
Questo limite era chiaramente specificato sia nella documentazione dei Master, che in quella dell’HAL e anche in quella dell’ADC24.
Per superare questo limite dovresti scrivere molto codice, non so se nel PIC del Master o nello ESP32, quale stai usando ?
Se è lo ESP32 potresti usare una decina di generic-pins per mandare dieci dati all’HAL in ogni scambio.
Ma se è il Master il suo HAL non prevede i pin “generic” e quindi dovresti modificare il programma HAL e dovresti anche modificare il firmware che è nel PIC del Master
(è tutto open source ma il lavoro da fare sarebbe davvero molto)
Inoltre l’ADC24 può arrivare a velocità alte solo se lavora a singolo canale ma ha un tempo di cambio canale molto lungo e quindi credo che con tre canali non arriverai a più di 100 200 campioni al secondo (potrei sbagliarmi e in tal caso dovresti fare i conti precisi consultando il datasheet dell’ADC24)