v3.8.0

v3.8.0 將核心更新至 MicroPython 1.13,將大量輔助函式庫凍結進韌體,新增 Portenta Ethernet(含網路範例)、對 lcd 模組的 HDMI CEC 支援、pyb.CAN 鮑率/取樣點設定,以及一連串 H7 低功耗與 HAL 修正。timeutime 模組已合併,且 F4 pyb.DAC DMA 已停用 — 請閱讀下方的破壞性變更。

重點摘要

  • MicroPython 1.13 — 內建的 MicroPython 核心已更新。

  • 凍結函式庫uasynciomqttrpcrtspmodbusbno055pidssd1306 等現已凍結進韌體。

  • Portenta Ethernet — 乙太網路支援,外加 HTTP / SSL / 點對點範例。

  • HDMI CEClcd 模組中新增的 CEC API(Pure Thermal)。

  • pyb.CAN — 由 baudratesampling_point 關鍵字設定位元時序。

  • 破壞性變更: timeutime 模組已合併,且 F4 pyb.DAC DMA 函式已停用 — 請參閱破壞性變更。

新功能

  • 凍結資訊清單uasynciomqttrpcrtspmodbusbno055mutexpidssd1306tb6612vl53l1x 現已凍結進 OpenMV 3 / 4 / 4 Plus / Pure Thermal / Portenta 的韌體中。

  • Portenta Ethernet — 啟用乙太網路,並提供 http_clienthttp_client_sslpeer_to_peer 範例。

  • HDMI CEC — 為 lcd 模組新增 HDMI CEC API(Pure Thermal)。

  • pyb.CAN — 建構函式 / init() 現在會由 baudratesampling_point 關鍵字推導位元時序(手動預分頻器形式仍可使用);CAN 範例也已相應更新。

其他變更與改進

  • REPL 橫幅現在會包含 HAL 版本字串;Audio FFT 範例已更新以配合較新的 ulab API。

錯誤修正

相機與感測器:

  • 修正 STM32H7 rev Y 裝置上的 OV2640 感測器時脈與 OV5640 PCLK 頻率縮放;透過脈衝 SCL 將 FIR I2C 匯流排從仲裁丟失狀態中復原,並在 F7 軟重置時重試 AMG8833 初始化。

電源與計時器:

  • 修正 H7 低功耗(停止/待命)進入流程 — rev V 的電壓縮放、喚醒時重新啟用振盪器/PLL、具 DRAM 保留的 SDRAM 低功耗、停止進入時停用 Systick,以及僅在除錯建置中啟用 DBGMCU。修正 H7 HAL 更新後的 machine.Timer HAL 狀態,並還原 SD 讀/寫 IRQ 優先順序的變更。

顯示與連線:

  • 修正 F4 SPI LCD 8/16 位元資料大小設定(錯誤的 MCU_SERIES 定義),在 WINC1500 SPI 匯流排初始化失敗時回傳錯誤而非默默繼續,並改用靜態 SPI 控制代碼以避免 WINC1500 SPI 匯流排衝突。修正一個 MicroPython GC-collect 錯誤。

系統:

  • unittests.py 在測試被停用或無法使用時不再將整套測試標記為失敗;移除損壞的 Thermopile-shield camera_lcd 範例。

硬體與開發板支援

  • OpenMV Pure Thermal — 開發板已更新並更名(OPENMVPURETHERMALOPENMVPT),具備 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 相同但結果不同;請重新檢查經過調校的指令碼。

變更依影響程度依此順序分組。若您只想移植程式碼,可直接跳至文末的 移植檢查清單。每個 commit 雜湊值都連結至其在 GitHub 上的 diff。

timeutime 模組合併 (minor)

timeutime 模組已合併,且 OpenMV clock 類別已移至 utime。所有內建範例皆已更新為 import utimeclock = utime.clock()。原本依賴 import time 取得 clock 類別的指令碼應改為 import utime

Commits: 20587f308

F4 pyb.DAC DMA 函式已停用 (minor)

在 F4 系列開發板上,需要 DMA 的 pyb.DAC 函式已停用,因為 F4 的堆積位於 CCM,而 CCM 無法被 DMA 存取。使用 DAC DMA 緩衝區寫入的 F4 指令碼必須避免使用這些函式。

Commits: d61f236f2

MicroPython 更新至 1.13 (behavior)

內建的 MicroPython 核心已更新至 1.13。標準函式庫與語言行為皆遵循上游 MicroPython 1.13;請重新檢查依賴特定版本 micropython /標準模組行為的指令碼。

Commits: fb0a5e26d

cpufreq 支援的頻率取決於晶片修訂版本 (behavior)

新增了更多 CPU 頻率並使其能感知晶片修訂版本:cpufreq.get_supported_frequencies() 現在會在 H7 上回傳依修訂版本而定的清單(rev X/Y 為 50/100/200/400 MHz,rev V 為 60/120/240/480 MHz)。原本硬寫舊固定清單中頻率的指令碼應在執行階段查詢支援的清單。

Commits: 825dd0742

移植檢查清單

要乾淨地移植至 v3.8.0,通常需進行的工作有:

  1. 在使用 clock 類別之處,將 import time 改為 import utimetime/utime 合併)。

  2. 在 F4 開發板上,停止使用 pyb.DAC DMA 緩衝區函式(F4 DAC 變更)。

  3. 針對 1.13 重新驗證依賴特定版本 MicroPython 行為的指令碼(MicroPython 版本升級),並在執行階段查詢 cpufreq.get_supported_frequencies() 而非硬寫頻率(cpufreq 變更)。

所有其他指令碼皆可不經修改執行。