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 ให้ตัวเลขที่แน่นอนต่อบอร์ด