diff --git a/src/init/spi_display.rs b/src/init/spi_display.rs index 14d7d90..b6a6f72 100644 --- a/src/init/spi_display.rs +++ b/src/init/spi_display.rs @@ -2,7 +2,7 @@ use embassy_rp::{ Peri, gpio::{Level, Output}, peripherals::SPI0, - spi::{self, Blocking, Spi}, + spi::{self, Async, Spi}, }; use embassy_time::Timer; use embedded_hal_bus::spi::{ExclusiveDevice, NoDelay}; @@ -17,7 +17,7 @@ use static_cell::StaticCell; pub type SPIDisplay = Display< SpiInterface< 'static, - ExclusiveDevice, Output<'static>, NoDelay>, + ExclusiveDevice, Output<'static>, NoDelay>, Output<'static>, >, ST7789, @@ -26,6 +26,7 @@ pub type SPIDisplay = Display< pub async fn init_display( inner: Peri<'static, embassy_rp::peripherals::SPI0>, + dma: Peri<'static, embassy_rp::peripherals::DMA_CH0>, clk: Peri<'static, embassy_rp::peripherals::PIN_6>, mosi: Peri<'static, embassy_rp::peripherals::PIN_7>, cs: Peri<'static, embassy_rp::peripherals::PIN_5>, @@ -35,7 +36,7 @@ pub async fn init_display( let mut spi_cfg = spi::Config::default(); spi_cfg.frequency = 62_500_000; - let spi = Spi::new_blocking_txonly(inner, clk, mosi, spi_cfg); + let spi = Spi::new_txonly(inner, clk, mosi, dma, spi_cfg); let cs_display = Output::new(cs, Level::Low); let dc_display = Output::new(dc, Level::Low); diff --git a/src/main.rs b/src/main.rs index db26640..aa5c0c0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,8 +32,10 @@ async fn main(spawner: Spawner) { return; }; - let Ok(display) = - init::spi_display::init_display(p.SPI0, p.PIN_6, p.PIN_7, p.PIN_5, p.PIN_9, p.PIN_10).await + let Ok(display) = init::spi_display::init_display( + p.SPI0, p.DMA_CH0, p.PIN_6, p.PIN_7, p.PIN_5, p.PIN_9, p.PIN_10, + ) + .await else { error!("Failed to init display");