aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-09-01 13:52:47 +0000
committerGitHub <[email protected]>2022-09-01 13:52:47 +0000
commit835b69456d6a270e6d5c869da46c0df30fe54254 (patch)
tree1633bef46e753c6023c79dac1aa6ba817614e4bb /examples
parent838f3065ea1ecc68f4db8ceb2fea0026df4f6ff8 (diff)
parentefe456ab1414a19a4e0469a6bb7686a04029a44b (diff)
Merge #933
933: embassy-rp: Add async SPI r=Dirbaio a=kalkyl Co-authored-by: Henrik Alsér <[email protected]> Co-authored-by: Henrik Alsér <[email protected]>
Diffstat (limited to 'examples')
-rw-r--r--examples/rp/src/bin/spi.rs2
-rw-r--r--examples/rp/src/bin/spi_async.rs29
-rw-r--r--examples/rp/src/bin/spi_display.rs5
3 files changed, 33 insertions, 3 deletions
diff --git a/examples/rp/src/bin/spi.rs b/examples/rp/src/bin/spi.rs
index 88003ee17..a830a17a2 100644
--- a/examples/rp/src/bin/spi.rs
+++ b/examples/rp/src/bin/spi.rs
@@ -24,7 +24,7 @@ async fn main(_spawner: Spawner) {
24 // create SPI 24 // create SPI
25 let mut config = spi::Config::default(); 25 let mut config = spi::Config::default();
26 config.frequency = 2_000_000; 26 config.frequency = 2_000_000;
27 let mut spi = Spi::new(p.SPI1, clk, mosi, miso, config); 27 let mut spi = Spi::new_blocking(p.SPI1, clk, mosi, miso, config);
28 28
29 // Configure CS 29 // Configure CS
30 let mut cs = Output::new(touch_cs, Level::Low); 30 let mut cs = Output::new(touch_cs, Level::Low);
diff --git a/examples/rp/src/bin/spi_async.rs b/examples/rp/src/bin/spi_async.rs
new file mode 100644
index 000000000..671a9caaf
--- /dev/null
+++ b/examples/rp/src/bin/spi_async.rs
@@ -0,0 +1,29 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5use defmt::*;
6use embassy_executor::Spawner;
7use embassy_rp::spi::{Config, Spi};
8use embassy_time::{Duration, Timer};
9use {defmt_rtt as _, panic_probe as _};
10
11#[embassy_executor::main]
12async fn main(_spawner: Spawner) {
13 let p = embassy_rp::init(Default::default());
14 info!("Hello World!");
15
16 let miso = p.PIN_12;
17 let mosi = p.PIN_11;
18 let clk = p.PIN_10;
19
20 let mut spi = Spi::new(p.SPI1, clk, mosi, miso, p.DMA_CH0, p.DMA_CH1, Config::default());
21
22 loop {
23 let tx_buf = [1_u8, 2, 3, 4, 5, 6];
24 let mut rx_buf = [0_u8; 6];
25 spi.transfer(&mut rx_buf, &tx_buf).await.unwrap();
26 info!("{:?}", rx_buf);
27 Timer::after(Duration::from_secs(1)).await;
28 }
29}
diff --git a/examples/rp/src/bin/spi_display.rs b/examples/rp/src/bin/spi_display.rs
index f0e54d87f..23cd4355e 100644
--- a/examples/rp/src/bin/spi_display.rs
+++ b/examples/rp/src/bin/spi_display.rs
@@ -8,7 +8,7 @@ use defmt::*;
8use embassy_executor::Spawner; 8use embassy_executor::Spawner;
9use embassy_rp::gpio::{Level, Output}; 9use embassy_rp::gpio::{Level, Output};
10use embassy_rp::spi; 10use embassy_rp::spi;
11use embassy_rp::spi::Spi; 11use embassy_rp::spi::{Blocking, Spi};
12use embassy_time::Delay; 12use embassy_time::Delay;
13use embedded_graphics::image::{Image, ImageRawLE}; 13use embedded_graphics::image::{Image, ImageRawLE};
14use embedded_graphics::mono_font::ascii::FONT_10X20; 14use embedded_graphics::mono_font::ascii::FONT_10X20;
@@ -48,7 +48,8 @@ async fn main(_spawner: Spawner) {
48 config.phase = spi::Phase::CaptureOnSecondTransition; 48 config.phase = spi::Phase::CaptureOnSecondTransition;
49 config.polarity = spi::Polarity::IdleHigh; 49 config.polarity = spi::Polarity::IdleHigh;
50 50
51 let spi_bus = RefCell::new(Spi::new(p.SPI1, clk, mosi, miso, config)); 51 let spi: Spi<'_, _, Blocking> = Spi::new_blocking(p.SPI1, clk, mosi, miso, config);
52 let spi_bus = RefCell::new(spi);
52 53
53 let display_spi = SpiDeviceWithCs::new(&spi_bus, Output::new(display_cs, Level::High)); 54 let display_spi = SpiDeviceWithCs::new(&spi_bus, Output::new(display_cs, Level::High));
54 let touch_spi = SpiDeviceWithCs::new(&spi_bus, Output::new(touch_cs, Level::High)); 55 let touch_spi = SpiDeviceWithCs::new(&spi_bus, Output::new(touch_cs, Level::High));