¿Cómo realizar puertos bidireccionales en la función FSMC de STM32?

2

Estoy usando la función FSMC (Controlador de memoria estática flexible) de STM32: reference manual . En la página 494 del manual de referencia, el bus de datos debe ser bidireccional. Es razonable, pero no tengo idea de cómo realizarlo en STM32 porque tiene solo dos modos: modo de entrada y salida (en la página 166). Después de consultar los ejemplos de ST, sé que el puerto de datos debe considerarse como modo push-pull ouput como se muestra a continuación,

/*data line configuration*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
                            GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);

Entonces, ¿cualquier persona puede decirme cómo puede STM32 realizar el puerto bidireccional usando el modo push-pull de salida?

    
pregunta oilpig

1 respuesta

1

Eche un vistazo a la Sección 9.1.4 en la página 157:

  

9.1.4 Funciones alternativas (AF)

     

Es necesario programar el Registro de Configuración de Bit de Puerto antes de   utilizando una función alternativa por defecto.

     
  • Para entradas de funciones alternativas, el puerto debe configurarse en modo de entrada (flotante, desplegable o desplegable) y el pin de entrada debe estar activado   externamente.
  •   

Nota: También es posible emular el pin de entrada AFI por software programando el controlador GPIO. En este caso, el puerto debe ser   Configurado en modo de salida de función alternativa. Y obviamente, la   El puerto correspondiente no debe ser accionado externamente como lo será   impulsado por el software que utiliza el controlador GPIO.

     
  • Para salidas de función alternativas, el puerto debe configurarse en el modo de salida de función alternativa (Push-Pull o Open-Drain).

  •   
  • Para las funciones alternativas bidireccionales, el bit de puerto debe configurarse en el modo de salida de función alternativa (Push-Pull o   Drenaje abierto). En este caso el controlador de entrada está configurado en entrada.   modo flotante

  •   

Si configura un bit de puerto como salida de función alternativa, este   desconecta el registro de salida y conecta el pin a la salida   Señal de un periférico en chip.

     

Si el software configura un pin GPIO como salida de función alternativa, pero   El periférico no está activado, su salida no está especificada.

Si se supone que un pin o un bus es bidireccional para una función alternativa, configúralo como una función alternativa en el modo de salida y la configuración de entrada se realiza automáticamente.

Si se supone que el pin es una entrada para una función alternativa, configúralo en el modo de entrada.

Si se supone que el pin es una salida para una función alternativa, configúralo en el modo de salida.

Cuando estás utilizando un pin como GPIO, debes elegir entre el modo de entrada o el modo de salida.

    
respondido por el embedded.kyle

Lea otras preguntas en las etiquetas