10 votos

Detectar que momentáneo interruptor causó un cpu STM32 para activación

Edit: Esta es la pregunta equivocada. El stm325105 sólo tiene un pin de activación. Pero otras ST-partes tiene más de un pin de activación, por lo que la respuesta es válida para aquellos.


Tengo un stm32f105 que tiene dos momentáneo botones conectados a la activación de las entradas. El procesador se pone en MODO de ESPERA. Cuando se pulsan los botones, o el temporizador RTC incendios, la cpu se despierta.

El problema es que quiero que el cpu a hacer cosas diferentes dependiendo de la activación de la entrada se activa. Según 5.3.5 de SAN stm32f105xx manual de referencia, sin necesidad de registros son conservados, excepto para un registro de estado que indica que hemos sido despertado (pero no se por que) y 42 de la copia de seguridad de los registros.

El modo de Espera permite lograr el menor consumo de energía. Se basa en la Cortex ® -M3 modo deepsleep, con el regulador de voltaje de la movilidad. El 1.8 V de dominio es por consiguiente apagado. El PLL, el HSI oscilador y el HSE oscilador también apagado. SRAM y registro de contenidos se perdió, excepto para los registros en el dominio de Copia de seguridad y en Espera de circuitos.

Después de despertarse desde el modo de Espera, la ejecución del programa se reinicia de la misma manera que después de un Reset (arranque pines de muestreo, el vector de reset es una exageración, etc.). El SBF indicador de estado en el Poder control/registro de estado (PWR_CSR) indica que el CIRCUITO estaba en modo de Espera.

Este SAN post del foro, Cómo determinar el origen de la Activación del modo de Espera?, sugiere que el yo no puede detectar la activación desencadena en el software. No encontré otros puestos, de ahí que le dio más iluminación.

¿Cómo puedo usar el software o hardware para determinar, después de despertarse, que wakeup entrada fue provocado?

11voto

RelaXNow Puntos 1164

No sé los detalles de esta primera parte, así que voy a asumir su descripción es correcta.

El procesador debe despertarse muy pronto después de presionar cualquiera de los botones. Esto debe ser especialmente cierto si se tiene un oscilador RC interno. Incluso si usted necesita para ejecutar desde un cristal, finalmente, por razones de exactitud, tal vez usted puede tener la parte de inicio de un interno RC, a continuación, cambie el cristal posterior. Hay micros que pueden hacer estas cosas, aunque no sé si el tuyo es uno de ellos.

En cualquier caso, leer entradas tan pronto como sea posible después de despertar. A menos que haya algo inusual en este ST micro, que debe ser de un ms a un par de 10s de ms de la pulsación de un botón.

Para garantizar la línea es todavía baja, utilice un condensador para mantener la línea de bajo de hasta 100 ms después de que se suelta el botón.

Por ejemplo, digamos que la garantía de la lógica de bajo nivel de entrada es de 20% de la tensión de alimentación. La línea se detuvo con una resistencia, y tiene un condensador a tierra. El botón de los pantalones cortos de la línea a tierra. La línea por lo tanto flota de alta, y se forzó a tierra cuando se pulsa el botón. Cuando se suelta el botón, el voltaje decae exponencialmente hacia el suministro.

Descomposición y el 20% del valor final que sucede en 0.22 constantes de tiempo. Digamos que usted desea para garantizar la línea parece bajo para 100 ms después de que se pulse un botón. Eso significa que la constante de tiempo RC debe ser de 450 ms. Con 100 kΩ pull-up, la capacitancia sería necesario 4.5 µF. Así que un 4.7 µF 10 V cap haría muy bien.

En resumen, aquí está el circuito:

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X