Interfaz de una pantalla táctil resistiva de cuatro cables con STM32F429DISCOVERY

1

Estoy intentando conectar una pantalla táctil resistiva de 4 cables a una placa de descubrimiento STM32F429 pero no puedo entender cómo funciona. Quiero que la MCU detecte un toque, así que configuré los 4 pines de esta manera:

X+ --> input w/pullup connected to EXTI external interrupt 
X- --> input floating (tristated)
Y+ --> input floating (tristated)
Y- --> output to GND

en esta configuración debería poder detectar un toque y desencadenar una interrupción en la línea EXTI para que pueda ingresar un ISR y muestrear los valores x e y con el ADC. Pero cuando conecto el pin X, el pin X + se acerca a la GND. Parece que la corriente fluye entre X + y X- (¿entonces la X- no está triste?). Aquí está el código que utilizo para configurar los pines GPIO:

GPIO_InitTypeDef gpio;
gpio.Pin = GPIO_PIN_2 | GPIO_PIN_1;
gpio.Mode = GPIO_MODE_INPUT;
gpio.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &gpio);

gpio.Pin = GPIO_PIN_0;
gpio.Mode = GPIO_MODE_INPUT;
gpio.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOA, &gpio);

gpio.Pin = GPIO_PIN_5;
gpio.Mode = GPIO_MODE_OUTPUT_PP;
HAL_GPIO_Init(GPIOA, &gpio);

HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);

/* initialization using registers, works the same as above */

//  /* Xr and Yu open (input floating) */
//  GPIOA->MODER &= ~(GPIO_MODER_MODE2 | GPIO_MODER_MODE1);
//  GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPD2 | GPIO_PUPDR_PUPD1);
//
//  /* Xl input with pull-up */
//  GPIOA->MODER &= ~GPIO_MODER_MODE0;
//  GPIOA->PUPDR |= GPIO_PUPDR_PUPD0_0;
//
//  /* Yd to GND (output set to 0) */
//  GPIOA->MODER |= GPIO_MODER_MODE5_0;
//  GPIOA->ODR &= ~GPIO_ODR_OD5;

No puedo entender lo que estoy haciendo mal o cómo configurar correctamente los pines trenzados para que no bajen el pin X +.

    
pregunta Luca

1 respuesta

2

En el tablero de descubrimiento STM32F429, PA1 y PA2 están conectados directamente a las salidas de interrupción del chip del sensor de movimiento L3GD20 , que están por defecto en alto activo. Eso significa que deben emitir una señal lógica baja hasta que ocurra algún evento (programable). Lo cual, como la parte presumiblemente no está inicializada, nunca sucede.

Los pines X + y X de una pantalla táctil resistiva están conectados con una resistencia, generalmente con un valor inferior a 1kΩ. Al conectar X + a PA0 y X- a una salida de bajo nivel, se creó efectivamente un desplegable de 1 kΩ en PA0.

El PA0 también está conectado a tierra a través de una resistencia desplegable de 220k (parte del circuito de rebote del botón azul) en la placa de descubrimiento, por lo que tampoco es una gran opción para una conexión analógica.

Puede liberar PA0 cortando un puente de soldadura en algún lugar, pero PA1 y PA2 están aparentemente conectados directamente al sensor de movimiento.

Debe consultar el Manual del usuario de su pizarra y encontrar 4 pines no utilizados, dos de Deben ser utilizables como canales ADC. Desafortunadamente, la pantalla LCD incorporada ocupa la mayoría de los pines ADC, pero quedan algunos, a saber, PA5, PC3 y PF6. Elija dos de ellos para la conversión analógico-digital y encuentre dos pines no utilizados para los otros dos terminales. Abrir el proyecto STM32F429-Discovery predefinido en STM32CubeMX es quizás la forma más sencilla de encontrar los pines utilizables.

    
respondido por el berendi

Lea otras preguntas en las etiquetas