pca9674a --- I2C Expander Driver

โมดูล pca9674a มีไดรเวอร์สำหรับ NXP PCA9674A 8-bit quasi-bidirectional I/O expander ชิปนี้เปิดเผย I/O port ขนาด 8 บิตผ่าน I2C และสาย INT active-low ที่พัลส์เมื่อใดก็ตามที่พินอินพุตใดเปลี่ยนสถานะ

แต่ละพินเป็น quasi-bidirectional: การเขียน 1 จะปล่อยพินไปยัง pull-up ภายในแบบอ่อนเพื่อทำหน้าที่เป็นอินพุตที่ไดรเวอร์ภายนอกสามารถดึงต่ำได้; การเขียน 0 จะขับพินต่ำอย่างแอ็กทีฟ ไม่มีรีจิสเตอร์ direction แยกต่างหาก -- PCA9674A.read() คืนระดับภายนอกปัจจุบันของทุกพินโดยไม่คำนึงถึงสิ่งที่เขียนล่าสุด

ที่อยู่ I2C 7 บิตคือ 0x38 -- 0x3F ขึ้นอยู่กับพิน strap A0/A1/A2; 0x3F (63) คือค่าเริ่มต้น (strap ทั้งหมดสูง)

class PCA9674A -- 8-bit I/O expander

class pca9674a.PCA9674A(bus: machine.I2C, irq_pin: str, address: int = 63, callback: Callable | None = None)

สร้างอินเทอร์เฟซกับ PCA9674A I/O expander

  • bus คือบัส machine.I2C ที่ expander เชื่อมต่ออยู่

  • irq_pin คือป้ายกำกับพินบน host MCU ที่เชื่อมต่อกับ output INT ของ expander ไดรเวอร์กำหนดค่าเป็นอินพุตพร้อม pull-up และเฝ้าดู falling edge ของมัน

  • address คือที่อยู่ I2C 7 บิตของ expander (0x38 -- 0x3F) ค่าเริ่มต้นคือ 0x3F

  • callback จะถูกเรียกบน falling edge ของ irq_pin เมื่อสถานะพินใดเปลี่ยน รับ instance PCA9674A เป็นอาร์กิวเมนต์เดียว สถานะพินใหม่สามารถอ่านด้วย read() ส่ง None (ค่าเริ่มต้น) สำหรับการใช้แบบ polled

write(value: int) None

เขียนค่า 8 บิต value ไปยังพิน I/O expander

read() int

คืนค่า 8 บิตของพิน I/O expander

reset() None

รีเซ็ตและเริ่มต้น I/O expander ใหม่ และแนบ IRQ callback อีกครั้งถ้ามีการระบุไว้