Merge pull request #1232 from embassy-rs/nrf-qspi-fixes
nrf/qspi: nrf53 support, u32 addrs, remove const generic, add raw read/write.
This commit is contained in:
@ -4,6 +4,7 @@
|
||||
|
||||
use defmt::{assert_eq, info, unwrap};
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_nrf::qspi::Frequency;
|
||||
use embassy_nrf::{interrupt, qspi};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
|
||||
@ -19,12 +20,14 @@ async fn main(_spawner: Spawner) {
|
||||
let p = embassy_nrf::init(Default::default());
|
||||
// Config for the MX25R64 present in the nRF52840 DK
|
||||
let mut config = qspi::Config::default();
|
||||
config.capacity = 8 * 1024 * 1024; // 8 MB
|
||||
config.frequency = Frequency::M32;
|
||||
config.read_opcode = qspi::ReadOpcode::READ4IO;
|
||||
config.write_opcode = qspi::WriteOpcode::PP4IO;
|
||||
config.write_page_size = qspi::WritePageSize::_256BYTES;
|
||||
|
||||
let irq = interrupt::take!(QSPI);
|
||||
let mut q: qspi::Qspi<_, 67108864> = qspi::Qspi::new(
|
||||
let mut q = qspi::Qspi::new(
|
||||
p.QSPI, irq, p.P0_19, p.P0_17, p.P0_20, p.P0_21, p.P0_22, p.P0_23, config,
|
||||
);
|
||||
|
||||
@ -52,23 +55,23 @@ async fn main(_spawner: Spawner) {
|
||||
|
||||
for i in 0..8 {
|
||||
info!("page {:?}: erasing... ", i);
|
||||
unwrap!(q.erase(i * PAGE_SIZE).await);
|
||||
unwrap!(q.erase(i * PAGE_SIZE as u32).await);
|
||||
|
||||
for j in 0..PAGE_SIZE {
|
||||
buf.0[j] = pattern((j + i * PAGE_SIZE) as u32);
|
||||
buf.0[j] = pattern((j as u32 + i * PAGE_SIZE as u32) as u32);
|
||||
}
|
||||
|
||||
info!("programming...");
|
||||
unwrap!(q.write(i * PAGE_SIZE, &buf.0).await);
|
||||
unwrap!(q.write(i * PAGE_SIZE as u32, &buf.0).await);
|
||||
}
|
||||
|
||||
for i in 0..8 {
|
||||
info!("page {:?}: reading... ", i);
|
||||
unwrap!(q.read(i * PAGE_SIZE, &mut buf.0).await);
|
||||
unwrap!(q.read(i * PAGE_SIZE as u32, &mut buf.0).await);
|
||||
|
||||
info!("verifying...");
|
||||
for j in 0..PAGE_SIZE {
|
||||
assert_eq!(buf.0[j], pattern((j + i * PAGE_SIZE) as u32));
|
||||
assert_eq!(buf.0[j], pattern((j as u32 + i * PAGE_SIZE as u32) as u32));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ use core::mem;
|
||||
|
||||
use defmt::{info, unwrap};
|
||||
use embassy_executor::Spawner;
|
||||
use embassy_nrf::qspi::Frequency;
|
||||
use embassy_nrf::{interrupt, qspi};
|
||||
use embassy_time::{Duration, Timer};
|
||||
use {defmt_rtt as _, panic_probe as _};
|
||||
@ -23,6 +24,8 @@ async fn main(_p: Spawner) {
|
||||
loop {
|
||||
// Config for the MX25R64 present in the nRF52840 DK
|
||||
let mut config = qspi::Config::default();
|
||||
config.capacity = 8 * 1024 * 1024; // 8 MB
|
||||
config.frequency = Frequency::M32;
|
||||
config.read_opcode = qspi::ReadOpcode::READ4IO;
|
||||
config.write_opcode = qspi::WriteOpcode::PP4IO;
|
||||
config.write_page_size = qspi::WritePageSize::_256BYTES;
|
||||
@ -31,7 +34,7 @@ async fn main(_p: Spawner) {
|
||||
exit_time: 3, // tRDP = 35uS
|
||||
});
|
||||
|
||||
let mut q: qspi::Qspi<_, 67108864> = qspi::Qspi::new(
|
||||
let mut q = qspi::Qspi::new(
|
||||
&mut p.QSPI,
|
||||
&mut irq,
|
||||
&mut p.P0_19,
|
||||
|
Reference in New Issue
Block a user