aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2025-10-28 14:38:02 +0100
committerUlf Lilleengen <[email protected]>2025-10-28 14:38:02 +0100
commit83deef3672c651ac86e7ad497eccc52119b3a27f (patch)
treefd74ec796d6308e0becceb0760b4aa36715d487b
parent76dd202f6549a8068af17481734407bcbfa81d71 (diff)
chore: simplify spim example to be testable on devkit
-rw-r--r--examples/nrf54l15/src/bin/spim.rs70
1 files changed, 14 insertions, 56 deletions
diff --git a/examples/nrf54l15/src/bin/spim.rs b/examples/nrf54l15/src/bin/spim.rs
index 0520bf08c..3f5980647 100644
--- a/examples/nrf54l15/src/bin/spim.rs
+++ b/examples/nrf54l15/src/bin/spim.rs
@@ -1,9 +1,7 @@
1#![no_std] 1#![no_std]
2#![no_main] 2#![no_main]
3 3
4use defmt::{info, unwrap};
5use embassy_executor::Spawner; 4use embassy_executor::Spawner;
6use embassy_nrf::gpio::{Level, Output, OutputDrive};
7use embassy_nrf::{bind_interrupts, peripherals, spim}; 5use embassy_nrf::{bind_interrupts, peripherals, spim};
8use {defmt_rtt as _, panic_probe as _}; 6use {defmt_rtt as _, panic_probe as _};
9 7
@@ -14,59 +12,19 @@ bind_interrupts!(struct Irqs {
14#[embassy_executor::main] 12#[embassy_executor::main]
15async fn main(_spawner: Spawner) { 13async fn main(_spawner: Spawner) {
16 let p = embassy_nrf::init(Default::default()); 14 let p = embassy_nrf::init(Default::default());
17 info!("running!");
18
19 let mut config = spim::Config::default(); 15 let mut config = spim::Config::default();
20 config.frequency = spim::Frequency::M16; 16 config.frequency = spim::Frequency::M32;
21 17 let mut spim = spim::Spim::new(p.SERIAL00, Irqs, p.P2_05, p.P2_09, p.P2_08, config.clone());
22 let mut spim = spim::Spim::new(p.SERIAL00, Irqs, p.P0_01, p.P0_00, p.P0_02, config); 18 let data = [
23 19 0x42, 0x43, 0x44, 0x45, 0x66, 0x12, 0x23, 0x34, 0x45, 0x19, 0x91, 0xaa, 0xff, 0xa5, 0x5a, 0x77,
24 // Example on how to talk to an ADXL343 20 ];
25 21 let mut buf = [0u8; 16];
26 let mut ncs = Output::new(p.P0_03, Level::High, OutputDrive::Standard); 22
27 23 buf.fill(0);
28 // Example on how to talk to an ENC28J60 chip 24 spim.blocking_transfer(&mut buf, &data).unwrap();
29 25 assert_eq!(data, buf);
30 // softreset 26
31 cortex_m::asm::delay(10); 27 buf.fill(0);
32 ncs.set_low(); 28 spim.transfer(&mut buf, &data).await.unwrap();
33 cortex_m::asm::delay(5); 29 assert_eq!(data, buf);
34 let tx = [0xFF];
35 unwrap!(spim.transfer(&mut [], &tx).await);
36 cortex_m::asm::delay(10);
37 ncs.set_high();
38
39 cortex_m::asm::delay(100000);
40
41 let mut rx = [0; 2];
42
43 // read ESTAT
44 cortex_m::asm::delay(5000);
45 ncs.set_low();
46 cortex_m::asm::delay(5000);
47 let tx = [0b000_11101, 0];
48 unwrap!(spim.transfer(&mut rx, &tx).await);
49 cortex_m::asm::delay(5000);
50 ncs.set_high();
51 info!("estat: {=[?]}", rx);
52
53 // Switch to bank 3
54 cortex_m::asm::delay(10);
55 ncs.set_low();
56 cortex_m::asm::delay(5);
57 let tx = [0b100_11111, 0b11];
58 unwrap!(spim.transfer(&mut rx, &tx).await);
59 cortex_m::asm::delay(10);
60 ncs.set_high();
61
62 // read EREVID
63 cortex_m::asm::delay(10);
64 ncs.set_low();
65 cortex_m::asm::delay(5);
66 let tx = [0b000_10010, 0];
67 unwrap!(spim.transfer(&mut rx, &tx).await);
68 cortex_m::asm::delay(10);
69 ncs.set_high();
70
71 info!("erevid: {=[?]}", rx);
72} 30}