3.4. 接腳與周邊裝置¶
接腳是 MCU 上最簡單的周邊裝置:一條把晶片連接到外界的單一線路。與真實硬體的每一次互動 —— 驅動 LED、讀取開關、量測電壓、透過序列線路傳送位元組 —— 最終都會經由一個或多個接腳。
3.4.1. 接腳模式¶
在做任何有用的事之前,接腳會先被設定成幾種 模式 之一:
Pin.IN—— 輸入。接腳觀測外部施加在它上面的電壓,並將其回報為0(低)或1(高)。Pin.OUT—— 輸出。接腳將自身驅動到供應電壓(1)或接地(0),讓外部元件看到該電壓。Pin.OPEN_DRAIN—— 只能將線路拉低的輸出。若要拉高,接腳會釋放(浮接),由外部的上拉電阻把線路抬高。用於多個裝置可能驅動同一條線路的共享匯流排。
輸入可選擇性地啟用內部的 上拉/下拉電阻,在沒有任何外部來源驅動接腳時保證一個明確的準位:
Pin.PULL_UP—— 微弱地上拉到供應軌。Pin.PULL_DOWN—— 微弱地下拉到接地。
建構式以位置引數接受 id、mode 與 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)。UART 的 TX 或 RX 線路(
machine.UART)。
其他周邊裝置(更多的序列匯流排、計時器等)也會佔用特定接腳;晶片設計者把每個硬體區塊接到一組固定的接墊上。ADC 只能取樣路由到其多工器的接腳;UART 只能在其 TX 訊號所接的那一個接腳上傳送。
備註
OpenMV cam 把外部連接器的接腳標示為 P0 到 P9(依板子略有不同)。哪個接腳承載哪種替代功能因板而異;表格請見 OpenMV Cam 快速參考。
3.4.3. 板子差異¶
有幾項細節因板而異,應始終對照快速參考查證,而不要從另一塊板子的情況去推測:
電壓耐受度。 有些 cam 具備 5 V 耐受的 I/O 接腳(可直接施加 5 V 訊號而不致損壞);其他則以 3.3 V 或 1.8 V 運作其 I/O,凡是高於該值的訊號都需要準位轉換器。把 5 V 來源接到不耐受的接腳上可能會損壞晶片。
ADC 參考電壓。 ADC 視為滿刻度的電壓取決於板子的 I/O 供電。
read_u16()一律回傳0..65535,但65535所代表的電壓就是該板子的參考電壓。驅動能力。 GPIO 接腳能提供或吸收的電流有限 —— 通常為數十毫安。足以透過電阻驅動一顆小 LED;但不足以驅動馬達、蜂鳴器或任何電感性負載。任何較重的負載請改用外部驅動元件(電晶體、MOSFET、H 橋)。
OpenMV Cam 快速參考 提供每塊板子的確切數值。