v3.9.4¶
v3.9.4 añade un módulo buzzer, ioctls de detección de movimiento HM01B0 de Himax (con ejemplos de bajo consumo de activación por movimiento), control de la ventana de lectura del MT9V034, funciones de bajo consumo para Ethernet, un controlador de cámara OV7670 y la cámara del Arduino Nano 33 BLE Sense. También incorpora un gran conjunto de aceleraciones de JPEG / LCD / TV. La API de salida VSYNC se reemplazó por una función de retorno (callback) y se corrigieron los cálculos de ganancia/exposición del MT9V034: consulta los cambios incompatibles más abajo.
Aspectos destacados¶
Módulo buzzer: un nuevo módulo
buzzer(freq(),duty(),RESONANT_FREQ) en el OpenMV Pure Thermal.Detección de movimiento HM01B0: nuevos ioctls de detección de movimiento de Himax más un ejemplo de bajo consumo de activación por movimiento.
Ventana de lectura del MT9V034: controla la ventana de lectura del obturador global mediante
sensor.ioctl().Nuevas cámaras / placas: controlador básico OV7670, cámara del Arduino Nano 33 BLE Sense y la placa Bormio.
Pipeline más rápido: codificador JPEG SIMD reescrito, desbayerizado más rápido y grandes aceleraciones de transferencia para LCD/TV.
Incompatible:
sensor.set_vsync_output()se reemplazó porsensor.set_vsync_callback()y se corrigieron los cálculos de ganancia/exposición del MT9V034: consulta los cambios incompatibles.
Nuevas características¶
Buzzer: se añadió un módulo
buzzerconbuzzer.freq(),buzzer.duty()y una constantebuzzer.RESONANT_FREQ(OpenMV Pure Thermal).Detección de movimiento HM01B0: se añadieron los ioctls
IOCTL_HIMAX_MD_ENABLE/MD_WINDOW/MD_THRESHOLD/MD_CLEAReIOCTL_HIMAX_OSC_ENABLE, con un ejemplo de detección de movimiento de Himax y un ejemplo de activación de bajo consumohimax_wakeup_on_motion_detection.py.Ventana de lectura del MT9V034: se añadieron
IOCTL_SET_READOUT_WINDOW/IOCTL_GET_READOUT_WINDOWpara controlar la ventana de lectura del MT9V034 mediantesensor.ioctl().Bajo consumo en Ethernet: se añadieron funciones de apagado / bajo consumo para Ethernet.
Portenta: se añadieron funciones de retorno (callback) para activar/desactivar el oscilador externo.
Otros cambios y mejoras¶
Se reescribió el codificador JPEG con SIMD y se aceleró la codificación Bayer→YCbCr, se mantuvo encendido el núcleo JPEG por hardware durante la ejecución del script, se aceleró el desbayerizado (~19,5 ms para VGA), se descargó la compresión JPEG en MDMA, se aceleraron las rutas de transferencia de TV/LCD con SIMD/DMA eficiente y se redujo enormemente el uso del bus del LCD SPI. Se añadió un controlador PHY ULPI USB3320 para USB de alta velocidad.
Corrección de errores¶
Cámara y sensores:
Se corrigió la inicialización/transmisión del controlador HM01B0 y se ajustaron su objetivo de AE / ganancia máxima, se corrigió el recorte de ganancia AGC/AEC del MT9V034 y se corrigió la carga del firmware de enfoque automático del OV5640 (orden de bytes).
Pantalla:
Se corrigieron las transferencias DMA del LCD SPI mayores de 64 KB, la polaridad de salida del LCD y la estabilidad del bus del LCD (AXI QOS).
Sistema y conectividad:
Se corrigió la instancia SDMMC utilizada por el controlador WiFi CYW43 (con una instancia SDMMC definida por la placa), se mejoró la eficiencia de DMA del FLIR Lepton (VOSPI elevado a 20 MHz en H7), se corrigió el comportamiento de bajo consumo / reposo del Portenta (límite de corriente del PMIC SW1, bajo consumo de Ethernet y ULPI), se hizo que el servidor RTSP tolere encabezados
CSeqyPLAY Rangedesordenados (FFPLAY), se corrigió la alineación EABI de 8 bytes de la pila del enlazador y se corrigió una importación rota en el ejemplomqtt_sub.pydel Portenta.
Hardware y compatibilidad de placas¶
Sensor de cámara OV7670: controlador básico.
Arduino Nano 33 BLE Sense: controlador de sensor de cámara (puerto nrf) con correcciones del pin de reinicio y del bus I2C.
HM01B0: se añadió una resolución de 320x320.
Bormio: configuración del reloj PLL, distribución de la memoria flash y GPIO PORT K (también habilitado en el Portenta).
PHY ULPI USB3320: USB de alta velocidad.
Cambios incompatibles en la API¶
Cambios incompatibles en la API visibles para el usuario entre v3.9.3 y v3.9.4. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.
Cada cambio está etiquetado según su impacto:
mayor: afecta a la mayoría de los scripts que usaban la característica; tendrás que portar el código.
comportamiento: misma API, resultados distintos; vuelve a revisar los scripts ajustados.
Los cambios se agrupan por impacto en ese orden. Si solo quieres portar tu código, salta a la lista de verificación de migración al final. Cada hash de commit enlaza con su diff en GitHub.
La salida VSYNC se reemplazó por una función de retorno (callback) (mayor)¶
sensor.set_vsync_output(pin) se eliminó y se reemplazó por sensor.set_vsync_callback(callback). La línea VSYNC ya no controla directamente un Pin; en su lugar se invoca un objeto invocable de Python con el estado de VSYNC, y tu función de retorno (callback) conmuta el Pin por sí misma. El código que usaba sensor.set_vsync_output() debe portarse (consulta el ejemplo actualizado vsync_gpio_output.py).
Commits: 5bbe25c20
Se corrigieron los cálculos de ganancia/exposición del MT9V034 (comportamiento)¶
Se corrigieron la velocidad del reloj y los cálculos de ganancia/exposición del MT9V034, de modo que sensor.set_auto_gain() / sensor.set_auto_exposure() ahora producen valores precisos (y por tanto diferentes) a los de antes. Los scripts que codificaban valores compensatorios de ganancia/exposición para sortear los antiguos cálculos incorrectos en las cámaras de obturador global MT9V034 deberían eliminar esas soluciones provisionales y reajustarse.
Commits: 4420536c4
Lista de verificación de migración¶
Para un porte limpio a v3.9.4 el trabajo habitual es:
Reemplazar
sensor.set_vsync_output(pin)porsensor.set_vsync_callback(callback)y conmutar elPindesde dentro de la función de retorno (callback) (el cambio de VSYNC).Reajustar cualquier solución provisional de ganancia/exposición del MT9V034 frente a los cálculos corregidos (el cambio del MT9V034).
Todos los demás scripts funcionan sin modificaciones.