Hallo, folgende Datei enthält Werte eines ganzen Bildes (in C-Code bzw. Hex-Form) für den STM32F4... https://github.com/fboris/STM32Cube_FW_F4/blob/master/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/Inc/RGB565_480x272.h wie kann ich solche C/ Header-Dateien aus einem Bild selber erzeugen? vielen Dank
Der Konverter wird migeliefert: BmpCvt.exe im Ordner: STM32Cube_FW_F4/Middlewares/ST/STemWin/Software/
hp-freund schrieb: > STM32Cube_FW_F4/Middlewares/ST/STemWin/Software/ ah super, werde ich morgen gleich versuchen. Ist das eine Demo? Und vermutlich Kommando-Zeilenprogramm? Vielen Dank
Nö, ganz einfaches Win Prog ohne Installation. Probier es aus...
ok. folgendes probiert: speichern als C-File, RGB565 high, erzeugt folgendes: static GUI_CONST_STORAGE unsigned short _ac480x272_lake[] = { 0x9BCA, 0x9BCA, 0x9BA9, 0xA3CA, 0x9BCA, 0x9BCA, 0x9BCA, 0x9BAA, 0x9B89, 0x9B69, 0x9369, 0x9BA9, 0x9BAA, 0x9BAA, 0x9BAA, 0x9BAA, 0x9BAA, 0x9BAA,... ich brauch es aber so: const uint32_t RGB565_480x272[65280] = { 0x7A537A53, 0x82538253, 0x82538253, 0x8A538253, 0x82538253, 0x82538253,.... wie ändere ich dies ab? mit einem Editor? wird kompliziert? Danke
Moin, Du willst wirklich 32bit über einen 16bit Port (RGB565=16) schicken. Sieh dir lieber an was später aus deinen 32bit gemacht wird. Ich wette die werden wieder in 2 x 16bit zerlegt.
Ok. Habe mir die Funktion angesehen. Das Bild wird direkt als Framebuffer übergeben. Sieh mal nach wie die Werte im Speicher liegen. Wenn nur 16 von 32 bit genutzt werden, versuche ein packed.
phuu... ich versuche mich gerade erst nur an einem example, und dort ist es als 32bit hinterlegt. Ich habe nämlich jetzt am STM32F429I Disc. ein 480x272 angeschlossen (ein bisschen Lötarbeit war gefragt x-D)... es läuft soweit, aber hätte jetzt gerne ein 480x272 hintergrund-bilder angezeigt statt 320x240... Was heisst versuche "ein packed"?
und dann habe ich noch versucht mit diesem Code auf 9Mhz herunterzutakten, aber er macht mir 6Mhz statt 9.6Mhz?? RCC_PLLSAIConfig(192, 7, 5); RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
ups, das war falsch gemessen, sind 9.6Mhz! jetzt halt noch die Frage, wie kriege ich 32bit Werte hin?
epikao schrieb: > aber hätte jetzt gerne ein 480x272 hintergrund-bilder > angezeigt statt 320x240... Wird denn schon etwas richtig angezeigt, bis auf das Format?
ich habe das colorkeying am laufen, und die Pfeile werden angezeigt und schalten auch um auf Tastendruck, aber einfach doppelt, also pro bildschrimhälfte 1mal. vermutlich weil halt für 240 Spalten geschrieben, ich aber 480 Spalten habe... Habe im main.c zwar alles was auch 240x320 geschrieben war auf 480x272 umgetippt/gerechnet. Auch die Porch-Einstellungen habe ich gemäss meinem 4.3" Display. Also zeigt wirklich sauber an, ausser die letzten 4-5 Zeilen sind nicht mehr weiss sondern braun.... ich möchte jetzt einfach bilder anzeigen lassen statt die Pfeile... aber irgendwie hat das ganze 2 Layer... das muss ich auch noch studieren. Habe einmal ein RGB565_480x272.. header-File statt das 240x320 aufgespielt, da war der Hintergrund dann nicht mehr weiss sondern mit einem Bild - wobei die Pfeile nicht mehr sichtbar waren...
https://github.com/fboris/STM32Cube_FW_F4/blob/master/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/Inc/RGB565_480x272.h da File hat auch 32bit Format... also wie mache ich das?
Habe es gerade getestet. Es werden auch die 16bit Werte automatisch ohne Platzverschwendung in den 32 bit Speicher gepackt. Darüber brauchst Du dir keine Gedanken machen. Übergib einfach die Adresse auf dein Array und gut.
Danke fürs ausprobieren, das File habe ich auf rgb565_480x272.h umbenannt, im ColorKeying Ordner abgelegt und wie folgt abgeändert: */ #ifndef __RGB565_480X272_H #define __RGB565_480X272_H const uint16_t RGB565_480x272[76200] = { 0x9BCA, 0x9BCA, 0x9BA9, 0xA3CA, 0x9BCA, 0x9BCA, bin zwar nicht sicher ob 76200 nötig ist? oder leer lassen? Dann habe ich im main.c noch das geändert: /* Input Address configuration */ LTDC_Layer_InitStruct.LTDC_CFBStartAdress = (uint16_t)&RGB565_480x272; und im main.h #include "RGB565_480x272.h" was ist falsch?
https://github.com/fboris/STM32Cube_FW_F4/blob/master/Projects/STM324x9I_EVAL/Examples/LTDC/LTDC_Display_1Layer/Src/main.c Da ist es anders drin, hast offenbar eine andere Vorlage verwendet. Die Array Größenangabe kannst Du weg lassen. Da ich das Board nicht hier habe, kann ich auch nicht mehr dazu sagen.
epikao schrieb: > (uint16_t)&RGB565_480x272; Den STM kenne ich nicht. Aber sein Adressraum ist bestimmt größer als 16Bit. Sollte es nicht eher ein (uint16_t *) sein?
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.