jaretburkett / ILI9488

Arduino Library for the ILI9488 TFT controller for 4 wire SPI
82 stars 40 forks source link

How to enable DMA on STM32F767zi? #15

Open jc78 opened 4 years ago

jc78 commented 4 years ago

I'm using an ST Nucleo 144 (STM32F767zi) and ILI9488 display and want to enable DMA for faster drawing.

The only way I can see DMA working is if STM32F1 is defined. defining that value doesn't seem to turn on DMA. I looked for all of the places in ILI9488.cpp where DMA could be used and forced it to use those functions, like SPI.dmaSend();, but I'm receiving compile errors stating that the SPI library doesn't have dmaSend:

.pio\libdeps\nucleo_f767zi\ILI9488_ID4667\ILI9488.cpp: In member function 'void ILI9488::drawImage(const uint8_t*, uint16_t, uint16_t, uint16_t, uint16_t)':
.pio\libdeps\nucleo_f767zi\ILI9488_ID4667\ILI9488.cpp:542:9: error: 'class SPIClass' has no member named 'dmaSend'
  542 |     SPI.dmaSend(linebuff, w*3);

Am I possibly using the wrong SPI library? or have I encountered an untested board\situation?

The library works for me without DMA, but of course I'd like DMA turned on for a better user experience.