aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-03-05 03:19:11 +0100
committerGitHub <[email protected]>2023-03-05 03:19:11 +0100
commitbf013be9ba51c50ff6ad16b38dede08387b4e117 (patch)
treec46141ee3f07f011bd74e90a7990a15c9fccc72d /examples
parentd91efe3e6252336a6e226700ca72afef2e13abc0 (diff)
parentf7dfc49c5c40d70852d6d3c7313973adf97e4716 (diff)
Merge pull request #1232 from embassy-rs/nrf-qspi-fixes
nrf/qspi: nrf53 support, u32 addrs, remove const generic, add raw read/write.
Diffstat (limited to 'examples')
-rw-r--r--examples/nrf52840/src/bin/qspi.rs15
-rw-r--r--examples/nrf52840/src/bin/qspi_lowpower.rs5
2 files changed, 13 insertions, 7 deletions
diff --git a/examples/nrf52840/src/bin/qspi.rs b/examples/nrf52840/src/bin/qspi.rs
index bdcf710b8..21a10940d 100644
--- a/examples/nrf52840/src/bin/qspi.rs
+++ b/examples/nrf52840/src/bin/qspi.rs
@@ -4,6 +4,7 @@
4 4
5use defmt::{assert_eq, info, unwrap}; 5use defmt::{assert_eq, info, unwrap};
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_nrf::qspi::Frequency;
7use embassy_nrf::{interrupt, qspi}; 8use embassy_nrf::{interrupt, qspi};
8use {defmt_rtt as _, panic_probe as _}; 9use {defmt_rtt as _, panic_probe as _};
9 10
@@ -19,12 +20,14 @@ async fn main(_spawner: Spawner) {
19 let p = embassy_nrf::init(Default::default()); 20 let p = embassy_nrf::init(Default::default());
20 // Config for the MX25R64 present in the nRF52840 DK 21 // Config for the MX25R64 present in the nRF52840 DK
21 let mut config = qspi::Config::default(); 22 let mut config = qspi::Config::default();
23 config.capacity = 8 * 1024 * 1024; // 8 MB
24 config.frequency = Frequency::M32;
22 config.read_opcode = qspi::ReadOpcode::READ4IO; 25 config.read_opcode = qspi::ReadOpcode::READ4IO;
23 config.write_opcode = qspi::WriteOpcode::PP4IO; 26 config.write_opcode = qspi::WriteOpcode::PP4IO;
24 config.write_page_size = qspi::WritePageSize::_256BYTES; 27 config.write_page_size = qspi::WritePageSize::_256BYTES;
25 28
26 let irq = interrupt::take!(QSPI); 29 let irq = interrupt::take!(QSPI);
27 let mut q: qspi::Qspi<_, 67108864> = qspi::Qspi::new( 30 let mut q = qspi::Qspi::new(
28 p.QSPI, irq, p.P0_19, p.P0_17, p.P0_20, p.P0_21, p.P0_22, p.P0_23, config, 31 p.QSPI, irq, p.P0_19, p.P0_17, p.P0_20, p.P0_21, p.P0_22, p.P0_23, config,
29 ); 32 );
30 33
@@ -52,23 +55,23 @@ async fn main(_spawner: Spawner) {
52 55
53 for i in 0..8 { 56 for i in 0..8 {
54 info!("page {:?}: erasing... ", i); 57 info!("page {:?}: erasing... ", i);
55 unwrap!(q.erase(i * PAGE_SIZE).await); 58 unwrap!(q.erase(i * PAGE_SIZE as u32).await);
56 59
57 for j in 0..PAGE_SIZE { 60 for j in 0..PAGE_SIZE {
58 buf.0[j] = pattern((j + i * PAGE_SIZE) as u32); 61 buf.0[j] = pattern((j as u32 + i * PAGE_SIZE as u32) as u32);
59 } 62 }
60 63
61 info!("programming..."); 64 info!("programming...");
62 unwrap!(q.write(i * PAGE_SIZE, &buf.0).await); 65 unwrap!(q.write(i * PAGE_SIZE as u32, &buf.0).await);
63 } 66 }
64 67
65 for i in 0..8 { 68 for i in 0..8 {
66 info!("page {:?}: reading... ", i); 69 info!("page {:?}: reading... ", i);
67 unwrap!(q.read(i * PAGE_SIZE, &mut buf.0).await); 70 unwrap!(q.read(i * PAGE_SIZE as u32, &mut buf.0).await);
68 71
69 info!("verifying..."); 72 info!("verifying...");
70 for j in 0..PAGE_SIZE { 73 for j in 0..PAGE_SIZE {
71 assert_eq!(buf.0[j], pattern((j + i * PAGE_SIZE) as u32)); 74 assert_eq!(buf.0[j], pattern((j as u32 + i * PAGE_SIZE as u32) as u32));
72 } 75 }
73 } 76 }
74 77
diff --git a/examples/nrf52840/src/bin/qspi_lowpower.rs b/examples/nrf52840/src/bin/qspi_lowpower.rs
index 9341a2376..20c903914 100644
--- a/examples/nrf52840/src/bin/qspi_lowpower.rs
+++ b/examples/nrf52840/src/bin/qspi_lowpower.rs
@@ -6,6 +6,7 @@ use core::mem;
6 6
7use defmt::{info, unwrap}; 7use defmt::{info, unwrap};
8use embassy_executor::Spawner; 8use embassy_executor::Spawner;
9use embassy_nrf::qspi::Frequency;
9use embassy_nrf::{interrupt, qspi}; 10use embassy_nrf::{interrupt, qspi};
10use embassy_time::{Duration, Timer}; 11use embassy_time::{Duration, Timer};
11use {defmt_rtt as _, panic_probe as _}; 12use {defmt_rtt as _, panic_probe as _};
@@ -23,6 +24,8 @@ async fn main(_p: Spawner) {
23 loop { 24 loop {
24 // Config for the MX25R64 present in the nRF52840 DK 25 // Config for the MX25R64 present in the nRF52840 DK
25 let mut config = qspi::Config::default(); 26 let mut config = qspi::Config::default();
27 config.capacity = 8 * 1024 * 1024; // 8 MB
28 config.frequency = Frequency::M32;
26 config.read_opcode = qspi::ReadOpcode::READ4IO; 29 config.read_opcode = qspi::ReadOpcode::READ4IO;
27 config.write_opcode = qspi::WriteOpcode::PP4IO; 30 config.write_opcode = qspi::WriteOpcode::PP4IO;
28 config.write_page_size = qspi::WritePageSize::_256BYTES; 31 config.write_page_size = qspi::WritePageSize::_256BYTES;
@@ -31,7 +34,7 @@ async fn main(_p: Spawner) {
31 exit_time: 3, // tRDP = 35uS 34 exit_time: 3, // tRDP = 35uS
32 }); 35 });
33 36
34 let mut q: qspi::Qspi<_, 67108864> = qspi::Qspi::new( 37 let mut q = qspi::Qspi::new(
35 &mut p.QSPI, 38 &mut p.QSPI,
36 &mut irq, 39 &mut irq,
37 &mut p.P0_19, 40 &mut p.P0_19,