aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/mimxrt6/Cargo.toml2
-rw-r--r--examples/mimxrt6/src/bin/spi-async.rs35
-rw-r--r--examples/mimxrt6/src/bin/spi.rs51
-rw-r--r--examples/std/src/bin/net_ppp.rs9
4 files changed, 93 insertions, 4 deletions
diff --git a/examples/mimxrt6/Cargo.toml b/examples/mimxrt6/Cargo.toml
index dc09e97e7..ada112833 100644
--- a/examples/mimxrt6/Cargo.toml
+++ b/examples/mimxrt6/Cargo.toml
@@ -21,6 +21,8 @@ embedded-hal-async = "1.0.0"
21 21
22mimxrt600-fcb = "0.2.2" 22mimxrt600-fcb = "0.2.2"
23panic-probe = { version = "1.0.0", features = ["print-defmt"] } 23panic-probe = { version = "1.0.0", features = ["print-defmt"] }
24embedded-hal-bus = "0.3.0"
25is31fl3743b-driver = { version = "0.1.1", features = ["is_blocking"] }
24 26
25# cargo build/run 27# cargo build/run
26[profile.dev] 28[profile.dev]
diff --git a/examples/mimxrt6/src/bin/spi-async.rs b/examples/mimxrt6/src/bin/spi-async.rs
new file mode 100644
index 000000000..aa56f7c42
--- /dev/null
+++ b/examples/mimxrt6/src/bin/spi-async.rs
@@ -0,0 +1,35 @@
1#![no_std]
2#![no_main]
3
4use defmt::info;
5use embassy_executor::Spawner;
6use embassy_imxrt::bind_interrupts;
7use embassy_imxrt::flexcomm::spi::{InterruptHandler, Spi};
8use embassy_imxrt::peripherals::FLEXCOMM5;
9use {defmt_rtt as _, embassy_imxrt_examples as _, panic_probe as _};
10
11bind_interrupts!(struct Irqs {
12 FLEXCOMM5 => InterruptHandler<FLEXCOMM5>;
13});
14
15const BUFLEN: usize = 1024;
16
17#[embassy_executor::main]
18async fn main(_spawner: Spawner) {
19 let p = embassy_imxrt::init(Default::default());
20
21 info!("Initializing SPI");
22
23 let mut spi = Spi::new_async(p.FLEXCOMM5, p.PIO1_3, p.PIO1_5, p.PIO1_4, Irqs, Default::default());
24
25 let mut rxbuf = [0x55; BUFLEN];
26 let txbuf = [0xaa; BUFLEN];
27
28 for _ in 0..10 {
29 spi.async_transfer(&mut rxbuf, &txbuf).await.unwrap();
30 assert!(rxbuf.iter().all(|b| *b == 0xaa));
31 rxbuf.fill(0x55);
32 }
33
34 info!("SPI transfers succeeded");
35}
diff --git a/examples/mimxrt6/src/bin/spi.rs b/examples/mimxrt6/src/bin/spi.rs
new file mode 100644
index 000000000..4854432e8
--- /dev/null
+++ b/examples/mimxrt6/src/bin/spi.rs
@@ -0,0 +1,51 @@
1#![no_std]
2#![no_main]
3
4use defmt::info;
5use embassy_executor::Spawner;
6use embassy_imxrt::flexcomm::spi::Spi;
7use embassy_imxrt::gpio;
8use embassy_time::{Delay, Timer};
9use embedded_hal_bus::spi::ExclusiveDevice;
10use is31fl3743b_driver::{CSy, Is31fl3743b, SWx};
11use {defmt_rtt as _, embassy_imxrt_examples as _, panic_probe as _};
12
13#[embassy_executor::main]
14async fn main(_spawner: Spawner) {
15 let p = embassy_imxrt::init(Default::default());
16
17 info!("Initializing SPI");
18
19 let cs = gpio::Output::new(
20 p.PIO1_6,
21 gpio::Level::Low,
22 gpio::DriveMode::PushPull,
23 gpio::DriveStrength::Normal,
24 gpio::SlewRate::Standard,
25 );
26
27 let spi = Spi::new_blocking(p.FLEXCOMM5, p.PIO1_3, p.PIO1_5, p.PIO1_4, Default::default());
28 let delay = Delay;
29
30 // One SPI device only on the SPI bus
31 let spi_dev = ExclusiveDevice::new(spi, cs, delay).unwrap();
32
33 // Instantiate IS31FL3743B device
34 let mut driver = Is31fl3743b::new(spi_dev).unwrap();
35
36 // Enable phase delay to help reduce power noise
37 let _ = driver.enable_phase_delay();
38 // Set global current, check method documentation for more info
39 let _ = driver.set_global_current(90);
40
41 let _ = driver.set_led_peak_current_bulk(SWx::SW1, CSy::CS1, &[100; 11 * 18]);
42
43 // Driver is fully set up, we can now start turning on LEDs!
44 // Create a white breathing effect
45 loop {
46 for brightness in (0..=255_u8).chain((0..=255).rev()) {
47 let _ = driver.set_led_brightness_bulk(SWx::SW1, CSy::CS1, &[brightness; 11 * 18]);
48 Timer::after_micros(1).await;
49 }
50 }
51}
diff --git a/examples/std/src/bin/net_ppp.rs b/examples/std/src/bin/net_ppp.rs
index 82272c798..685dbf3d3 100644
--- a/examples/std/src/bin/net_ppp.rs
+++ b/examples/std/src/bin/net_ppp.rs
@@ -52,7 +52,7 @@ async fn ppp_task(stack: Stack<'static>, mut runner: Runner<'static>, port: Seri
52 password: b"mypass", 52 password: b"mypass",
53 }; 53 };
54 54
55 runner 55 let r = runner
56 .run(port, config, |ipv4| { 56 .run(port, config, |ipv4| {
57 let Some(addr) = ipv4.address else { 57 let Some(addr) = ipv4.address else {
58 warn!("PPP did not provide an IP address."); 58 warn!("PPP did not provide an IP address.");
@@ -69,9 +69,10 @@ async fn ppp_task(stack: Stack<'static>, mut runner: Runner<'static>, port: Seri
69 }); 69 });
70 stack.set_config_v4(config); 70 stack.set_config_v4(config);
71 }) 71 })
72 .await 72 .await;
73 .unwrap(); 73 match r {
74 unreachable!() 74 Err(e) => panic!("{:?}", e),
75 }
75} 76}
76 77
77#[embassy_executor::task] 78#[embassy_executor::task]