Estoy buscando una manera de habilitar la resistencia desplegable en una MCU Freescale iMX6.
Estoy ejecutando una distribución de Linux en ella y generalmente interactúo con el hardware utilizando un lenguaje de nivel superior, por lo que no estoy 100% familiarizado con las cosas a continuación.
Por lo que leí en Manual de referencia del procesador de aplicaciones i.MX50 , las opciones de subir / bajar la resistencia se configuran usando la configuración de control del pad, en particular usando las siguientes funciones
- PULL_KEEP_CTL (4 bits hacia arriba / abajo y controles de custodia)
- PUS (valor de configuración de subida / bajada de 2 bits)
- PUE (1 bit pull / keep select)
- PKE (1 bit habilita / deshabilita la capacidad de subir, bajar o guardar)
Encontré la definición del pin en arch/arm/plat-mxc/include/mach/iomux-mx6q.h
Encontré la definición del pin que me interesa (es para este pin donde quiero habilitar la resistencia desplegable).
#define _MX6Q_PAD_DISP0_DAT10__GPIO_4_31 IOMUX_PAD(0x04AC, 0x0198, 5, 0x0000, 0, 0)
La definición de IOMUX_PAD contiene lo siguiente
#define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _sel_input_ofs, _sel_input, _pad_ctrl) \
- _pad_ctrl_ofs - desplazamiento hexadecimal del registro de control, que selecciona los circuitos eléctricos (de la página 2336 en IMX35RM.pdf)
- _mux_ctrl_ofs - desplazamiento hexadecimal del registro de control MUX, que selecciona la función del pin
- _mux_mode - bits 2..0 en el registro de control MUX
- _select_input_ofs - SELECT_INPUT offset de registro (consulte la tabla 4-11 IOMUX_CTL Registrar direcciones desde 0x07A8, IMX35RM.pdf)
- _select_input: consulte la tabla 4-12 Lista de cadenas de margaritas, IMX35RM.pdf
- _pad_ctrl: bits que se establecerán en el registro _pad_ctrl_ofs para la selección de la configuración
Me pregunto si cambiar el valor de _pad_ctrl
haría el truco.
¿Cambiar la definición del pin, reconstruir el kernel y reiniciar el módulo con el nuevo kernel habilitaría la resistencia desplegable?
#define _MX6Q_PAD_DISP0_DAT10__GPIO_4_31 IOMUX_PAD(0x04AC, 0x0198, 5, 0x0000, 0, (PAD_CTL_PUS_100K_DOWN | PAD_CTL_PUE | PAD_CTL_PKE))
¿Hay otras formas de cambiar los valores de control del pad sin reconstruir un kernel y reiniciar el módulo?