ไมโครคอนโทรลเลอร์ TivaC มักใช้ในแอปพลิเคชันแบบฝังที่ต้องสื่อสารกับอุปกรณ์ต่อพ่วง รวมถึง shift register บทความนี้จะแนะนำวิธีการป้อนข้อมูลอนุกรมไปยัง shift register 74HC595 โดยใช้ TivaC
74HC595 shift register เป็น IC ที่นิยมใช้ในการแปลงข้อมูลอนุกรมเป็นข้อมูลขนาน มีขาออก 8 บิตที่สามารถใช้ควบคุมอุปกรณ์ต่างๆ เช่น LED, จอ LCD และอุปกรณ์ต่อพ่วงอื่นๆ การใช้ shift register ช่วยลดจำนวนขา I/O ที่จำเป็นบนไมโครคอนโทรลเลอร์
เพื่อป้อนข้อมูลอนุกรมไปยัง 74HC595 TivaC ต้องสร้างสัญญาณสามสัญญาณ: ข้อมูลอนุกรม (DS), พัลส์สัญญาณนาฬิกา (SH_CP) และสัญญาณ latch (ST_CP)
ข้อมูลอนุกรมจะถูกส่งทีละบิตบนขา DS แต่ละพัลส์สัญญาณนาฬิกาบนขา SH_CP จะเลื่อนข้อมูลเข้าสู่ shift register ทีละบิต เมื่อเลื่อนข้อมูลครบ 8 บิตแล้ว พัลส์สัญญาณบนขา ST_CP จะ latch ข้อมูลจาก shift register ไปยัง register จัดเก็บ และข้อมูลจะปรากฏบนขาออกแบบขนาน (Q0-Q7)
การกำหนดค่าขาบน TivaC เพื่อสื่อสารกับ 74HC595 จะต้องดำเนินการในส่วนการเริ่มต้น ขาสามขาที่เลือกสำหรับ DS, SH_CP และ ST_CP จะต้องกำหนดค่าเป็นเอาต์พุตดิจิทัล ตัวอย่างเช่น หากใช้ขา PA2 สำหรับ DS, PA3 สำหรับ SH_CP และ PA4 สำหรับ ST_CP โค้ดการเริ่มต้นอาจเป็นดังนี้ (โดยใช้ไลบรารี TivaWare):
// ประกาศขา
#define DATA_PIN GPIO_PIN_2
#define CLOCK_PIN GPIO_PIN_3
#define LATCH_PIN GPIO_PIN_4
// เริ่มต้น GPIO Port A
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOA));
// กำหนดค่าขาเป็นเอาต์พุตดิจิทัล
GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, DATA_PIN | CLOCK_PIN | LATCH_PIN);
หลังจากกำหนดค่าขาแล้ว ข้อมูลสามารถส่งไปยัง 74HC595 ได้โดยใช้วงวนเพื่อส่งทีละบิตและสร้างพัลส์สัญญาณนาฬิกาที่สอดคล้องกัน
ตัวอย่างเช่น ในการส่งค่า 0x55 (01010101 ไบนารี) ไปยัง shift register:
uint8_t data = 0x55;
// Latch ข้อมูลที่ระดับต่ำ
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, 0);
// ส่งทีละบิต
for (int i = 7; i >= 0; i--) {
// ตั้งค่าข้อมูล
GPIOPinWrite(GPIO_PORTA_BASE, DATA_PIN, (data >> i) & 1);
// สร้างพัลส์สัญญาณนาฬิกา
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 1);
GPIOPinWrite(GPIO_PORTA_BASE, CLOCK_PIN, 0);
}
// Latch ข้อมูลที่ระดับสูงเพื่ออัพเดตเอาต์พุต
GPIOPinWrite(GPIO_PORTA_BASE, LATCH_PIN, LATCH_PIN);
โค้ดด้านบนจะวนซ้ำทีละบิตของข้อมูล เริ่มต้นจากบิตที่มีน้ำหนักมากที่สุด (MSB) แต่ละบิตจะถูกเขียนลงในขา DATA_PIN จากนั้นพัลส์สัญญาณนาฬิกาจะถูกสร้างขึ้นบนขา CLOCK_PIN เพื่อเลื่อนบิตเข้าสู่ shift register สุดท้าย ขา LATCH_PIN จะถูกตั้งค่าที่ระดับสูงเพื่อ latch ข้อมูลและอัพเดตเอาต์พุตของ 74HC595
การควบคุมอุปกรณ์ต่อพ่วงผ่าน shift register 74HC595 ด้วย TivaC ต้องการความเข้าใจอย่างถ่องแท้เกี่ยวกับวิธีการทำงานของ shift register และวิธีการกำหนดค่าขา GPIO บน TivaC โดยการใช้ฟังก์ชันไลบรารี TivaWare และตรรกะการควบคุมแบบง่าย คุณสามารถสื่อสารกับอุปกรณ์ต่อพ่วงประเภทต่างๆ ได้อย่างง่ายดาย