class DSIDisplay – DSI-display-drivrutin¶
Klassen DSIDisplay driver MIPI-DSI-paneler via STM32 DSI-värdstyrenheten. MIPI DSI är ett paketbaserat seriellt display-protokoll som använder en klocklane plus en eller flera datalanes som differentiella par, vilket gör att det kan bära högupplöst innehåll (upp till 1080p) över betydligt färre ledningar än 24-bitars parallell RGB. Pixlar strömmar direkt från en SDRAM-baserad bildbuffert med den valda uppdateringsfrekvensen, så CPU:n är inte inblandad i uppdateringen.
Panelupplösningen väljs via framesize med konstanterna i modulen display (QVGA, VGA, HD, FHD, …). Panelspecifika initieringssekvenser kopplas in via nyckelordsargumentet controller – ST7701 täcker de vanliga ST7701-baserade 480x800 DSI-panelerna. DCS-kommandon kan skickas out-of-band via bus_write() / bus_read(). Bakgrundsbelysningens ljusstyrka drivs som ett enkelt GPIO som standard, eller av DACBacklight / PWMBacklight om det skickas som backlight.
Bildrutor presenteras genom att anropa write() med en image.Image. Drivrutinen hanterar RGB-konvertering, skalning, ROI, palett- och orienteringstransformer internt.
Exempel – spegla kameran på en ST7701-baserad 480x800 DSI-panel:
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)
Konstruktorer¶
- 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)¶
framesizeEn av de standardstödda upplösningarna (t.ex.display.FWVGA).refreshStäller in skärmens uppdateringsfrekvens i hertz. Giltigt intervall är 30 till 120. Detta styr DSI LCD-klockan.display_onAktiverar displayen.triple_bufferAllokerar tre bildbuffertar för att möjliggöra rivningsfria displayuppdateringar. Krävs för vertikal vändning iwrite().portraitByter plats på bildrutans bredd och höjd.channelDen virtuella MIPI DSI-kanal som ska användas för att kommunicera med displayen.controllerSkicka styrenhetschipets klass här för att initiera det tillsammans med displayen. T.ex.display.ST7701()som är en standard display-styrenhet för MIPI DSI-displayer.backlightAnge en bakgrundsbelysningsmodul som ska användas. Som standard styrs bakgrundsbelysningen via ett GPIO-stift.- deinit() None¶
Frigör de I/O-stift och det RAM som klassen använder. Detta anropas automatiskt vid destruktion.
- 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¶
Visar en
imagevars övre vänstra hörn börjar vid positionx,y.imagekan vara en sökvägssträng istället för ett bildobjekt för att automatiskt läsa in bilden från disk. T.ex.write("test.jpg").x_scalestyr hur mycket den visade bilden skalas i x-riktningen (float). Om värdet är negativt vänds bilden horisontellt. Omy_scaleinte anges matchas det medx_scaleför att bibehålla bildförhållandet.y_scalestyr hur mycket den visade bilden skalas i y-riktningen (float). Om värdet är negativt vänds bilden vertikalt. Vertikal vändning krävertriple_buffer=True. Omx_scaleinte anges matchas det medy_scale.roiär intresseområdets rektangeltupel (x, y, w, h) för den bild som ska visas.rgb_channelär den RGB-kanal (0=R, 1=G, 2=B) som ska extraheras ur en RGB565-bild och renderas på displayen i gråskala.-1avaktiverar extraktion. Giltigt intervall är -1 till 2.alphastyr hur ogenomskinlig bilden är. 255 visar en ogenomskinlig bild, lägre värden blandar mot svart och 0 ger en helt svart bild. Giltigt intervall är 0 till 255.color_palettekan vara en color palette-enum eller en RGB565-bild på 256 pixlar som används som en färguppslagstabell på gråskalevärdet i indatabilden. Tillämpas efterrgb_channel-extraktion.alpha_palettekan vara en gråskalebild på 256 pixlar som används som en alfauppslagstabell vilken moduleraralphaper gråskalevärde i indatapixeln. Tillämpas efterrgb_channel-extraktion.hintär en logisk OR av flaggorna:image.AREA: Använd ytskalning vid nedskalning istället för standardvärdet närmaste granne.image.BILINEAR: Använd bilinjär skalning istället för standardskalningen närmaste granne.image.BICUBIC: Använd bikubisk skalning istället för standardskalningen närmaste granne.image.CENTER: Centrera bilden som ritas på displayen. Detta tillämpas efter skalning.image.HMIRROR: Spegla bilden horisontellt.image.VFLIP: Vänd bilden vertikalt.image.TRANSPOSE: Transponera bilden (byt x/y).image.EXTRACT_RGB_CHANNEL_FIRST: Utför rgb_channel-extraktion före skalning.image.APPLY_COLOR_PALETTE_FIRST: Tillämpa färgpalett före skalning.image.SCALE_ASPECT_KEEP: Skala bilden som ritas så att den får plats inuti displayen.image.SCALE_ASPECT_EXPAND: Skala bilden som ritas så att den fyller displayen (resulterar i beskärning).image.SCALE_ASPECT_IGNORE: Skala bilden som ritas så att den fyller displayen (resulterar i sträckning).image.ROTATE_90: Rotera bilden 90 grader (detta är bara VFLIP | TRANSPOSE).image.ROTATE_180: Rotera bilden 180 grader (detta är bara HMIRROR | VFLIP).image.ROTATE_270: Rotera bilden 270 grader (detta är bara HMIRROR | TRANSPOSE).
- clear(display_off: bool = False) None¶
Rensar LCD-bildbufferten till svart.
display_offom True stängs displaylogiken av istället för att rensa bildbufferten.
- backlight(value: int | None = None) int¶
Ställer in LCD-bakgrundsbelysningens dämpningsvärde, 0 (av) till 100 (på). Skicka inga argument för att hämta det aktuella bakgrundsbelysningsvärdet.
Om inte en
DACBacklight- ellerPWMBacklight-styrenhet skickas till konstruktorn styrs bakgrundsbelysningen som ett GPIO-stift och kan endast gå från 0 (av) till skilt från noll (på).
- bus_write(cmd: int, args: int | bytes | None = None, *, dcs: bool = False) None¶
Skicka DSI-kommandot
cmdtill displayen.argsär ett valfritt heltal eller en buffert som innehåller kommandoparametrar.dcsom True skickas kommandot som ett DCS-paket (Display Command Set).