3.4. พินและอุปกรณ์ต่อพ่วง

พินคืออุปกรณ์ต่อพ่วงที่ง่ายที่สุดบน MCU: สายเดียวที่เชื่อมต่อชิปกับโลกภายนอก ทุกการโต้ตอบกับฮาร์ดแวร์จริง -- ขับ LED, อ่านสวิตช์, วัดแรงดัน, ส่งไบต์ผ่านสายอนุกรม -- ในที่สุดก็ผ่านพินหนึ่งตัวหรือมากกว่า

3.4.1. โหมดพิน

พินถูกกำหนดค่าเป็นหนึ่งใน โหมด ต่างๆ ก่อนทำสิ่งที่มีประโยชน์:

  • Pin.IN -- อินพุต พินสังเกตแรงดันที่ใช้กับมันจากภายนอกและรายงานเป็น 0 (ต่ำ) หรือ 1 (สูง)

  • Pin.OUT -- เอาต์พุต พินขับตัวเองไปยังแรงดันจ่าย (1) หรือกราวด์ (0) เพื่อให้ส่วนประกอบภายนอกเห็นแรงดันนั้น

  • Pin.OPEN_DRAIN -- เอาต์พุตที่สามารถดึงสายลงต่ำได้เท่านั้น เพื่อให้สูง พินปล่อย (ลอย) และตัวต้านทาน pull-up ภายนอกยกสาย ใช้สำหรับบัสที่แชร์ซึ่งหลายอุปกรณ์อาจขับสายเดียวกัน

อินพุตสามารถเปิดใช้งาน pull resistor ภายในที่รับประกันระดับที่กำหนดเมื่อไม่มีสิ่งภายนอกขับพินได้:

  • Pin.PULL_UP -- pull อ่อนไปยังแรงดันจ่าย

  • Pin.PULL_DOWN -- pull อ่อนไปยังกราวด์

คอนสตรักเตอร์รับ id, โหมด และ pull เป็นอาร์กิวเมนต์ตำแหน่ง:

from machine import Pin

led    = Pin("P0", Pin.OUT)
button = Pin("P1", Pin.IN, Pin.PULL_UP)

3.4.2. ฟังก์ชันสำรอง

พินส่วนใหญ่มี ฟังก์ชันสำรอง นอกเหนือจากบทบาท GPIO แพดจริงตัวเดียวบนชิปสามารถเป็น:

  • อินพุตหรือเอาต์พุตดิจิทัล (machine.Pin)

  • อินพุต ADC ที่วัดแรงดัน (machine.ADC)

  • เอาต์พุต PWM ที่ส่งคลื่นสี่เหลี่ยม (machine.PWM)

  • สาย TX หรือ RX ของ UART (machine.UART)

อุปกรณ์ต่อพ่วงอื่นๆ (บัสอนุกรมเพิ่มเติม, ตัวจับเวลา ฯลฯ) ก็ใช้พินเฉพาะเช่นกัน นักออกแบบชิปต่อสายบล็อกฮาร์ดแวร์แต่ละตัวเข้ากับชุดแพดคงที่ ADC วัดเฉพาะพินที่ต่อเข้ากับมัลติเพล็กเซอร์ UART ส่งบนพินเดียวที่สัญญาณ TX ต่ออยู่

Note

OpenMV Cam กำหนดป้ายพินขั้วต่อภายนอกเป็น P0 ถึง P9 (แตกต่างกันเล็กน้อยตามบอร์ด) ว่าพินไหนรองรับฟังก์ชันสำรองอะไรนั้นขึ้นอยู่กับบอร์ด ดูที่ OpenMV Cam quick reference สำหรับตาราง

3.4.3. รูปแบบที่แตกต่างกันตามบอร์ด

รายละเอียดบางอย่างแตกต่างกันตามบอร์ดและควรตรวจสอบกับ quickref เสมอแทนที่จะสันนิษฐานจากบอร์ดอื่น:

  • ความทนทานต่อแรงดัน OpenMV Cam บางรุ่นมีพิน I/O ที่ทนแรงดัน 5 V (สามารถใช้สัญญาณ 5 V ได้โดยตรงโดยไม่เสียหาย) บางรุ่นใช้ I/O ที่ 3.3 V หรือ 1.8 V และต้องใช้ level shifter สำหรับสัญญาณที่สูงกว่านั้น การเชื่อมต่อแหล่ง 5 V กับพินที่ไม่รองรับอาจทำให้ชิปเสียหาย

  • ADC reference แรงดันที่ ADC ถือว่าเป็น full-scale ขึ้นอยู่กับแหล่งจ่าย I/O ของบอร์ด read_u16() คืนค่า 0..65535 เสมอ แต่แรงดันที่ 65535 แทนนั้นคือค่า reference ของบอร์ด

  • Drive strength พิน GPIO สามารถจ่ายหรือรับกระแสได้จำกัด -- โดยทั่วไปหลายสิบมิลลิแอมป์ เพียงพอสำหรับ LED เล็กผ่านตัวต้านทาน แต่ไม่พอสำหรับมอเตอร์, บัซเซอร์ หรือโหลดเหนี่ยวนำ ต้องใช้ไดรเวอร์ภายนอก (ทรานซิสเตอร์, MOSFET, H-bridge) สำหรับสิ่งที่หนักกว่า

OpenMV Cam quick reference ให้ตัวเลขที่แน่นอนต่อบอร์ด