¿Comparador STM32F0x1 (COMP) y ADC en el mismo pin simultáneamente?

8

Estoy preparando un proyecto que aprovecha el periférico de comparación en el microcontrolador STM32F051. He leído en la documentación que para que el comparador funcione, el pin de entrada debe configurarse para analógico ... que es la misma configuración si estuviera usando el pin como entrada ADC.

¿Puedo usar un solo pin, digamos PA1, como entrada y configurarlo como una entrada de comparación de ventana y como una entrada ADC en ADC_IN1?

¿Hay algún problema con esta configuración, como ruido adicional que deba considerar?

Hoja de datos (p 19)

Manual de referencia (p 295)

Una referencia interesante, que sugiere que esto debería ser posible: ingrese la descripción de la imagen aquí Tomado de AN4232: Introducción a los comparadores analógicos para la serie STM32F3

Daniel
fuente
1
¿Podría vincular a la documentación relevante? La hoja de datos que encontré no menciona comparadores, pero esta es una pregunta interesante
David
Seguramente lo que quise decir fue STM32F0 * 5 * 1 ...
Daniel
Según mi experiencia, debería ser factible, pero no puedo decirlo con certeza y dudo que encuentren esta información en fuentes oficiales. Lo mejor que puede hacer en IMO es experimentar: obtener una placa de núcleo STM32F07x que es bastante barata (~ 10 USD) y probarla. O consiga un tablero de descubrimiento F051, no son mucho más caros. ST usa los mismos núcleos IP periféricos en diferentes MCU, por lo que puede esperar que se comporte de manera similar entre F07x y F051.
Jan Dorniak
@ JanDorniak Sí, esa sería la mejor manera. Desafortunadamente, me tomará mucho tiempo (varios días jugando) para resolver esto con seguridad y necesito pasar ese tiempo preparando un PCB para la producción de prototipos. Si nadie vuelve con nada, eventualmente lo haré.
Daniel
1
@Daniel Un problema que puedo decir con certeza es que algunos periféricos están conectados a través de pines: tuve problemas al conectar un DAC como entrada COMP porque estaban conectados a través de un pin que intenté usar como salida digital. No funcionó, afortunadamente tenía algunos pines libres en el MCU. Si quieres verlo, fue PA4 en L053
Jan Dorniak

Respuestas:

4

Esto funciona, obtendrá números de vuelta, así como las interrupciones. Lo he comprobado, descargue de .

La precisión y la falla aún no se han determinado. Pero está bien descrito en las Notas de aplicación como lo indica @Bence Kaulics en este hilo (ver results.txt para Notas de aplicación adicionales)

Creo que será estable por las siguientes razones.

a) The circuit diagram in RM0091 shows a direct connection from comparator to pin. i.e. it is indicated that the comparator cannot be disconnected with a switch or MUX, and will thus work as soon as the pin is assigned 'analog in'.

b) The comparator is NOT dependent on a 'Clock' to enable it (it is alow power device).

c) ST would not be able to make this level of change without assigning a new part number.


The good news is that one can continue to use the comparator for high-speed events such as over current and emergency stop etc whilst still using the ADC analog window events for other software control.

Esto también funciona con el DAC, es decir, puede configurar todo internamente con el DAC o externamente con el DAC y algunas resistencias.

Simplemente mirando el circuito, usará el ADC en paralelo al comparador, esencialmente un amplificador. Como sabemos, estos son dispositivos de gran ganancia de muy alta impedancia. Los problemas técnicos no son nuestros amigos.

Ahora vamos a golpear una tapa descargada en ese pin de vez en cuando para alimentar el ADC.

Como todos sabemos, necesitamos sobremuestrear el ADC y preferiblemente rechazar la primera lectura después de un evento de cambio de mux para eliminar la inclinación desde y hacia los canales adyacentes.

El ADC en el STM tiene una impedancia de entrada algo <50K // 5pF dependiendo de cómo se usen. (DM00039193.pdf pág. 76ff)

