STM32: SPI DMA 16 Bit aus 8Bit array

OP #6232151
Hallo,

   ich stehe gerade echt auf dem Schlauch und komme nicht weiter; 
vielleicht könnt Ihr ja etwas Licht in die Sache bringen: ich möchte per 
SPI und DMA ein Display (480x320) beschreiben. Dabei bekomme ich 2 pixel 
in ein Byte (16 Farben). Das ganze möchte ich natürlich gerne in einem 
Rutsch per DMA übertragen. Allerdings hat mein framebuffer eine Größe 
von (480x320)/2 bytes = 76800 bytes, die HAL_SPI_Transmit_DMA Funktion 
kann aber nur eine Größe von size = uint16_t, womit mein Framebuffer zu 
groß ist. Also dachte ich mir, ich mache union für den Framebuffer mit 
einem uint16_t FB16Bit[38400], stelle dann den Bus auf auf 16Bit und 
übertrage das dann per HAL_SPI_Transmit_DMA(&hspi, (uint8_t*)FB16Bit, 
38400);
Allerdings stellt er den Inhalt dann quasi doppelt so groß und gestreift 
dar!?!

Wo ist mein Denkfehler? Funktioniert das so überhaupt?

Vielen Dank schon einmal im Voraus!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.