El microcontrolador TivaC se utiliza a menudo en aplicaciones embebidas que requieren comunicación con periféricos, incluidos los registros de desplazamiento. Este artículo explicará cómo alimentar datos serie a un registro de desplazamiento 74HC595 utilizando un TivaC.
El registro de desplazamiento 74HC595 es un circuito integrado común que permite la conversión de datos serie a paralelo. Tiene 8 bits de salida que se pueden utilizar para controlar dispositivos como LED, pantallas LCD y otros periféricos. El uso de un registro de desplazamiento reduce el número de pines de E/S necesarios en el microcontrolador.
Para alimentar datos serie al 74HC595, el TivaC necesita generar tres señales: datos serie (DS), pulso de reloj (SH_CP) y cierre de datos (ST_CP).
Los datos serie se envían bit a bit por el pin DS. Cada pulso de reloj en el pin SH_CP desplaza los datos un bit dentro del registro de desplazamiento. Una vez que se han desplazado los 8 bits, un pulso en el pin ST_CP bloquea los datos del registro de desplazamiento en el registro de almacenamiento, y los datos aparecen en los pines de salida paralelos (Q0-Q7).
La configuración de los pines en el TivaC para comunicarse con el 74HC595 debe realizarse en la inicialización. Los tres pines seleccionados para DS, SH_CP y ST_CP deben configurarse como salidas digitales. Por ejemplo, si se utiliza el pin PA2 para DS, PA3 para SH_CP y PA4 para ST_CP, el código de inicialización podría ser el siguiente (utilizando la biblioteca TivaWare):
// Declaración de pines
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4
// Inicialización del puerto GPIO A
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));
// Configuración de los pines como salidas digitales
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);
Después de configurar los pines, los datos se pueden enviar al 74HC595 utilizando un bucle para enviar cada bit y generar los pulsos de reloj correspondientes.
Por ejemplo, para enviar el valor 0x55 (01010101 en binario) al registro de desplazamiento:
uint8_t data = 0x55;
// Bloqueo de datos en bajo
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);
// Envío de cada bit
for (int i = 7; i >= 0; i--) {
// Establecer datos
GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);
// Generar pulso de reloj
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}
// Bloqueo de datos en alto para actualizar la salida
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);
El código anterior itera a través de cada bit de los datos, comenzando por el bit más significativo (MSB). Cada bit se escribe en el pin DATA_PIN, luego se genera un pulso de reloj en el pin CLOCK_PIN para desplazar el bit al registro de desplazamiento. Finalmente, el pin LATCH_PIN se establece en alto para bloquear los datos y actualizar la salida del 74HC595.
Controlar periféricos a través de un registro de desplazamiento 74HC595 con un TivaC requiere una comprensión del funcionamiento del registro de desplazamiento y de cómo configurar los pines GPIO en el TivaC. Utilizando las funciones de la biblioteca TivaWare y una lógica de control simple, puede comunicarse fácilmente con una variedad de periféricos.