v3.8.0¶
v3.8.0 将核心更新至 MicroPython 1.13,把大量辅助库冻结进固件,为 Portenta Ethernet 添加了网络支持(含网络示例),为 lcd 模块添加了 HDMI CEC 支持,加入了 pyb.CAN 的波特率/采样点配置,以及一系列 H7 低功耗和 HAL 修复。time / utime 模块被合并,F4 的 pyb.DAC DMA 被禁用——请阅读下方的不兼容变更。
亮点¶
新功能¶
冻结清单 —— 在 OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta 上,
uasyncio、mqtt、rpc、rtsp、modbus、bno055、mutex、pid、ssd1306、tb6612和vl53l1x现已冻结进固件。Portenta Ethernet —— 启用以太网,并提供
http_client、http_client_ssl和peer_to_peer示例。HDMI CEC —— 向
lcd模块添加了 HDMI CEC API(Pure Thermal)。pyb.CAN—— 构造函数 /init()现在通过baudrate和sampling_point关键字推导位定时(手动预分频形式仍然有效);CAN 示例已相应更新。
其他变更与改进¶
REPL 横幅现在包含 HAL 版本字符串;Audio FFT 示例已针对较新的
ulabAPI 进行了更新。
缺陷修复¶
摄像头与传感器:
修复了 STM32H7 rev Y 设备上的 OV2640 传感器时钟和 OV5640 PCLK 频率缩放问题;通过脉冲拉动 SCL 从仲裁丢失状态恢复 FIR I2C 总线,并在 F7 软复位时重试 AMG8833 初始化。
电源与定时器:
修复了 H7 低功耗(stop/standby)进入流程——rev V 的电压调节、唤醒时重新启用振荡器/PLL、带 DRAM 保持的 SDRAM 低功耗、进入 stop 时禁用 Systick,以及仅在调试构建中启用 DBGMCU。修复了 H7 HAL 更新后的
machine.TimerHAL 状态,并回退了 SD 读/写 IRQ 优先级的变更。
显示与连接:
修复了 F4 SPI LCD 8/16 位数据大小配置(错误的
MCU_SERIES宏定义),在 WINC1500 SPI 总线初始化失败时返回错误而不再静默继续,并使用静态 SPI 句柄以避免 WINC1500 SPI 总线冲突。修复了一个 MicroPython GC 回收缺陷。
系统:
当测试被禁用或不可用时,
unittests.py不再将整个测试套件标记为失败;移除了有问题的 Thermopile-shieldcamera_lcd示例。
硬件与开发板支持¶
OpenMV Pure Thermal —— 开发板已更新并重命名(
OPENMVPURETHERMAL→OPENMVPT),带 HDMI CEC。OpenMV 2 —— 启用了 OV2640 摄像头驱动。
Arduino Portenta H7 —— 以太网支持。
不兼容的 API 变更¶
v3.7.0 与 v3.8.0 之间面向用户的 API 不兼容变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。
每项变更均标注了其影响:
minor —— 影响范围窄的 API;仅影响使用了它的脚本。
behavior —— API 相同但结果不同;请重新检查调校过的脚本。
变更按影响程度依此顺序分组。如果你只想移植代码,请直接跳到末尾的 迁移检查清单。每个提交哈希都链接到其在 GitHub 上的差异。
time / utime 模块合并 (minor)¶
time 和 utime 模块已被合并,OpenMV 的 clock 类移到了 utime 中。所有内置示例均已更新为 import utime / clock = utime.clock()。依赖 import time 来使用 clock 类的脚本应改为导入 utime。
提交: 20587f308
F4 的 pyb.DAC DMA 函数被禁用 (minor)¶
在基于 F4 的开发板上,需要 DMA 的 pyb.DAC 函数被禁用,因为 F4 的堆位于 CCM 中,而 CCM 无法通过 DMA 访问。使用 DAC DMA 缓冲区写入的 F4 脚本必须避免这些函数。
提交: d61f236f2
MicroPython 更新至 1.13 (behavior)¶
内置的 MicroPython 核心已更新至 1.13。标准库和语言行为遵循上游 MicroPython 1.13;请重新检查依赖特定版本 micropython / 标准模块行为的脚本。
提交: fb0a5e26d
cpufreq 支持的频率取决于芯片修订版本 (behavior)¶
新增了更多 CPU 频率并使其能够感知芯片修订版本:cpufreq.get_supported_frequencies() 现在在 H7 上返回与修订版本相关的列表(rev X/Y 为 50/100/200/400 MHz,rev V 为 60/120/240/480 MHz)。从旧的固定列表中硬编码某个频率的脚本应在运行时查询所支持的列表。
提交: 825dd0742
迁移检查清单¶
要顺利移植到 v3.8.0,通常需要做的工作是:
在使用
clock类的地方将import time改为import utime(time/utime 合并)。针对 1.13 重新验证依赖特定版本 MicroPython 行为的脚本(MicroPython 升级),并在运行时查询
cpufreq.get_supported_frequencies()而非硬编码(cpufreq 变更)。
所有其他脚本无需改动即可运行。