La Tabla 53 proporciona 400-> 50KOhm, que es lo que encontré hace algún tiempo cuando calibré mi ADC F373.

La página 79 muestra los circuitos ADC.

Pg 82 ofrece una breve descripción del pin comparador, leído en concierto con la descripción general de los pines analógicos anteriores (pg73ff)

Ponga eso en paralelo con la entrada de su comparador y ADC MUX y modele en especias. Recuerde cargar regularmente la tapa del ADC a un voltaje aleatorio.

Pase lo que pase en el circuito y el software, obtendrá fallas bastante razonables en la entrada de su comparador. MALA IDEA, incluso si conecta el pin a un seguidor de baja impedancia y una tapa de desacoplamiento (en la línea móvil de una entrada del comparador ????).

El gorro utilizado por el ADC es el asesino. Con suerte, los dispositivos futuros tomarán muestras usando seguidores / aisladores internos tanto en el ADC como en el comparador. Es posible que ya estén presentes como características no documentadas (poco probable debido a la diafonía de mux).

Al igual que yo, creo que nos involucramos tanto con el aspecto digital de las cosas que, cuando pasamos a lo analógico e híbrido, olvidamos lo básico.

¿Cómo medir pequeñas corrientes usando el convertidor de corriente a voltaje? es una discusión que tuve ayer con alguien más. Sabía la respuesta porque me caí mal. Incluso con los mejores 3V en 50K, obtenemos un AVO de 16K / voltio. ¿Cuándo fue la última vez que utilicé un AVO / multímetro?

Dicho todo esto, una mirada a los circuitos del F373 muestra que ST y ARM parecen haber tenido la intención de obtener resultados viables tanto del comparador como del adc que se usan simultáneamente en un dispositivo mixto. La adición de opamps en las series 150 y 300 da una pista sobre los requisitos de aislamiento de impedancia.

Estoy seguro de que alguien más inteligente que yo podrá rediseñar el entorno para el que se diseñaron estas interconexiones internas. Pensaría automotriz o HVAC ... inversores y FOC. La biblioteca FOC puede proporcionar información valiosa.

A menos que esté construyendo un instrumento de alta velocidad y alta precisión, dicho uso puede ser lo suficientemente estable como para ser utilizado prácticamente (dentro de las advertencias anteriores). Ciertamente ahorrará una gran cantidad de circuitos externos. Probablemente, lo mejor sea dejar un examen riguroso a altas velocidades como ejercicio para el estudiante (tientame a estudiar).

Solución aquí .

Parece que la biblioteca HAL ADC está un poco rota para DMA multicanal. He publicado en el sitio web de STM para obtener una respuesta. Soluciones alternativas: -

a) IRQ ambos ADC

b) Encuesta ambos ADC

c) DMA un canal y sondear el otro

d) Inicialice los registros de bajo nivel manualmente

Esta es otra advertencia para la solución donde se usan ambos comparadores, hasta que se encuentre una mejor solución.

ChrisR
fuente
En un STM32F4Discovery ADC2 y ADC3 simplemente funciona bien con HAL. Estoy usando DMA2 Stream1 con ADC3 y DMA2 Stream2 con ADC2, hay dos canales configurados en ambos ADC. El modo DMA es circular. También con HAL en un STM32F3 estoy usando cuatro ADC diferentes junto con DMA, 3 canales en DMA2 y 1 uno DMA1. ¿Qué hay de malo cuando intentas usar DMA multicanal?
Bence Kaulics
@Bence: he trabajado con F1, F3 y F4 en la configuración ADC-DMA multicanal; utilizan un mecanismo diferente para agregar canales al DMA. Los canales se pueden escanear en cualquier secuencia. La serie STM32L0 tiene una estructura interna diferente, los canales se priorizan automáticamente por número de canal. Hay diferentes estructuras y llamadas para configurarlo. Cada canal solo puede aparecer una vez en un escaneo.
ChrisR
Ya veo, y este orden de prioridad es fijo?
Bence Kaulics
Gracias por su respuesta y por hacer un esfuerzo para confirmar directamente que esto funciona, así como por encontrar investigaciones de apoyo. ¡Muy apreciado!
Daniel
1
@Bence: Sí, la prioridad y el orden son fijos; vaya por número de canal. Una gran cosa es que puede sobremuestrear y promediar en el escaneo. ver RM vinculado arriba, vale la pena leerlo. Como muchos, estoy un poco triste porque las bibliotecas HAL no son (y no pueden ser) transparentes en todos los dispositivos ARM.
ChrisR
4

