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 +.