aboutsummaryrefslogtreecommitdiff
path: root/examples/nrf54l15/src/bin/nvmc.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/nrf54l15/src/bin/nvmc.rs')
-rw-r--r--examples/nrf54l15/src/bin/nvmc.rs44
1 files changed, 44 insertions, 0 deletions
diff --git a/examples/nrf54l15/src/bin/nvmc.rs b/examples/nrf54l15/src/bin/nvmc.rs
new file mode 100644
index 000000000..f990604cd
--- /dev/null
+++ b/examples/nrf54l15/src/bin/nvmc.rs
@@ -0,0 +1,44 @@
1#![no_std]
2#![no_main]
3
4use defmt::{info, unwrap};
5use embassy_executor::Spawner;
6use embassy_nrf::nvmc::{Nvmc, PAGE_SIZE};
7use embedded_storage::nor_flash::{NorFlash, ReadNorFlash};
8use {defmt_rtt as _, panic_probe as _};
9
10#[embassy_executor::main]
11async fn main(_spawner: Spawner) {
12 let p = embassy_nrf::init(Default::default());
13 info!("Hello RRAMC NVMC!");
14
15 let mut f = Nvmc::new(p.RRAMC);
16
17 const ADDR: u32 = 0x80000;
18 let mut buf = [0u8; 4];
19
20 info!("Reading...");
21 unwrap!(f.read(ADDR, &mut buf));
22 info!("Read: {=[u8]:x}", buf);
23
24 info!("Erasing...");
25 unwrap!(f.erase(ADDR, ADDR + PAGE_SIZE as u32));
26
27 info!("Reading...");
28 unwrap!(f.read(ADDR, &mut buf));
29 info!("Read: {=[u8]:x}", buf);
30
31 info!("Writing...");
32 // 16 B (128-bit) write minimum
33 let out: [u8; 16] = [
34 0xaa, 0xaa, 0xaa, 0xaa, 0xbb, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xcc, 0xcc, 0xdd, 0xdd, 0xdd, 0xdd,
35 ];
36 unwrap!(f.write(ADDR, &out));
37
38 info!("Reading...");
39 // Can read arbitrary sizes
40 for addr in (ADDR..ADDR + 16).step_by(4) {
41 unwrap!(f.read(addr, &mut buf));
42 info!("Read: {=[u8]:x}", buf);
43 }
44}