Red de conocimiento informático - Material del sitio web - Cómo configurar el modo de puerto gpio

Cómo configurar el modo de puerto gpio

1. Los pines de entrada y salida de STM32 tienen las siguientes 8 configuraciones posibles (4 entradas, 2 salidas, 2 salidas multiplexadas): \x0d\\x0d\ ① Entrada flotante_IN_FLOATING\x0d\\x0d \ ② Entrada con pull-up_IPU \x0d\\x0d\ ③ Entrada con pull-down_IPD \x0d\\x0d\ ④ Entrada analógica_AIN\x0d\\x0d\ ⑤ Salida de drenaje abierto_OUT_OD \x0d\\x0d\ ⑥ Salida push-pull_OUT_PP\x0d \\x0d\ ⑦ Salida push-pull de la función multiplexada_AF_PP\x0d\\x0d\ ⑧ Salida de drenaje abierto de la función multiplexada_AF_OD\x0d\\x0d\ 1.1 Salida del puerto de E/S En modo, hay 3 velocidades de salida para elegir (2 MHz, 10 MHz y 50 MHz). Esta velocidad se refiere a la velocidad de respuesta del circuito controlador del puerto de E/S en lugar de a la velocidad de la señal de salida. La velocidad de la señal de salida está relacionada con el programa (el chip está internamente en I). La parte de salida del puerto /O está dispuesta con múltiples circuitos de control de salida con diferentes velocidades de respuesta. Los usuarios pueden elegir el circuito de control adecuado según sus propias necesidades. Elija diferentes módulos de controlador de salida seleccionando la velocidad para lograr el mejor control de ruido y reducir el consumo de energía. Los circuitos de control de alta frecuencia también tienen mucho ruido. Cuando no se requiere una frecuencia de salida alta, elija un circuito de control de baja frecuencia, que es muy útil para mejorar el rendimiento EMI del sistema. Por supuesto, si desea emitir una señal de frecuencia más alta pero elige un módulo controlador de frecuencia más baja, puede obtener una señal de salida distorsionada. \x0d\\x0d\ La velocidad de salida, también conocida como velocidad de respuesta del circuito impulsor de salida, puede entenderse como: el ancho de banda del circuito impulsor de salida, es decir, la frecuencia máxima a la que un circuito impulsor puede pasar una señal sin distorsión. \x0d\\x0d\ Si la frecuencia de una señal excede la velocidad de respuesta del circuito de control, la señal puede distorsionarse. Si la frecuencia de la señal es de 10 MHz y configura un ancho de banda de 2 MHz, es probable que la onda cuadrada de 10 MHz se convierta en una onda sinusoidal. Al igual que la velocidad de diseño de una carretera, cuando la velocidad del automóvil es menor que la velocidad de diseño, puede circular sin problemas. Si excede la velocidad de diseño, chocará o incluso volcará. \x0d\\x0d\ La clave es: la velocidad del pin GPIO coincide con la aplicación. Cuanto mayor sea la configuración de velocidad, mayor será el ruido y mayor será el consumo de energía. \x0d\\x0d\ Una unidad con una velocidad de ancho de banda alta consume mucha energía y hace mucho ruido, mientras que una unidad con un ancho de banda bajo consume menos energía y hace menos ruido. Usar el controlador adecuado puede reducir el consumo de energía y el ruido. \x0d\ La velocidad del pin GPIO coincide con la aplicación (se recomienda más de 10 veces). Por ejemplo: \x0d\\x0d\ 1.1.1 Para el puerto serie, si la velocidad máxima en baudios es solo 115,2k, entonces la velocidad del pin de 2M GPIO es suficiente, lo que ahorra energía y tiene poco ruido. \x0d\\x0d\ 1.1.2 Para la interfaz I2C, si utiliza una velocidad de baudios de 400k y desea dejar un margen mayor, la velocidad del pin de 2M GPIO puede no ser suficiente. En este caso, puede elegir pines de 10M GPIO. . velocidad. \x0d\\x0d\ 1.1.3 Para la interfaz SPI, si usa una velocidad de baudios de 18 M o 9 M, la velocidad del pin de 10 M GPIO obviamente no es suficiente, y debe elegir la velocidad del pin de 50 M GPIO. \x0d\\x0d\ 1.2 Cuando el puerto GPIO se configura como entrada, el circuito del controlador de salida se desconecta del puerto, por lo que la configuración de la velocidad de salida no tiene sentido. \x0d\\x0d\ 1.3 Durante el reinicio e inmediatamente después del reinicio, la función de multiplexación no está habilitada y el puerto de E/S está configurado en modo de entrada flotante. \x0d\\x0d\ 1.4 Todos los puertos tienen capacidades de interrupción externa. Para utilizar la línea de interrupción externa, el puerto debe configurarse en modo de entrada.

