Implement the SPI driver using DMA.

This commit is contained in:
JF
2020-01-19 19:47:49 +01:00
parent 9dc4e32e36
commit b4bd41cd56
9 changed files with 143 additions and 60 deletions

View File

@@ -38,7 +38,7 @@ void St7789::WriteData(uint8_t data) {
void St7789::WriteSpi(const uint8_t* data, size_t size) {
spi.Write(data, size);
spi.Write(data, size);
}
void St7789::SoftwareReset() {
@@ -95,20 +95,6 @@ void St7789::DisplayOn() {
WriteCommand(static_cast<uint8_t>(Commands::DisplayOn));
}
void St7789::FillRectangle(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint16_t color) {
BeginDrawBuffer(x, y, width, height);
uint32_t c = color + (color << 16);
uint8_t w = width/2;
for(y=height+ST7789_ROW_OFFSET; y>ST7789_ROW_OFFSET; y--) {
for(x=w; x>0; x--) {
NextDrawBuffer(reinterpret_cast<const uint8_t *>(&c), 4);
}
}
EndDrawBuffer();
}
void St7789::SetAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
WriteCommand(static_cast<uint8_t>(Commands::ColumnAddressSet));
WriteData(x0 >> 8);
@@ -160,7 +146,7 @@ void St7789::EndDrawBuffer() {
}
void St7789::NextDrawBuffer(const uint8_t *data, size_t size) {
spi.Write(data, size);
WriteSpi(data, size);
}
void St7789::HardwareReset() {