En TivaC microcontroller bruges ofte i embedded systemer, der kræver kommunikation med eksterne enheder, inklusive shift registre. Denne artikel guider dig i, hvordan du sender seriel data til et 74HC595 shift register ved hjælp af en TivaC.
74HC595 shift registeret er en populær IC, der konverterer seriel data til parallel data. Den har 8 output pins, der kan bruges til at styre enheder som LED’er, LCD-skærme og andre eksterne enheder. Brugen af et shift register reducerer antallet af nødvendige I/O-pins på microcontrolleren.
For at sende seriel data til 74HC595 skal TivaC generere tre signaler: seriel data (DS), clock puls (SH_CP) og latch signal (ST_CP).
Seriel data sendes bit for bit på DS-pinnen. Hver clock puls på SH_CP-pinnen flytter data et bit ind i shift registeret. Når alle 8 bit er flyttet, vil en puls på ST_CP-pinnen låse data fra shift registeret til output registeret, og data vil blive vist på de parallelle output pins (Q0-Q7).
Konfiguration af pins på TivaC til kommunikation med 74HC595 skal udføres i initialiseringsfasen. De tre valgte pins til DS, SH_CP og ST_CP skal konfigureres som digitale output. Hvis f.eks. pin PA2 bruges til DS, PA3 til SH_CP og PA4 til ST_CP, kan initialiseringskoden se sådan ud (ved brug af TivaWare biblioteket):
// Deklaration af pins
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4
// Initialisering af GPIO Port A
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));
// Konfiguration af pins som digitale outputs
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);
Efter pin-konfigurationen kan data sendes til 74HC595 ved hjælp af en løkke, der sender en bit ad gangen og genererer tilsvarende clock pulser.
For eksempel, for at sende værdien 0x55 (01010101 binær) til shift registeret:
uint8_t data = 0x55;
// Sæt latch lav
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);
// Send hver bit
for (int i = 7; i >= 0; i--) {
// Sæt data
GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);
// Generer clock puls
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}
// Sæt latch høj for at opdatere output
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);
Ovenstående kode løber gennem hver bit af data, startende fra den mest betydende bit (MSB). Hver bit skrives til DATA_PIN, hvorefter en clock puls genereres på CLOCK_PIN for at flytte bitten ind i shift registeret. Til sidst sættes LATCH_PIN høj for at låse data og opdatere outputtet fra 74HC595.
Styring af eksterne enheder via 74HC595 shift registeret med TivaC kræver forståelse af, hvordan shift registeret fungerer, og hvordan GPIO-pins konfigureres på TivaC. Ved at bruge TivaWare biblioteksfunktioner og simpel styringslogik kan du nemt kommunikere med en bred vifte af eksterne enheder.