v3.9.4

v3.9.4 新增了 buzzer 模組、Himax HM01B0 動作偵測 ioctl(含低功耗的動作喚醒範例)、MT9V034 讀出視窗控制、Ethernet 低功耗功能、OV7670 相機驅動程式,以及 Arduino Nano 33 BLE Sense 相機。它也加入了一大批 JPEG / LCD / TV 的速度提升。VSYNC 輸出 API 已改用回呼函式取代,且修正了 MT9V034 的增益/曝光運算 — 請閱讀以下的破壞性變更。

重點摘要

  • Buzzer 模組 — 在 OpenMV Pure Thermal 上新增了一個 buzzer 模組(freq()duty()RESONANT_FREQ)。

  • HM01B0 動作偵測 — 新增 Himax 動作偵測 ioctl,以及低功耗的動作喚醒範例。

  • MT9V034 讀出視窗 — 透過 sensor.ioctl() 控制全域快門的讀出視窗。

  • 新相機/開發板 — 基本的 OV7670 驅動程式、Arduino Nano 33 BLE Sense 相機,以及 Bormio 開發板。

  • 更快的流程 — 重寫的 SIMD JPEG 編碼器、更快的去馬賽克處理,以及大幅提升的 LCD/TV 傳輸速度。

  • 破壞性: sensor.set_vsync_output() 已改用 sensor.set_vsync_callback() 取代,且修正了 MT9V034 的增益/曝光運算 — 請參閱破壞性變更。

新功能

  • Buzzer — 新增了一個 buzzer 模組,包含 buzzer.freq()buzzer.duty() 以及一個 buzzer.RESONANT_FREQ 常數(OpenMV Pure Thermal)。

  • HM01B0 動作偵測 — 新增了 IOCTL_HIMAX_MD_ENABLE / MD_WINDOW / MD_THRESHOLD / MD_CLEARIOCTL_HIMAX_OSC_ENABLE ioctl,並附上一個 Himax 動作偵測範例與一個 himax_wakeup_on_motion_detection.py 低功耗喚醒範例。

  • MT9V034 讀出視窗 — 新增了 IOCTL_SET_READOUT_WINDOW / IOCTL_GET_READOUT_WINDOW,可透過 sensor.ioctl() 控制 MT9V034 的讀出視窗。

  • Ethernet 低功耗 — 新增了 Ethernet 斷電/低功耗功能。

  • Portenta — 新增了啟用/停用外部振盪器的回呼函式。

其他變更與改進

  • 以 SIMD 重寫了 JPEG 編碼器並加速了 Bayer→YCbCr 編碼、在指令碼執行期間保持硬體 JPEG 核心供電、加速去馬賽克處理(VGA 約 19.5 毫秒)、將 JPEG 壓縮卸載至 MDMA、以 SIMD/高效 DMA 加速 TV/LCD 傳輸路徑,並大幅降低 SPI LCD 匯流排的使用量。新增了用於高速 USB 的 USB3320 ULPI PHY 驅動程式。

錯誤修正

相機與感測器:

  • 修正了 HM01B0 驅動程式的初始化/串流並調校了其 AE 目標值/最大增益、修正了 MT9V034 的 AGC/AEC 增益鉗制,並修正了 OV5640 自動對焦韌體的載入(位元組順序)。

顯示:

  • 修正了大於 64 KB 的 SPI LCD DMA 傳輸、LCD 輸出極性,以及 LCD 匯流排穩定性(AXI QOS)。

系統與連線:

  • 修正了 CYW43 WiFi 驅動程式所使用的 SDMMC 實例(透過開發板定義的 SDMMC 實例)、改進了 FLIR Lepton 的 DMA 效率(H7 上的 VOSPI 提升至 20 MHz)、修正了 Portenta 的低功耗/待機行為(PMIC SW1 電流限制、Ethernet 與 ULPI 低功耗)、讓 RTSP 伺服器能容忍順序錯亂的 CSeqPLAY Range 標頭(FFPLAY)、修正了連結器堆疊的 8 位元組 EABI 對齊,並修正了 Portenta mqtt_sub.py 範例中一個損壞的 import。

硬體與開發板支援

  • OV7670 相機感測器 — 基本驅動程式。

  • Arduino Nano 33 BLE Sense — 相機感測器驅動程式(nrf 移植版本),並修正了 reset 接腳與 I2C 匯流排。

  • HM01B0 — 新增了 320x320 解析度。

  • Bormio — PLL 時脈設定、flash 配置,以及 GPIO PORT K(也在 Portenta 上啟用)。

  • USB3320 ULPI PHY — 高速 USB。

破壞性的 API 變更

v3.9.3 與 v3.9.4 之間使用者可見的 API 破壞性變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。

每項變更都標記了其影響程度:

  • 重大 — 影響大多數使用該功能的指令碼;您將需要移植程式碼。

  • 行為 — 相同的 API,不同的結果;請重新檢查已調校的指令碼。

變更依該順序依影響程度分組。如果您只想移植程式碼,請跳至結尾的 移植檢查清單。每個提交雜湊都連結到其在 GitHub 上的差異。

VSYNC 輸出改用回呼函式取代 (重大)

sensor.set_vsync_output(pin) 已被移除,並改用 sensor.set_vsync_callback(callback) 取代。VSYNC 線路不再直接驅動 Pin;取而代之的是,會以 VSYNC 狀態呼叫一個 Python 可呼叫物件,由您的回呼函式自行切換 Pin。使用 sensor.set_vsync_output() 的程式碼必須移植(請參閱更新後的 vsync_gpio_output.py 範例)。

提交: 5bbe25c20

修正 MT9V034 增益/曝光運算 (行為)

修正了 MT9V034 的時脈速度與增益/曝光運算,因此 sensor.set_auto_gain() / sensor.set_auto_exposure() 現在會產生準確(因而與以往不同)的數值。先前為了規避 MT9V034 全域快門相機上錯誤運算而硬寫補償性增益/曝光值的指令碼,應移除那些變通做法並重新調校。

提交: 4420536c4

移植檢查清單

若要乾淨地移植至 v3.9.4,通常需要:

  1. sensor.set_vsync_output(pin) 替換為 sensor.set_vsync_callback(callback),並在回呼函式內切換 PinVSYNC 變更)。

  2. 針對修正後的運算重新調校任何 MT9V034 增益/曝光的變通做法(MT9V034 變更)。

所有其他指令碼皆可原封不動地執行。