Quiero usar un microcontrolador STM32 para leer datos de un ADC multicanal. Lo más probable es que el microcontrolador que pretendo usar sea algo de la serie F7 (como STM32F746ZGT ), mientras que el ADC que actualmente tengo en mente es el LTC2358-18 de Analog Devices.
El proyecto en el que estoy trabajando requiere que lea simultáneamente 6 canales analógicos (con una tasa de datos razonable). Según tengo entendido, el chip ADC en particular puede generar sus resultados de conversión en diferentes canales de salida de datos en serie (SDO) que se pueden leer en paralelo (el reloj en serie es idéntico para todos ellos):
Me preguntaba si es posible usar una sola MCU STM32 para leer los datos de salida de 6 canales a través de SPI (realmente no necesito los dos canales restantes). En general, asumiría que necesito configurar 6 interfaces SPI que están disponibles en STM32F746ZGT, de la siguiente manera:
O, en otras palabras, sería algo como esto:
¿Funcionaría realmente este tipo de configuración o me estoy perdiendo algo?
No soy un experto en STM, pero para casi todos los controladores con los que he trabajado, esto no funcionaría por las siguientes razones:
En su lugar, lo que debe hacer es leerlos según lo previsto en serie (por lo general, esto se hace a través de una lectura DMA). Dado que solo hay un ADC en el interior y la frecuencia de muestreo máxima según la hoja de datos es de 200k (8 canales), suponiendo que una transferencia de 24 bits (no estoy seguro de si el DMA del STM puede manejar esto) da como resultado una velocidad de datos / velocidad de spi de aproximadamente 40 MBit. Esto debería ser posible, sin tener en cuenta el procesamiento posterior.
Su procesador STM no tiene subprocesos múltiples, no lo olvide. No puedes leer físicamente 6 líneas en paralelo. Solo uno a la vez, use los ID de canal y conéctelo todo a una línea. La conversión ADC es lo que lleva más tiempo en el proceso. Ordene a los ADC que conviertan y luego lea las salidas individualmente. Póngalos todos en la misma línea, luego diga 'línea 1 dame datos', ahora 'línea 2 dame datos', uno por uno. Esta es la razón por la que existen los ID de canal, de lo contrario estarían desperdiciando bits valiosos.
uhoras
dibosco
CR
Arsenal
CR
Arsenal
Gesto de desaprobación