v4.5.0¶
v4.5.0 är en större release. Den gamla lcd-modulen ersattes av en enhetlig display-modul med separata backends för SPI / parallell / DSI / TV, kortet Arduino Giga lades till, och en våg av funktioner för display, pekskärm och sensorstyrning anlände. Det finns flera brytande ändringar — läs dem nedan.
Höjdpunkter¶
Ny
display-modul — ersätterlcdmed enhetliga backendsSPIDisplay/RGBDisplay/DSIDisplay/TVDisplay.Stöd för Arduino Giga-kortet.
Ny display-/pekskärmshårdvara — DSI-displayer på STM32 H7, TFP410 DVI/HDMI, HDMI/DVI CEC, ST7701 RGB-paneler samt kapacitiv pekskärm GT911 / FT5X06.
Nya sensorkontroller — black-level-kalibrering, nattläge och
sensor.disable_delays(); mycket snabbare transponering (~5x) och morfologi (~2,5x).Brytande:
lcd→display,lcd_touch→ft5x06, omdöpta LED-stift — se de brytande ändringarna.
Nya funktioner¶
Display-backends —
DisplayData(DDC/EDID-avläsning), enTFP410DVI/HDMI-serialiserare, stöd för MIPI-DSI-display på STM32 H7, encec-drivrutin för HDMI/DVI, samt ett Python-display-bibliotek med en initieringshjälpare förST7701RGB-paneler.Pekskärm — ny drivrutin
GT911för 5-punkts kapacitiv pekskärm (read_points()/read_id()/reset()).machine-utökning — ett frysbartmachine-bibliotek med en hjälparklassmachine.LED, och en ny metodmachine.LED.value([v]).Sensorkontroller —
sensor.set_auto_blc(enable, regs=None)/sensor.get_blc_regs()(black-level-kalibrering),IOCTL_SET_NIGHT_MODE/IOCTL_GET_NIGHT_MODE(OV7725/OV5640), OV7670 hmirror/vflip, samtsensor.disable_delays()för att hoppa över kamerans stabiliseringsfördröjningar och få snabbare omkonfigurering.i.MX RT —
sensor.set_xclk_frequency()accepterar nu valfri frekvens (justeras till närmaste giltiga CSI-delare) och modulerna SPIlcd/tv/firaktiverades på RT1060.
Övriga ändringar och förbättringar¶
Mycket snabbare bildoperationer — bildtransponering är ~5x snabbare och
image.morph()är ~2,5x snabbare.Kamerabussondering skannar och validerar nu flera enhetsadresser, vilket ger stöd för kort med flera enheter på bussen.
Buggfixar¶
Kamera och sensorer:
Åtgärdade noggrannheten i förstärkningsberäkningen för många sensorer (HM01B0, HM0360, MT9M114, MT9V0xx, OV2640, OV5640, OV7690, OV7725, OV9650, PAJ6100), MT9V0xx-exponering / kolumnbinning, OV5640-exponering samt OV7670 VGA-fönsterhantering.
STM32 kastar nu bort korrupta transponeringsbildrutor i stället för att returnera felaktiga bilder.
Bildbehandling:
Åtgärdade ett heltalsöverflöd som påverkade operationer för image / FIR / ToF / LCD / TV, ogiltiga flyttalsinstruktioner
vcvtm/vcvtppå Cortex-M4 (fast_floorf/fast_ceilf), en skalningsbugg på plats iimage.to_*()-konvertering, samt korruption av DMA2D-ritcache.
Display och system:
Åtgärdade DSI-displayns timing och porträttläge,
micro_speechlisten()på Nicla Vision / Portenta H7, STM32-användarbrytaren (pyb.Switch) samt stöd för I2C4-bussen.
Hårdvaru- och kortstöd¶
Arduino Giga — nytt kort, med namngivna Arduino-stiftmappningar och en komplett uppsättning exempel.
OpenMV RT1060 — SPI LCD-, TV- och FIR-värmemoduler aktiverade.
Arduino Nano 33 BLE Sense — LED-stift.
Brytande API-ändringar¶
Användarsynliga API-brott mellan v4.4.3 och v4.5.0. Omfattning: Python C-moduler i modules/ och Python-bibliotek i scripts/libraries/.
Varje ändring är taggad med sin påverkan:
major — de flesta skript som använde det behöver redigeras.
minor — smalt API; påverkar endast skript som använde det.
behavior — samma API, annat resultat; kontrollera om intrimmade skript på nytt.
Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod, hoppa till migrationschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.
lcd-modulen ersatt av display (major)¶
Den gamla lcd-modulen togs bort och ersattes av en enhetlig display-modul uppdelad i backends SPIDisplay (SPI LCD-shield), RGBDisplay / parallell, DSIDisplay (MIPI-DSI) och TVDisplay med ett gemensamt API. Skript måste byta från import lcd till display-modulen och skapa lämpligt backend-objekt.
Pekskärmsmodul, LED-stift och medföljande drivrutiner (minor)¶
Den generiska lcd_touch-modulen ersattes av en dedikerad drivrutinsmodul FT5X06 för kapacitiv pekskärm. LED-stiftnamn döptes om för konsekvens över alla kort (skript som refererar till de gamla LED-stiftnamnen måste uppdateras). De medföljande IMU-/sensordrivrutinerna hts221 / lps22h / lsm6dsox / lsm9ds1 ersattes med versionerna från micropython-lib uppströms, vars API:er skiljer sig något (de medföljande exemplen uppdaterades så att de matchar).
Sensorkontroller som inte stöds varnar nu (behavior)¶
sensor.set_auto_gain(), set_auto_exposure(), set_auto_whitebal() och set_auto_blc() skriver nu ut en varning i stället för att kasta ett RuntimeError när den aktiva sensorn inte stöder kontrollen, så att samma skript kan köras över sensorer med olika förmågor. Kod som förlitade sig på att fånga undantaget måste uppdateras.
Commit: dbf4996f2
Migrationschecklista¶
För en ren portning till v4.5.0 är det typiska arbetet:
Ersätt användning av
import lcdmed den nyadisplay-modulen och lämplig backend (ändringen av display-modulen).Byt
lcd_touchtillFT5X06, uppdatera eventuella gamla LED-stiftnamn och kontrollera de uppströms IMU-drivrutins-API:erna på nytt (ändringarna av pekskärm/stift/drivrutin).Ersätt
try/except RuntimeErrorrunt sensorkontroller som inte stöds med förmågekontroller (ändringen av sensorstyrning).