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 倍)。破壞性變更:
lcd→display、lcd_touch→ft5x06、重新命名 LED 接腳——詳見破壞性變更。
新功能¶
顯示後端——
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 上的差異。
lcd 模組被 display 取代 (major)¶
舊的 lcd 模組已移除,並被一個統一的 display 模組取代,後者分為 SPIDisplay(SPI LCD 擴充板)、RGBDisplay/並列、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改為功能檢查(感測器控制變更)。