luokka DSIDisplay – DSI-näyttöajuri¶
DSIDisplay-luokka ohjaa MIPI-DSI-paneeleja STM32 DSI -isäntäohjaimen kautta. MIPI DSI on pakettipohjainen sarjamuotoinen näyttöprotokolla, joka käyttää yhtä kellokaistaa sekä yhtä tai useampaa datakaistaa differentiaalipareina, mikä mahdollistaa korkearesoluutioisen sisällön (jopa 1080p) siirron huomattavasti vähemmillä johdoilla kuin 24-bittinen rinnakkainen RGB. Pikselit virtaavat suoraan SDRAM-pohjaisesta kehyspuskurista valitulla virkistystaajuudella, joten CPU ei osallistu virkistykseen.
Paneelin resoluutio valitaan framesize-argumentilla käyttäen display-moduulin vakioita (QVGA, VGA, HD, FHD, …). Paneelikohtaiset alustussekvenssit liitetään controller-avainsana-argumentilla – ST7701 kattaa yleiset ST7701-pohjaiset 480x800 DSI-paneelit. DCS-komentoja voidaan antaa kaistan ulkopuolella bus_write()- / bus_read()-metodeilla. Taustavalon kirkkautta ohjataan oletuksena yksinkertaisena GPIO:na, tai DACBacklight- / PWMBacklight-ohjaimella, jos sellainen annetaan backlight-argumenttina.
Kehykset esitetään kutsumalla write()-metodia image.Image-oliolla. Ajuri hoitaa RGB-muunnoksen, skaalauksen, ROI:n, paletin ja suuntamuunnokset sisäisesti.
Esimerkki – peilaa kamera ST7701-pohjaiselle 480x800 DSI-paneelille:
import csi
import display
import image
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
lcd = display.DSIDisplay(framesize=display.TFWVGA,
controller=display.ST7701())
while True:
lcd.write(csi0.snapshot(), hint=image.SCALE_ASPECT_KEEP)
Rakentajat¶
- class display.DSIDisplay(framesize: int = FWVGA, *, refresh: int = 60, display_on: bool = True, triple_buffer: bool = True, portrait: bool = False, channel: int = 0, controller: Any | None = None, backlight: Any | None = None)¶
framesizeYksi vakioista tuetuista resoluutioista (esim.display.FWVGA).refreshAsettaa näytön virkistystaajuuden hertseinä. Sallittu vaihteluväli on 30-120. Tämä ohjaa DSI LCD -kelloa.display_onOttaa näytön käyttöön.triple_bufferVaraa kolme kehyspuskuria repeämättömien näyttöpäivitysten mahdollistamiseksi. Vaaditaan pystysuuntaiseen kääntöönwrite()-metodissa.portraitVaihtaa kehyskoon leveyden ja korkeuden keskenään.channelVirtuaalinen MIPI DSI -kanava, jota käytetään näytön kanssa kommunikointiin.controllerAnna ohjainpiirin luokka tähän alustaaksesi sen näytön kanssa. Esim.display.ST7701(), joka on vakionäytönohjain MIPI DSI -näytöille.backlightMääritä käytettävä taustavalon ohjainmoduuli. Oletuksena taustavaloa ohjataan GPIO-nastan kautta.- deinit() None¶
Vapauttaa luokan käyttämät I/O-nastat ja RAM-muistin. Tämä kutsutaan automaattisesti tuhoamisen yhteydessä.
- write(image: image.Image, x: int = 0, y: int = 0, x_scale: float = 1.0, y_scale: float = 1.0, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0) None¶
Näyttää kuvan
image, jonka vasen yläkulma alkaa sijainnistax,y.imagevoi olla polkumerkkijono kuvaolion sijaan, jolloin kuva ladataan automaattisesti levyltä. Esim.write("test.jpg").x_scaleohjaa, kuinka paljon näytettävää kuvaa skaalataan x-suunnassa (liukuluku). Jos arvo on negatiivinen, kuva käännetään vaakasuunnassa. Josy_scaleei ole määritetty, se vastaa arvoax_scalekuvasuhteen säilyttämiseksi.y_scaleohjaa, kuinka paljon näytettävää kuvaa skaalataan y-suunnassa (liukuluku). Jos arvo on negatiivinen, kuva käännetään pystysuunnassa. Pystysuuntainen kääntö vaatiitriple_buffer=True. Josx_scaleei ole määritetty, se vastaa arvoay_scale.roion näytettävän kuvan kohdealueen suorakulmiomonikko (x, y, w, h).rgb_channelon RGB-kanava (0=R, 1=G, 2=B), joka poimitaan RGB565-kuvasta ja esitetään näytöllä harmaasävyisenä.-1poistaa poiminnan käytöstä. Sallittu vaihteluväli on -1…2.alphaohjaa, kuinka läpinäkymätön kuva on. 255 näyttää läpinäkymättömän kuvan, pienemmät arvot häivyttävät kohti mustaa, ja 0 tuottaa täysin mustan kuvan. Sallittu vaihteluväli on 0…255.color_palettevoi olla väripaletin enum tai 256 pikselin RGB565-kuva, jota käytetään värihakutauluna syötekuvan harmaasävyarvolle. Sovelletaanrgb_channel-poiminnan jälkeen.alpha_palettevoi olla 256 pikselin harmaasävykuva, jota käytetään alfahakutauluna, joka moduloi arvoaalphasyötepikselin harmaasävyarvon mukaan. Sovelletaanrgb_channel-poiminnan jälkeen.hinton lippujen looginen TAI-yhdistelmä:image.AREA: Käytä pinta-alaskaalausta pienennettäessä oletusarvoisen lähimmän naapurin sijaan.image.BILINEAR: Käytä bilineaarista skaalausta oletusarvoisen lähimmän naapurin skaalauksen sijaan.image.BICUBIC: Käytä bikuubista skaalausta oletusarvoisen lähimmän naapurin skaalauksen sijaan.image.CENTER: Keskitä näytölle piirrettävä kuva. Tämä sovelletaan skaalauksen jälkeen.image.HMIRROR: Peilaa kuva vaakasuunnassa.image.VFLIP: Käännä kuva pystysuunnassa.image.TRANSPOSE: Transponoi kuva (vaihda x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Tee rgb_channel-poiminta ennen skaalausta.image.APPLY_COLOR_PALETTE_FIRST: Sovella väripalettia ennen skaalausta.image.SCALE_ASPECT_KEEP: Skaalaa piirrettävä kuva mahtumaan näytön sisään.image.SCALE_ASPECT_EXPAND: Skaalaa piirrettävä kuva täyttämään näyttö (johtaa rajaukseen).image.SCALE_ASPECT_IGNORE: Skaalaa piirrettävä kuva täyttämään näyttö (johtaa venytykseen).image.ROTATE_90: Kierrä kuvaa 90 astetta (tämä on vain VFLIP | TRANSPOSE).image.ROTATE_180: Kierrä kuvaa 180 astetta (tämä on vain HMIRROR | VFLIP).image.ROTATE_270: Kierrä kuvaa 270 astetta (tämä on vain HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Tyhjentää LCD-kehyspuskurin mustaksi.
display_offjos True, sammuttaa näytön logiikan sen sijaan, että tyhjentäisi kehyspuskurin.
- backlight(value: int | None = None) int¶
Asettaa LCD-taustavalon himmennysarvon, 0 (pois) – 100 (päällä). Älä anna argumentteja saadaksesi nykyisen taustavalon arvon.
Ellei rakentajalle anneta
DACBacklight- taiPWMBacklight-ohjainta, taustavaloa ohjataan GPIO-nastana ja se kytkeytyy vain arvosta 0 (pois) nollasta poikkeavaan arvoon (päällä).
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
Lähettää DSI-komennon
cmdnäytölle.argson valinnainen kokonaisluku tai puskuri, joka sisältää komennon parametrit.dcsjos True, lähettää komennon DCS-pakettina (Display Command Set).