diff options
Diffstat (limited to 'examples/nrf52840/src/bin')
| -rw-r--r-- | examples/nrf52840/src/bin/qspi.rs | 15 | ||||
| -rw-r--r-- | examples/nrf52840/src/bin/qspi_lowpower.rs | 5 |
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 | ||
| 5 | use defmt::{assert_eq, info, unwrap}; | 5 | use defmt::{assert_eq, info, unwrap}; |
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_nrf::qspi::Frequency; | ||
| 7 | use embassy_nrf::{interrupt, qspi}; | 8 | use embassy_nrf::{interrupt, qspi}; |
| 8 | use {defmt_rtt as _, panic_probe as _}; | 9 | use {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 | ||
| 7 | use defmt::{info, unwrap}; | 7 | use defmt::{info, unwrap}; |
| 8 | use embassy_executor::Spawner; | 8 | use embassy_executor::Spawner; |
| 9 | use embassy_nrf::qspi::Frequency; | ||
| 9 | use embassy_nrf::{interrupt, qspi}; | 10 | use embassy_nrf::{interrupt, qspi}; |
| 10 | use embassy_time::{Duration, Timer}; | 11 | use embassy_time::{Duration, Timer}; |
| 11 | use {defmt_rtt as _, panic_probe as _}; | 12 | use {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, |
