From e78d226acd5e2dc5f2eecfc98269747daf7e0633 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Fri, 22 Oct 2021 02:09:55 +0200 Subject: nrf: add NVMC driver. --- examples/nrf/src/bin/nvmc.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 examples/nrf/src/bin/nvmc.rs (limited to 'examples/nrf/src') diff --git a/examples/nrf/src/bin/nvmc.rs b/examples/nrf/src/bin/nvmc.rs new file mode 100644 index 000000000..f36895636 --- /dev/null +++ b/examples/nrf/src/bin/nvmc.rs @@ -0,0 +1,44 @@ +#![no_std] +#![no_main] +#![feature(type_alias_impl_trait)] + +#[path = "../example_common.rs"] +mod example_common; +use embassy::executor::Spawner; +use embassy::time::{Duration, Timer}; +use embassy_nrf::nvmc::Nvmc; +use embassy_nrf::Peripherals; +use embedded_storage::nor_flash::{NorFlash, ReadNorFlash}; +use example_common::*; + +#[embassy::main] +async fn main(_spawner: Spawner, p: Peripherals) { + info!("Hello NVMC!"); + + // probe-run breaks without this, I'm not sure why. + Timer::after(Duration::from_secs(1)).await; + + let mut f = Nvmc::new(p.NVMC); + const ADDR: u32 = 0x80000; + + info!("Reading..."); + let mut buf = [0u8; 4]; + unwrap!(f.read(ADDR, &mut buf)); + info!("Read: {=[u8]:x}", buf); + + info!("Erasing..."); + unwrap!(f.erase(ADDR, ADDR + 4096)); + + info!("Reading..."); + let mut buf = [0u8; 4]; + unwrap!(f.read(ADDR, &mut buf)); + info!("Read: {=[u8]:x}", buf); + + info!("Writing..."); + unwrap!(f.write(ADDR, &[1, 2, 3, 4])); + + info!("Reading..."); + let mut buf = [0u8; 4]; + unwrap!(f.read(ADDR, &mut buf)); + info!("Read: {=[u8]:x}", buf); +} -- cgit