La configuración más relevante que pude encontrar es la siguiente, desde Uso de comparadores analógicos STM32F05xx en casos de aplicación , ( AN4112 ), página 4:

ingrese la descripción de la imagen aquí

Dice:

La Figura 1 muestra cómo conectar una salida de sensor (sensor de temperatura, sensor de presión, detector infrarrojo piroeléctrico, sensor de fotodiodo) a un dispositivo STM32F05xx en una aplicación de monitoreo de voltaje analógico usando el comparador 2 (COMP2). COMP2 monitorea el voltaje analógico en modo Stop mientras el ADC lo mide en modo Run.

Aquí el ADC y el COMP funcionan alternativamente, pero creo que ambos están configurados al mismo tiempo. Si continuamos en el documento, hay un diagrama de bloques sobre la configuración COMP.

ingrese la descripción de la imagen aquí

Basado en esta imagen, creo que el ADC y el COMP comparten el mismo canal ADC, la única diferencia es el número de fuentes de umbral analógico habilitadas .

El texto debajo de la Figura 5 en la pregunta establece que el

la entrada del comparador es un canal ADC

posiblemente lo mismo que ADC_IN1.

El propósito de toda esta configuración es ahorrar energía, el COMP activa cambios de estado de la MCU (STOP <--> RUN). Entonces, cuando la entrada está por debajo de un cierto umbral, el MCU y el ADC se apagan y solo funciona el comparador, y cuando la entrada está por encima del umbral, el MCU y el ADC se activan, el ADC mide el voltaje de entrada. Pero si la entrada cae por debajo del umbral nuevamente, el COMP envía la MCU al estado STOP.

ingrese la descripción de la imagen aquí

Es una forma de usarlos juntos, espero que esto haga avanzar la pregunta.

Bence Kaulics
fuente
Gracias por su respuesta. Agregó bastante a la discusión. Al final, decidí otorgar la recompensa a alguien que pudiera confirmar la respuesta directamente, ¡pero esto tiene mi voto positivo y es muy apreciado!
Daniel
Fue una pregunta muy interesante, me alegré de participar. Además, estoy de acuerdo con que Chris ha recibido la recompensa :). Hizo mucho trabajo, sin ahorrar tiempo y esfuerzo.
Bence Kaulics
3

Creo que deberías preguntar en el foro STM. También hay (STM32F1) UART RX y TIMx en el mismo pin, ambas entradas, pero no puede usarlas juntas, como detectar la interrupción del temporizador de final de transmisión. En cambio, se debe conectar un pin TIMx diferente en paralelo para que la función UART RX y el temporizador interrumpan. Supongo que solo una función puede estar activa al mismo tiempo.
Intente descargar MxCube y vea qué configuración se puede construir.

Marko Buršič
fuente
Ese es un punto decente. Lo tengo, debería ver si lo permite. Pero incluso si no lo hace, eso no significa necesariamente que no puedas: /
Daniel
Es decir, desearía que la documentación fuera mejor y más completa, y podría tener confianza en cualquier otra respuesta que no sea "Lo intenté una vez y no funcionó"
Daniel
@Daniel Tienes razón, creo que la respuesta final te dará el MCU en sí mismo cuando lo intentes.
Marko Buršič