v4.5.0

v4.5.0 是一個重大版本。舊的 lcd 模組被一個統一的 display 模組取代,後者提供獨立的 SPI / 並列 / 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 倍)。

  • 破壞性變更: lcddisplaylcd_touchft5x06、重新命名 LED 接腳——詳見破壞性變更。

新功能

  • 顯示後端——DisplayData(DDC/EDID 讀取)、一個 TFP410 DVI/HDMI 序列器、STM32 H7 上的 MIPI-DSI 顯示器支援、一個 HDMI/DVI cec 驅動程式,以及一個附帶 ST7701 RGB 面板初始化輔助工具的 Python display 函式庫。

  • 觸控——全新 GT911 5 點電容式觸控驅動程式(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 上啟用了 SPI lcd / 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_speech listen()、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 上的差異。

lcd 模組被 display 取代 (major)

舊的 lcd 模組已移除,並被一個統一的 display 模組取代,後者分為 SPIDisplay(SPI LCD 擴充板)、RGBDisplay/並列、DSIDisplay(MIPI-DSI)與 TVDisplay 後端,皆使用共通的 API。指令碼必須從 import lcd 改為使用 display 模組,並建構適當的後端物件。

提交: 227824aac6c6336829

觸控模組、LED 接腳與內建驅動程式 (minor)

通用的 lcd_touch 模組被專用的 FT5X06 電容式觸控驅動程式模組取代。為了在所有開發板間保持一致,LED 接腳名稱已重新命名(參考舊 LED 接腳名稱的指令碼必須更新)。內建的 hts221 / lps22h / lsm6dsox / lsm9ds1 IMU/感測器驅動程式已替換為上游 micropython-lib 版本,其 API 略有不同(內建範例已隨之更新)。

提交: 86ad6dcdb9344c3b742b5b7963b

不支援的感測器控制現在會警告 (behavior)

sensor.set_auto_gain()set_auto_exposure()set_auto_whitebal()set_auto_blc() 現在會在使用中的感測器不支援該控制時印出警告,而不再引發 RuntimeError,因此同一份指令碼可在功能各異的感測器上執行。原本仰賴捕捉該例外的程式碼必須更新。

提交: dbf4996f2

遷移檢查清單

若要乾淨地移植到 v4.5.0,通常的工作為:

  1. import lcd 的用法改為新的 display 模組與適當的後端(display 模組變更)。

  2. lcd_touch 改為 FT5X06、更新所有舊的 LED 接腳名稱,並重新檢查上游 IMU 驅動程式 API(觸控/接腳/驅動程式變更)。

  3. 將圍繞不支援之感測器控制的 try/except RuntimeError 改為功能檢查(感測器控制變更)。