32 lines
581 B
C++
32 lines
581 B
C++
#include "lcd_dma.h"
|
|
|
|
#define SDRAM_BASE ((uint32_t)0xC0000000)
|
|
|
|
LcdDma &LcdDma::instance()
|
|
{
|
|
static LcdDma dma;
|
|
return dma;
|
|
}
|
|
|
|
RetCode LcdDma::init()
|
|
{
|
|
if (initialized_) {
|
|
return RET_OK;
|
|
}
|
|
|
|
buffer_ = (uint16_t *)(SDRAM_BASE + LCD_DMA_BUFFER_OFFSET);
|
|
initialized_ = true;
|
|
return RET_OK;
|
|
}
|
|
|
|
void LcdDma::fillBuffer(uint16_t color)
|
|
{
|
|
uint32_t *dst = (uint32_t *)buffer_;
|
|
uint32_t count32 = LCD_DMA_PIXELS / 2;
|
|
uint32_t c32 = ((uint32_t)color << 16) | color;
|
|
|
|
for (uint32_t i = 0; i < count32; i++) {
|
|
dst[i] = c32;
|
|
}
|
|
}
|