\x0d\\x0d\ 1.5 La configuración del puerto GPIO tiene una función de bloqueo Después de configurar el puerto GPIO, la combinación de configuración se puede bloquear a través del programa hasta el próximo reinicio del chip. \x0d\\x0d\ 2. La velocidad de inversión de GPIO se refiere a la velocidad a la que los valores 0 y 1 del registro de entrada/salida se reflejan en los niveles alto y bajo del pin externo (en APB2). El manual indica que la velocidad máxima de inversión de GPIO puede alcanzar los 18MHz. A través de pruebas simples del programa, el tiempo de inversión observado con un osciloscopio es un tiempo completo, incluido el tiempo para buscar la instrucción, el tiempo para ejecutar la instrucción y el tiempo para transferir la señal al registro después de ejecutar la instrucción (esto puede pasar por muchos enlaces, como AHB, APB, arbitraje de bus, etc.), y finalmente el tiempo que tarda la señal en transmitirse desde el registro al pin. Si hay una resistencia pull-up, cuanto mayor sea la resistencia, mayor será el retardo RC, es decir, más lenta será la velocidad de conversión del nivel lógico y mayor será el consumo de energía. \x0d\\x0d\ 3. Cómo configurar los puertos IO utilizados por los periféricos en el chip en STM32\x0d\\x0d\ Primero, se activa (enciende) un periférico después de ① configurar el reloj de entrada y ② inicializar ③ Si; Para utilizar los pines de entrada y salida del periférico, debe configurar el puerto GPIO correspondiente (de lo contrario, los pines de entrada y salida correspondientes al periférico se pueden utilizar como pines GPIO normales ④ Luego configure el periférico en detalle); \x0d\\x0d\ Las funciones de entrada y salida correspondientes a los periféricos tienen las siguientes tres situaciones: \x0d\\x0d\ ① Se emiten los pines correspondientes a los periféricos: debe seleccionar los pines correspondientes como complejos según la configuración del circuito periférico Utilice la salida push-pull de la función o la salida de drenaje abierto de la función multiplexada. \x0d\ ② Si el pin correspondiente del periférico es una entrada: puede elegir una entrada flotante, una entrada pull-up o una entrada desplegable según la configuración del circuito periférico. \x0d\ ③ Pin correspondiente del ADC: configura el pin como entrada analógica. \x0d\\x0d\ Si el puerto está configurado como una función de salida multiplexada, el pin se desconecta del registro de salida y se conecta a la señal de salida del periférico en el chip. Después de configurar un pin como función de salida alternativa, si el periférico no está activado, su salida quedará indefinida. \x0d\\x0d\ 4. Inicialización del puerto IO general (GPIO)\x0d\\x0d\ 4.1 Inicialización de GPIO\x0d\\x0d\ 41.1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE): habilita el reloj periférico del bus APB2 \x0d; \\x0d\ 41.2 RCC_APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE): Libera el reinicio de GPIO. \x0d\\x0d\ 4.2 Configure cada puerto PIN (entrada analógica_AIN, entrada flotante_IN_FLOATING, entrada pull-up_IPU, entrada pull-down_IPD, salida de drenaje abierto_OUT_OD, salida push-pull_OUT_PP, salida multiplexada push-pull_AF_PP, salida multiplexada de drenaje abierto_AF_OD) . \x0d\\x0d\ 4.3La inicialización de GPIO está completa.

