interconectando múltiples ADC: compartiendo el reloj maestro

2

Mi proyecto implica la conexión de dos convertidores analógico-digitales a un microcontrolador STM32F411RE. El primer ADC es un ADS1191, el segundo es un ADS1158.

Esos dos ADC tendrán que convertir señales simultáneamente y sus muestras serán recuperadas por la MCU.

He estado acostumbrado a trabajar con un solo ADC. El programa se interrumpe a medida que el pin DRDY (datos listos) baja, y las muestras se recuperan.

Las preguntas son:

¿Debo asegurarme de que los dos ADC compartan el mismo reloj maestro? En caso afirmativo, supongo que debería usar el reloj interno de uno de ellos y enviarlo al pin del reloj externo del segundo. ADS1191 tiene un reloj interno de 2MHz y requiere un reloj externo de 2MHz. ADS1158 tiene un reloj interno de 16MHz y requiere un reloj externo de 0.1 a 16mHz. ¿Es seguro usar el reloj interno ADS1191 y alimentarlo a ADS1158? ¿Tendré que sacrificar algo alimentando un reloj maestro de frecuencia más baja (2MHz frente a 16MHz)?

Saludos,

Laurent.

Clarificaciones

El modo de "lectura continua" que estoy acostumbrado a usar con un solo ADC consiste en conectar una señal de interrupción al pin DRDY (datos listos) del ADC. Cuando se están muestreando datos, el pin DRDY cambia a alto. Luego, cuando los datos están listos para ser transferidos, el pin cambia a bajo. La MCU detecta el borde descendente de DRDY y comienza a transferir los datos byte por byte.

Lo que estoy buscando es tener muestras "correlacionadas", es decir, asegurarse de que dos muestras respectivas de cada ADC recuperadas al mismo tiempo correspondan al mismo tiempo "bin", lo que podría no suceder si el maestro respectivo Los relojes muestran una deriva. De las valiosas respuestas a continuación, concluyo lo siguiente con respecto al uso de dos (o más) ADC.

Solución sugerida Asegúrese de que los dos ADC compartan el mismo reloj maestro. En mi aplicación, puedo redirigir el reloj maestro interno del primer ADC a un pin de salida. Esta señal de reloj se enviará como "reloj externo" en el segundo ADC. Para reducir la frecuencia (que la mayor parte del tiempo está relacionada con la frecuencia de muestreo), se puede recurrir a un flip-flop tipo d (para dividir las frecuencias entre dos). Por lo tanto, el principio sería el mismo que en una sola aplicación de ADC: interrupción de activación en DRDY de un ADC (el que tiene el tiempo de retención más corto). Cuando esta primera transferencia haya finalizado, recupere las muestras del otro ADC.

    
pregunta olol85

2 respuestas

1

Si desea tener el mismo número de muestras por segundo, deberá examinar las hojas de datos muy de cerca. Lo que entiendes específicamente por "simultáneamente" necesita una aclaración. Todo lo que puedo mostrarles aquí es cómo lograr muestras correlacionadas al mismo ritmo.

El ADS1158 muestra (hoja de datos figura 128) muestra un modo de canal fijo en su forma más simple con la velocidad de datos en Fclk / 128. Esta parece ser la frecuencia de muestreo.

El ADS1191 está optimizado para frecuencias de muestreo de < = 8kS / s. De acuerdo con el fabricante, el uso de la velocidad de 8 kS / s sería lo mejor que se puede lograr.

Hay una opción para un reloj externo en ambos, así que veamos qué puedes hacer.

El ADS1191 acepta un reloj de 2.048MHz (consulte la hoja de datos para obtener detalles de las conexiones de pines, ya que se espera que el modulador funcione a 128 kHz).

Para obtener la velocidad de 8 kS / s del ADS1158 en el modo simple anterior, se obtiene un reloj maestro de 1.024 MHz. Tenga en cuenta que hay opciones limitadas para cambiar la frecuencia de muestreo en esta parte

Esto es afortunado: genere un reloj maestro de 2.048 MHz para el ADS1191 y divídalo por 2 para obtener el reloj externo en el ADS1158.

