hallo, ich spiele ein bischen mit dem stm32f429 discovery board. Das Beispiel Fats funktioniert ich kann eine Datei auf der Karte erstellen und lesen. So nun wollte ich gerne ein BMP Pic von der Karte auf Das tft anzeigen. scheitere aber daran wie ich das Auslesen des BMP Pictures starte oder beginne. BMP: 240*240 24bit
Du liest mit fread() o. ä. erstmal den BMP Header ein, der ist unbedingt nötig, um den Anfang der eigentlichen Bilddaten zu finden und um herauszufinden, ob du das BMP auf deiner Kiste überhaupt darstellen kannst: https://en.wikipedia.org/wiki/BMP_file_format Du siehst, das schon in den ersten paar Bytes wichtige Sachen drinstehen, wie die Länge des BMP und die Anfangsadresse in der Datei für die Bilddaten. Dann solltest du eigentlich den DIB Header prüfen, ob es wirklich ein 24-bit ist, ob es evtl. komprimiert ist und ob die Bildgrösse passt. Wenn das alles passt, schaufelst du das Bild ein. Das geht vermutlich wegen der Speicherorganisation nicht direkt ins TFT, sondern erst nach Umschnurzeln. Das zeigt dir aber z.B. die Demo, die beim Disco F429 ursprünglich drauf ist. Viel einfacher wird es, wenn du Bilder direkt im RAW Format speicherst, und dabei direkt nur dein eigenes Format berücksichtigst. RAW können aber nicht alle Bildverarbeiter erzeugen, musst du schauen, ob du da was passendes für dein OS findest.
Das läuft bei mir aufn stm32f103 mit ssd1963 800*480 Pixeln.
Beim stm32f429 müssen ja die Bilddaten ins sdram und dann aufs display,
wie das umzusetzen ist damit komme ich noch richtig klar.
res = f_open(&fsrc, aa, FA_OPEN_EXISTING | FA_READ); //´òÉÏͼƬÎļþÃû
res = f_read(&fsrc, &bmp, sizeof(bmp), &br);
if((bmp.pic_head[0]=='B')&&(bmp.pic_head[1]=='M'))
{
res = f_lseek(&fsrc,
((bmp.pic_data_address_h<<16)|bmp.pic_data_address_l));
for(tx=0;tx<bmp.pic_h_l;tx++){
f_read(&fsrc, buffer, (bmp.pic_w_l)*3, &br);
f_read(&fsrc, buffer, (bmp.pic_w_l), &br);
for(ty=0;ty<bmp.pic_w_l;ty++){
r_data = *(ty*3 +2+buffer);
g_data = *(ty*3 +1+buffer);
b_data = *(ty*3 +0+buffer);
point.x = tx;
point.y = ty;
point.r = r_data;
point.g = g_data;
point.b = b_data;
//Èç¹ûÓÃÌṩ×ÊÁÏÉÏµÄÆÁÇý¶¯¡£DrawPixelº¯ÊýÀïÃæµÄX YÊÇu8
.Òª¸Ä³Éu16
LCD_SetPoint(point.y,point.x
,RGB888ToRGB565(point.r,point.g,point.b));
}
}
f_close(&fsrc);
}
}
Uwe B. hat übrigens tonnenweise Software fürs F429 Disco Board, da ist mit Sicherheit was bei: http://mikrocontroller.bplaced.net/wordpress/?page_id=2736 Edit: Ja, es ist was bei. Library Nummer 19 hat die Funktion, die du suchst, für RAW, BMP und JPG.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.