v4.5.0¶
v4.5.0 是一次重大发布。旧的 lcd 模块被统一的 display 模块取代,后者提供独立的 SPI / parallel / DSI / TV 后端;新增了 Arduino Giga 开发板,并带来了一系列显示、触摸和传感器控制功能。其中包含若干破坏性变更——请阅读下文。
亮点¶
新增
display模块——以统一的SPIDisplay/RGBDisplay/DSIDisplay/TVDisplay后端取代lcd。Arduino Giga 开发板支持。
新的显示/触摸硬件——STM32 H7 上的 DSI 显示屏、TFP410 DVI/HDMI、HDMI/DVI CEC、ST7701 RGB 面板,以及 GT911 / FT5X06 电容式触摸。
新的传感器控制——黑电平校准、夜间模式和
sensor.disable_delays();转置速度大幅提升(约 5 倍),形态学运算提速(约 2.5 倍)。
新功能¶
显示后端——
DisplayData(DDC/EDID 读取)、TFP410DVI/HDMI 串行器、STM32 H7 上的 MIPI-DSI 显示支持、HDMI/DVIcec驱动,以及带有ST7701RGB 面板初始化辅助函数的 Pythondisplay库。触摸——新的
GT9115 点电容式触摸驱动(read_points()/read_id()/reset())。machine扩展——可冻结的machine库,包含machine.LED辅助类,以及新的machine.LED.value([v])方法。传感器控制——
sensor.set_auto_blc(enable, regs=None)/sensor.get_blc_regs()(黑电平校准)、IOCTL_SET_NIGHT_MODE/IOCTL_GET_NIGHT_MODE(OV7725/OV5640)、OV7670 水平/垂直翻转,以及sensor.disable_delays()(跳过摄像头稳定延迟以加快重新配置)。i.MX RT——
sensor.set_xclk_frequency()现在可接受任意频率(自动对齐到最近的有效 CSI 分频值),并在 RT1060 上启用了 SPIlcd/tv/fir模块。
其他变更与改进¶
图像运算大幅加速——图像转置约快 5 倍,
image.morph()约快 2.5 倍。摄像头总线探测现在会扫描并验证多个设备地址,支持总线上挂有多个设备的开发板。
缺陷修复¶
摄像头与传感器:
修正了多种传感器(HM01B0、HM0360、MT9M114、MT9V0xx、OV2640、OV5640、OV7690、OV7725、OV9650、PAJ6100)的增益计算精度,以及 MT9V0xx 曝光/列合并、OV5640 曝光和 OV7670 VGA 开窗问题。
STM32 现在会丢弃损坏的转置帧,而不再返回错误的图像。
图像处理:
修复了影响图像 / FIR / ToF / LCD / TV 运算的整数溢出问题、Cortex-M4 上无效的
vcvtm/vcvtp浮点指令(fast_floorf/fast_ceilf)、image.to_*()转换中的原地缩放缺陷,以及 DMA2D 绘制缓存损坏问题。
显示与系统:
修复了 DSI 显示时序和竖屏模式、Nicla Vision / Portenta H7 上的
micro_speechlisten()、STM32 用户开关(pyb.Switch)以及 I2C4 总线支持。
硬件与开发板支持¶
Arduino Giga——新开发板,提供命名的 Arduino 引脚映射和完整的示例集。
OpenMV RT1060——启用了 SPI LCD、TV 和 FIR 热成像模块。
Arduino Nano 33 BLE Sense——LED 引脚。
破坏性 API 变更¶
v4.4.3 与 v4.5.0 之间面向用户的 API 破坏性变更。范围:modules/ 中的 Python C 模块和 scripts/libraries/ 中的 Python 库。
每项变更都标注了其影响:
major——大多数使用它的脚本都需要修改。
minor——影响面较窄的 API;仅影响使用过它的脚本。
behavior——API 相同但结果不同;请重新检查已调优的脚本。
变更按影响程度依此顺序分组。如果你只想移植代码,可直接跳到末尾的 迁移清单。每个提交哈希都链接到其在 GitHub 上的 diff。
lcd 模块被 display 取代 (major)¶
旧的 lcd 模块已被移除,由统一的 display 模块取代,后者拆分为 SPIDisplay(SPI LCD 扩展板)、RGBDisplay / parallel、DSIDisplay(MIPI-DSI)和 TVDisplay 后端,并共用同一套 API。脚本必须从 import lcd 切换到 display 模块,并构造相应的后端对象。
触摸模块、LED 引脚和内置驱动 (minor)¶
通用的 lcd_touch 模块被专用的 FT5X06 电容式触摸驱动模块取代。为了在所有开发板上保持一致,LED 引脚名称被重命名(引用旧 LED 引脚名称的脚本必须更新)。内置的 hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/传感器驱动被替换为上游 micropython-lib 版本,其 API 略有不同(内置示例已相应更新)。
不受支持的传感器控制现在会发出警告 (behavior)¶
当活动传感器不支持相应控制时,sensor.set_auto_gain()、set_auto_exposure()、set_auto_whitebal() 和 set_auto_blc() 现在会打印警告,而不再抛出 RuntimeError,这样同一个脚本就能在能力各异的传感器上运行。依赖捕获该异常的代码必须更新。
提交: dbf4996f2
迁移清单¶
干净地移植到 v4.5.0 通常需要完成以下工作:
将
import lcd的用法替换为新的display模块和相应后端(display 模块变更)。将
lcd_touch切换为FT5X06,更新所有旧的 LED 引脚名称,并重新检查上游 IMU 驱动的 API(触摸/引脚/驱动变更)。将围绕不受支持的传感器控制的
try/except RuntimeError替换为能力检查(传感器控制变更)。