display poc working
This commit is contained in:
88
Cargo.lock
generated
88
Cargo.lock
generated
@@ -101,6 +101,12 @@ dependencies = [
|
|||||||
"generic-array",
|
"generic-array",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "byte-slice-cast"
|
||||||
|
version = "1.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytemuck"
|
name = "bytemuck"
|
||||||
version = "1.24.0"
|
version = "1.24.0"
|
||||||
@@ -259,6 +265,7 @@ dependencies = [
|
|||||||
"cortex-m",
|
"cortex-m",
|
||||||
"cortex-m-rt",
|
"cortex-m-rt",
|
||||||
"critical-section",
|
"critical-section",
|
||||||
|
"display-interface-spi",
|
||||||
"embassy-embedded-hal",
|
"embassy-embedded-hal",
|
||||||
"embassy-executor",
|
"embassy-executor",
|
||||||
"embassy-futures",
|
"embassy-futures",
|
||||||
@@ -267,8 +274,29 @@ dependencies = [
|
|||||||
"embassy-time",
|
"embassy-time",
|
||||||
"embassy-usb",
|
"embassy-usb",
|
||||||
"embassy-usb-logger",
|
"embassy-usb-logger",
|
||||||
|
"embedded-graphics",
|
||||||
|
"embedded-hal-bus",
|
||||||
"heapless 0.9.2",
|
"heapless 0.9.2",
|
||||||
"log",
|
"log",
|
||||||
|
"mipidsi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "display-interface"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7ba2aab1ef3793e6f7804162debb5ac5edb93b3d650fbcc5aeb72fcd0e6c03a0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "display-interface-spi"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f86b9ec30048b1955da2038fcc3c017f419ab21bb0001879d16c0a3749dc6b7a"
|
||||||
|
dependencies = [
|
||||||
|
"byte-slice-cast",
|
||||||
|
"display-interface",
|
||||||
|
"embedded-hal 1.0.0",
|
||||||
|
"embedded-hal-async",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -497,6 +525,29 @@ dependencies = [
|
|||||||
"log",
|
"log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "embedded-graphics"
|
||||||
|
version = "0.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0649998afacf6d575d126d83e68b78c0ab0e00ca2ac7e9b3db11b4cbe8274ef0"
|
||||||
|
dependencies = [
|
||||||
|
"az",
|
||||||
|
"byteorder",
|
||||||
|
"embedded-graphics-core",
|
||||||
|
"float-cmp",
|
||||||
|
"micromath",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "embedded-graphics-core"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ba9ecd261f991856250d2207f6d8376946cd9f412a2165d3b75bc87a0bc7a044"
|
||||||
|
dependencies = [
|
||||||
|
"az",
|
||||||
|
"byteorder",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "embedded-hal"
|
name = "embedded-hal"
|
||||||
version = "0.2.7"
|
version = "0.2.7"
|
||||||
@@ -522,6 +573,16 @@ dependencies = [
|
|||||||
"embedded-hal 1.0.0",
|
"embedded-hal 1.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "embedded-hal-bus"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "513e0b3a8fb7d3013a8ae17a834283f170deaf7d0eeab0a7c1a36ad4dd356d22"
|
||||||
|
dependencies = [
|
||||||
|
"critical-section",
|
||||||
|
"embedded-hal 1.0.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "embedded-hal-nb"
|
name = "embedded-hal-nb"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
@@ -601,6 +662,15 @@ version = "0.5.7"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
|
checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "float-cmp"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "fnv"
|
name = "fnv"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
@@ -783,6 +853,24 @@ version = "2.7.6"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "micromath"
|
||||||
|
version = "2.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c3c8dda44ff03a2f238717214da50f65d5a53b45cd213a7370424ffdb6fae815"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "mipidsi"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9ba34dcbf61182ffa6992b5a4d9b566d5a99df127fd93f6d314213347329e92f"
|
||||||
|
dependencies = [
|
||||||
|
"embedded-graphics-core",
|
||||||
|
"embedded-hal 1.0.0",
|
||||||
|
"heapless 0.8.0",
|
||||||
|
"nb 1.1.0",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nb"
|
name = "nb"
|
||||||
version = "0.1.3"
|
version = "0.1.3"
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ critical-section = "1.2.0"
|
|||||||
heapless = "0.9.2"
|
heapless = "0.9.2"
|
||||||
|
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
display-interface-spi = "0.5.0"
|
||||||
|
mipidsi = "0.9.0"
|
||||||
|
embedded-hal-bus = "0.3.0"
|
||||||
|
embedded-graphics = "0.8.1"
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
codegen-units = 1
|
codegen-units = 1
|
||||||
|
|||||||
59
src/main.rs
59
src/main.rs
@@ -2,10 +2,24 @@
|
|||||||
#![no_main]
|
#![no_main]
|
||||||
|
|
||||||
use embassy_executor::Spawner;
|
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 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 gpio::{Level, Output};
|
||||||
use log::{error, info};
|
use log::{error, info};
|
||||||
|
use mipidsi::{Builder, interface::SpiInterface, models::ST7789, options::ColorOrder};
|
||||||
|
|
||||||
#[panic_handler]
|
#[panic_handler]
|
||||||
fn panic(info: &core::panic::PanicInfo) -> ! {
|
fn panic(info: &core::panic::PanicInfo) -> ! {
|
||||||
@@ -30,15 +44,44 @@ async fn main(spawner: Spawner) {
|
|||||||
let driver = Driver::new(p.USB, Irqs);
|
let driver = Driver::new(p.USB, Irqs);
|
||||||
spawner.must_spawn(logger_task(driver));
|
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 {
|
loop {
|
||||||
info!("led on!");
|
|
||||||
led.set_high();
|
|
||||||
Timer::after_secs(1).await;
|
|
||||||
|
|
||||||
info!("led off!");
|
|
||||||
led.set_low();
|
|
||||||
Timer::after_secs(1).await;
|
Timer::after_secs(1).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user