mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik RGB565_480x272.h selber erzeugen


Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: holger (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
gimp?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Konverter wird migeliefert:

BmpCvt.exe

im Ordner:

STM32Cube_FW_F4/Middlewares/ST/STemWin/Software/

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nö, ganz einfaches Win Prog ohne Installation.
Probier es aus...

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"?

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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);

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups, das war falsch gemessen, sind 9.6Mhz!

jetzt halt noch die Frage, wie kriege ich 32bit Werte hin?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
epikao schrieb:
> aber hätte jetzt gerne ein 480x272 hintergrund-bilder
> angezeigt statt 320x240...

Wird denn schon etwas richtig angezeigt, bis auf das Format?

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: epikao (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: hp-freund (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Georg G. (df2au)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.