\x0d\\x0d\5. Función de operación GPIO\x0d\\x0d\uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin //Lee la entrada de un determinado bit de GPIO\x0d\\x0d\uint16_t GPIO_ReadInputData(GPIO_TypeDef*); GPIOx ; Leer la salida de GPIO\x0d\\x0d\void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // Establecer una determinada posición de GPIO\x0d\\x0d\void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); / Establecer un determinado bit de GPIO Se restablece un determinado bit de GPIO\x0d\\x0d\void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal //Escribe un determinado bit de GPIO\x0d\\x0d\void GPIO_Write); (GPIO_TypeDef* GPIOx, uint16_t PortVal) ;//Escribe GPIO\x0d\\x0d\ 6. Función alternativa de reasignación de pines\x0d\\x0d\1. Función alternativa: el periférico incorporado es el pin que se utiliza con el. Puerto de E/S (diferentes funciones corresponden al mismo pin)\x0d\\x0d\STM32 Todos los pines externos de los periféricos integrados están multiplexados con pines GPIO estándar. Si hay varios módulos de funciones multiplexados correspondientes al mismo pin, solo habilite. uno de ellos y mantener los otros módulos en un estado no habilitado. \x0d\\x0d\2. Función de reasignación: los pines de la función multiplexada se pueden derivar de diferentes pines de E/S mediante la reasignación, es decir, los pines de la función multiplexada se pueden cambiar a otros pines a través del programa. ! \x0d\\x0d\Beneficios directos: los diseñadores de placas de circuitos de PCB pueden evitar tener que conectar ciertas señales en un círculo grande en la placa si es necesario, lo que facilita el diseño de PCB y reduce potencialmente la interferencia cruzada de señales. \x0d\\x0d\Por ejemplo: USART1: 0: Sin nueva imagen (TX/PA9, RX/PA10); 1: Nueva imagen (TX/PB6, RX/PB7);

\x0d\\x0d\ (Consulte la introducción del registro AFIO_MAPR) [0, 1 es el valor de bit de un registro]\x0d\\x0d\Tenga en cuenta que los pines de las siguientes funciones de multiplexación tienen una función de reasignación: \x0d \\x0d\ - Los pines del oscilador de cristal se pueden utilizar como puertos de E/S normales cuando no están conectados a un cristal\x0d\\x0d\ - Módulo CAN; - Interfaz de depuración JTAG - La mayoría de las interfaces de salida del temporizador; La mayoría de las interfaces de salida USART\ x0d\\x0d\ - La interfaz de salida de I2C1 - La interfaz de salida de SPI1;\x0d\\x0d\Ejemplo: Para STM32F103VBT6, el pin 47 es PB10 y sus funciones de multiplexación son I2C2_SCL y USART3_TX, lo que significa que después de encenderlo, la función predeterminada es PB10, y el SCL de I2C2 y el TX de USART3 son sus funciones de multiplexación. Además, después de reasignar el pin TIM2, TIM2_CH3 también se convierte en la función de multiplexación; de este alfiler. \x0d\\x0d\(1) Para usar la función USART3 de los pines 47 y 48 de STM32F103VBT6, debe configurar el pin 47 como una salida push-pull multiplexada o una salida de drenaje abierto multiplexada, configurar el pin 48 como un determinado modo de entrada y use Habilitar USART3 y mantenga I2C2 en el estado no habilitado. \x0d\\x0d\(2) Si usa el pin 47 de STM32F103VBT6 como TIM2_CH3, debe reasignar TIM2 y luego configurar el pin correspondiente de acuerdo con la función de multiplexación.