板型与硬件配置
本文引用的文件
mpython/mpconfigboard.hmpython-classroom-kit/mpconfigboard.hlabplus_classroom_kit_II/mpconfigboard.hlabplus_1956/mpconfigboard.hlabplus-experiment-box-2024/mpconfigboard.hGENERIC/mpconfigboard.hmpython/modules/mpython.pympython-classroom-kit/modules/mpython.pylabplus_classroom_kit_II/modules/mpython.pylabplus_1956/modules/mpython.pylabplus-experiment-box-2024/modules/mpython.pybuiltins/modmotion.cbuiltins/machine_touchpad.cbuiltins/machine_pin.c
产品概述
本仓库的固件移植层(firmware/port)为 mPython 掌控板生态提供多板型支持,覆盖标准掌控板、课堂套件、实验箱等场景。通过“板型目录 + 配置文件 + 模块映射”的方式,将同一套 MicroPython 运行时适配到不同硬件:每个板型在 port/boards/
核心业务流程
构建期选择板型:通过 CMake/构建脚本指定 board 目录,编译时加载对应 mpconfigboard.h,注册该板的名称、MCU、内置外设开关以及 BOARD_PORT_BUILTIN_MODULES 映射表。
运行期模块加载:MicroPython 启动后根据板型配置启用或禁用特定 C 级 builtins 模块;Python 层 modules/ 下的 mpython.py 作为统一 API 入口,封装按键、触摸、传感器、显示、网络等能力,屏蔽底层差异。
应用调用路径:用户代码 import mpython → mpython.py 内部依赖 machine_pin/machine_touchpad/modmotion 等 builtins 与驱动,暴露一致 API;不同板型通过各自 modules/mpython.py 与 BOARD_PORT_BUILTIN_MODULES 的差异实现差异化功能。
flowchart TD
A["构建系统<br/>选择板型目录"] --> B["加载 mpconfigboard.h<br/>设置板名/MCU/外设开关"]
B --> C["注册 BOARD_PORT_BUILTIN_MODULES<br/>绑定C级模块到Python名字空间"]
C --> D["MicroPython运行时初始化"]
D --> E["导入板级 mpython.py<br/>暴露统一API"]
E --> F["应用代码调用<br/>按键/触摸/传感器/显示/网络"]
章节来源
mpython/mpconfigboard.h:1-22mpython-classroom-kit/mpconfigboard.h:1-26labplus_classroom_kit_II/mpconfigboard.h:1-21labplus_1956/mpconfigboard.h:1-25labplus-experiment-box-2024/mpconfigboard.h:1-21GENERIC/mpconfigboard.h:1-4
功能模块清单
通用能力(跨板型)
Pin 控制:machine_pin.c 提供数字/模拟/PWM 引脚抽象,各板型复用。
触摸输入:machine_touchpad.c 提供触摸键能力,用于板载触摸按键。
运动传感:modmotion.c 提供加速度计/陀螺仪/磁力计统一接口,部分板型通过 BOARD_PORT_BUILTIN_MODULES 显式注册。
板型专属能力
mpython(标准掌控板):启用 ADC/DAC,modules/mpython.py 提供 OLED、WiFi、MOTION、Pin/Button/Touch/Light/Sound 等统一 API。
mpython-classroom-kit:关闭 ADC/DAC,显式注册 motion_mpu6050 与 rgbLED5x5 模块,适合课堂套件教学。
labplus_classroom_kit_II:启用 ADC/DAC,modules/ 包含电机、超声波等教学扩展。
labplus_1956:启用 ADC/DAC,显式注册 motion_mpu6050,modules/ 包含 K210/AI 相关扩展。
labplus-experiment-box-2024:启用 ADC/DAC,modules/ 包含摄像头与 V831 相关扩展。
GENERIC:最小化配置,仅声明板名与 MCU,适用于通用 ESP32 模块开发。
graph TB
subgraph "C级内置模块"
MP["machine_pin.c"]
TP["machine_touchpad.c"]
MM["modmotion.c"]
end
subgraph "板型配置"
B1["mpython"]
B2["mpython-classroom-kit"]
B3["labplus_classroom_kit_II"]
B4["labplus_1956"]
B5["labplus-experiment-box-2024"]
B6["GENERIC"]
end
subgraph "Python层入口"
PY1["mpython/modules/mpython.py"]
PY2["mpython-classroom-kit/modules/mpython.py"]
PY3["labplus_classroom_kit_II/modules/mpython.py"]
PY4["labplus_1956/modules/mpython.py"]
PY5["labplus-experiment-box-2024/modules/mpython.py"]
end
B1 --> PY1
B2 --> PY2
B3 --> PY3
B4 --> PY4
B5 --> PY5
B6 --> |"无专用modules"| MP
MP --> PY1
TP --> PY1
MM --> PY1
图表来源
mpython/mpconfigboard.h:1-22mpython-classroom-kit/mpconfigboard.h:1-26labplus_classroom_kit_II/mpconfigboard.h:1-21labplus_1956/mpconfigboard.h:1-25labplus-experiment-box-2024/mpconfigboard.h:1-21GENERIC/mpconfigboard.h:1-4mpython/modules/mpython.pympython-classroom-kit/modules/mpython.pylabplus_classroom_kit_II/modules/mpython.pylabplus_1956/modules/mpython.pylabplus-experiment-box-2024/modules/mpython.pybuiltins/machine_pin.cbuiltins/machine_touchpad.cbuiltins/modmotion.c
章节来源
mpython/mpconfigboard.h:1-22mpython-classroom-kit/mpconfigboard.h:1-26labplus_classroom_kit_II/mpconfigboard.h:1-21labplus_1956/mpconfigboard.h:1-25labplus-experiment-box-2024/mpconfigboard.h:1-21GENERIC/mpconfigboard.h:1-4mpython/modules/mpython.pympython-classroom-kit/modules/mpython.pylabplus_classroom_kit_II/modules/mpython.pylabplus_1956/modules/mpython.pylabplus-experiment-box-2024/modules/mpython.pybuiltins/machine_pin.cbuiltins/machine_touchpad.cbuiltins/modmotion.c
数据与状态
板型标识与MCU
所有板型均声明 MICROPY_HW_BOARD_NAME 与 MICROPY_HW_MCU_NAME,用于运行时识别与日志输出。
内置外设开关
ADC/DAC:mpython、labplus_classroom_kit_II、labplus_1956、labplus-experiment-box-2024 开启;mpython-classroom-kit 关闭;GENERIC 未显式定义。
内建模块映射(BOARD_PORT_BUILTIN_MODULES)
mpython-classroom-kit:显式注册 motion_mpu6050 与 rgbLED5x5。
labplus_1956:显式注册 motion_mpu6050。
其他板型:未在此文件中追加额外映射,使用默认内置集合。
Python 层 API 入口
各板型 modules/mpython.py 提供统一 API(如 MOTION、Pin、Button、Touch、wifi 等),屏蔽底层差异;不同板型可在此基础上扩展或裁剪能力。
classDiagram
class 板型配置 {
+板名
+MCU
+ADC/DAC开关
+内建模块映射
}
class Python入口 {
+统一API
+板级扩展
}
class C级内置 {
+Pin控制
+触摸输入
+运动传感
}
板型配置 --> Python入口 : "modules/mpython.py"
Python入口 --> C级内置 : "依赖"
图表来源
mpython/mpconfigboard.h:1-22mpython-classroom-kit/mpconfigboard.h:1-26labplus_classroom_kit_II/mpconfigboard.h:1-21labplus_1956/mpconfigboard.h:1-25labplus-experiment-box-2024/mpconfigboard.h:1-21GENERIC/mpconfigboard.h:1-4mpython/modules/mpython.pympython-classroom-kit/modules/mpython.pylabplus_classroom_kit_II/modules/mpython.pylabplus_1956/modules/mpython.pylabplus-experiment-box-2024/modules/mpython.pybuiltins/machine_pin.cbuiltins/machine_touchpad.cbuiltins/modmotion.c
章节来源
mpython/mpconfigboard.h:1-22mpython-classroom-kit/mpconfigboard.h:1-26labplus_classroom_kit_II/mpconfigboard.h:1-21labplus_1956/mpconfigboard.h:1-25labplus-experiment-box-2024/mpconfigboard.h:1-21GENERIC/mpconfigboard.h:1-4mpython/modules/mpython.pympython-classroom-kit/modules/mpython.pylabplus_classroom_kit_II/modules/mpython.pylabplus_1956/modules/mpython.pylabplus-experiment-box-2024/modules/mpython.py
关键约束与边界
板型选择约束
构建时必须明确指定 board 目录,否则无法正确加载 mpconfigboard.h 与 modules/ 入口。
外设可用性约束
ADC/DAC 在不同板型上可能被关闭(如 classroom-kit),导致依赖这些通道的传感器不可用。
某些板型需显式注册 motion_mpu6050 与 rgbLED5x5,否则 Python 层无法访问对应能力。
模块映射边界
BOARD_PORT_BUILTIN_MODULES 仅影响 C 级模块的 Python 可见性;Python 层 mpython.py 的 API 仍可能因板型差异而裁剪或扩展。
通用性与兼容性
GENERIC 板型最小化配置,适合通用 ESP32 模块;若需完整 mPython 体验,应选用带 modules/mpython.py 的具体板型。
章节来源
mpython-classroom-kit/mpconfigboard.h:1-26labplus_1956/mpconfigboard.h:1-25mpython/mpconfigboard.h:1-22labplus_classroom_kit_II/mpconfigboard.h:1-21labplus-experiment-box-2024/mpconfigboard.h:1-21GENERIC/mpconfigboard.h:1-4