3.4. 引脚与外设

引脚是 MCU 上最简单的外设:一根把芯片连接到外部世界的导线。与真实硬件的每一次交互——驱动 LED、读取开关、测量电压、通过串行线发送字节——最终都要经过一个或多个引脚。

3.4.1. 引脚模式

引脚在发挥任何实际作用之前,都要先配置成少数几种模式之一:

  • Pin.IN —— 输入。引脚观测从外部施加到它上面的电压,并将其报告为 0(低)或 1(高)。

  • Pin.OUT —— 输出。引脚将自身驱动到电源电压(1)或地(0),从而让外部元件看到该电压。

  • Pin.OPEN_DRAIN —— 只能把线路拉低的输出。要变为高电平,引脚会释放(悬空),由外部上拉电阻把线路抬高。用于多个设备可能驱动同一条线路的共享总线。

输入可以选择性地启用一个内部上下拉电阻,在没有外部设备驱动引脚时保证一个确定的电平:

构造函数以位置参数的形式接受 id、mode 和 pull:

from machine import Pin

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

3.4.2. 复用功能

大多数引脚除了 GPIO 角色之外,还具有复用功能。芯片上的单个物理焊盘可以是:

其他外设(更多的串行总线、定时器等)也会占用特定引脚;芯片设计者将每个硬件模块连线到一组固定的焊盘。ADC 只能采样连接到其多路复用器的引脚;UART 只能在其 TX 信号所连的那一个引脚上发送。

备注

OpenMV Cam 将外部连接器引脚标记为 P0P9(不同板子略有差异)。哪个引脚承载哪个复用功能因板而异;具体表格请参见 OpenMV Cam 快速参考

3.4.3. 板间差异

有几个细节因板而异,应当始终对照快速参考来核对,而不要从另一块板想当然地推断:

  • 电压容限。有些 Cam 具有 5 V 容限的 I/O 引脚(可以直接施加 5 V 信号而不会损坏);另一些的 I/O 工作在 3.3 V 或 1.8 V,任何高于该电压的信号都需要电平转换器。把 5 V 源连接到不耐压的引脚可能损坏芯片。

  • ADC 参考电压。ADC 视为满量程的电压取决于板子的 I/O 供电。read_u16() 始终返回 0..65535,但 65535 所代表的电压则取决于板子的参考电压是多少。

  • 驱动能力。GPIO 引脚能输出(source)或吸收(sink)的电流是有限的——通常为数十毫安。这足以通过电阻驱动一个小 LED;但不足以驱动电机、蜂鸣器或任何感性负载。对于任何更重的负载,请使用外部驱动器(晶体管、MOSFET、H 桥)。

OpenMV Cam 快速参考给出了每块板的确切数值。