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!
Gast
#6232166
Was spricht dagegen den DMA Transfern nach 38400 nochmals zu starten und die restlichen 38400 zu senden? Das kostet kaum Zeit....
Moin, da spricht eigentlich gar nichts gegen, ich würde es nur einfach gerne verstehen ;-)
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.