display poc working
This commit is contained in:
59
src/main.rs
59
src/main.rs
@@ -2,10 +2,24 @@
|
||||
#![no_main]
|
||||
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_rp::{bind_interrupts, gpio, peripherals::USB, usb::Driver};
|
||||
use embassy_rp::{
|
||||
bind_interrupts, gpio,
|
||||
peripherals::USB,
|
||||
spi::{self, Spi},
|
||||
usb::Driver,
|
||||
};
|
||||
use embassy_time::Timer;
|
||||
use embedded_graphics::{
|
||||
mono_font::{MonoTextStyle, iso_8859_1::FONT_10X20},
|
||||
pixelcolor::{BinaryColor, Rgb565, Rgb666},
|
||||
prelude::{Point, *},
|
||||
primitives::{Circle, PrimitiveStyle},
|
||||
text::Text,
|
||||
};
|
||||
use embedded_hal_bus::spi::ExclusiveDevice;
|
||||
use gpio::{Level, Output};
|
||||
use log::{error, info};
|
||||
use mipidsi::{Builder, interface::SpiInterface, models::ST7789, options::ColorOrder};
|
||||
|
||||
#[panic_handler]
|
||||
fn panic(info: &core::panic::PanicInfo) -> ! {
|
||||
@@ -30,15 +44,44 @@ async fn main(spawner: Spawner) {
|
||||
let driver = Driver::new(p.USB, Irqs);
|
||||
spawner.must_spawn(logger_task(driver));
|
||||
|
||||
let mut led = Output::new(p.PIN_25, Level::Low);
|
||||
let mut spi_cfg = spi::Config::default();
|
||||
spi_cfg.frequency = 62_500_000;
|
||||
|
||||
let inner = p.SPI0;
|
||||
let clk = p.PIN_18;
|
||||
let mosi = p.PIN_19;
|
||||
let cs = p.PIN_17;
|
||||
let dc = p.PIN_16;
|
||||
let rst = p.PIN_15;
|
||||
|
||||
let spi = Spi::new_blocking_txonly(inner, clk, mosi, spi_cfg);
|
||||
// let spi = Spi::new_txonly(inner, clk, mosi, p.DMA_CH0, spi_cfg);
|
||||
let cs_display = Output::new(cs, Level::Low);
|
||||
let dc_display = Output::new(dc, Level::Low);
|
||||
let mut rst_display = Output::new(rst, Level::Low);
|
||||
|
||||
rst_display.set_low();
|
||||
Timer::after_millis(10).await;
|
||||
rst_display.set_high();
|
||||
Timer::after_millis(120).await;
|
||||
|
||||
let spi_dev = ExclusiveDevice::new_no_delay(spi, cs_display).unwrap();
|
||||
|
||||
let mut buffer = [0u8; 512];
|
||||
let di = SpiInterface::new(spi_dev, dc_display, &mut buffer);
|
||||
|
||||
let mut display = Builder::new(ST7789, di)
|
||||
.display_size(240, 320)
|
||||
.init(&mut embassy_time::Delay)
|
||||
.unwrap();
|
||||
|
||||
display.clear(Rgb565::BLACK).unwrap();
|
||||
Circle::new(Point::new(70, 100), 80)
|
||||
.into_styled(PrimitiveStyle::with_fill(Rgb565::RED))
|
||||
.draw(&mut display)
|
||||
.unwrap();
|
||||
|
||||
loop {
|
||||
info!("led on!");
|
||||
led.set_high();
|
||||
Timer::after_secs(1).await;
|
||||
|
||||
info!("led off!");
|
||||
led.set_low();
|
||||
Timer::after_secs(1).await;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user