Si ahora inicia cada conversión en el mismo instante, obtendrá conversiones que tomarán la misma cantidad de tiempo y la tasa de muestreo se correlaciona.

Tenga en cuenta que el reloj de 2.048 MHz para el ADS1191 solo se implementó para permitir un acceso SPI más rápido; no debe intentar ejecutar el modulador a más de 128 kHz.

[Actualización en respuesta al comentario]

Sugerí un reloj maestro porque ese era un método para lograr el resultado deseado; Como se nota, hay otros métodos.

Un flip flop tipo D con #Q a D es una manera estándar de dividir un reloj entre 2.

HTH

    
respondido por el Peter Smith
2

Lo que debe decidir es: si deben convertir la misma cantidad de bits exactamente al mismo tiempo, o si deben muestrear al mismo tiempo. Estos son muy, muy diferentes.

(los enlaces a hojas de datos en tu pregunta me habrían ayudado a ser más rápido, por cierto) Para referencia; Hoja de datos de TI ADS1191 / ADS1192 y ADS1158 Datasheet

Comenzar al mismo tiempo es fácil:

Ambos chips tienen una señal dedicada de "INICIO" (p10 ADS1191 y p6 ADS1158), que puede disparar simultáneamente, y comenzarán a muestrear exactamente al mismo tiempo. Uno que se ejecuta a 16MHz se puede hacer primero (¡dependiendo de la resolución de conversión establecida!), Pero ¿eso importa? La señal analógica capturada es de la misma hora exacta. Para eso es ese pin. (( Edición: Una nota: La hoja de datos ADS1191 no especifica la polaridad de INICIO en esa tabla, debe buscarla más adelante en la hoja de datos si pretende usarla. Probablemente sea positiva como se indica en la tabla ADS1158 , pero es mejor estar seguro. ))

Convertir al mismo tiempo tiene ifs:

Si necesita que se conviertan exactamente al mismo tiempo, con la misma resolución y ambas hojas de datos especifiquen el mismo número de ciclos de reloj para esa resolución (¡cuente el if está aquí!) entonces, sí, deben ser cronometrados desde la misma fuente. Pero en tal caso, seriamente consideraría usar un oscilador de cristal externo de 2MHz para ambos, porque claramente tiene algunas demandas de tiempo muy específicas que un oscilador interno no le va a dar.

Lo que digo es: si tiene motivos para preocuparse por la falta de coincidencia del tiempo de conversión en el orden de los microsegundos (que creo que no tiene si usa los pines de inicio para sincronizar, pero esos son detalles que usted no especificó), no desea utilizar ningún oscilador interno. En absoluto.

Lo que creo que querías preocuparte:

Si solo desea estar 100% seguro de la correlación entre las muestras de ambas, ingrese a las hojas de datos, mire las especificaciones de START-Signal to Actual Sample / Hold time y vea si coinciden con sus expectativas. Estoy pensando que probablemente lo harán.

¿Qué perdiste al sincronizar un dispositivo de alta velocidad a una velocidad más baja?

Si marca el dispositivo con una frecuencia más baja con capacidad para una frecuencia más alta, de hecho estará sacrificando la velocidad o la precisión, o ambas cosas.

Digamos que puede hacer 16 muestras en 1 ms a 16 MHz (no leí esa parte de la hoja de datos, así que esto es hipotético, no es un número real).

Luego, si lo cronometras a 2MHz, solo podrá hacer 2 muestras en el mismo 1 ms. Si solo necesita una muestra por 1 ms y no necesita una alta precisión a través del muestreo excesivo: no hay daño. Si desea una alta precisión, es probable que desee una muestra excesiva y, por lo general, eso se hace en un factor 4, 8 o 16: Ah, vergüenza: ahora es demasiado lento.

Lo mismo ocurre con la necesidad de 4 muestras por 1 ms. Podría hacerlo a 16MHz, pero ahora a 2MHz, no puede. Es así de simple.

La sincronización específica provendrá de su hoja de datos y no ha compartido sus requisitos exactos, por lo que verificar todo eso depende totalmente de usted.

    
respondido por el Asmyldof

Lea otras preguntas en las etiquetas