43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
// required-features: easydma
|
|
#![no_std]
|
|
#![no_main]
|
|
|
|
#[path = "../common.rs"]
|
|
mod common;
|
|
|
|
use defmt::{assert_eq, *};
|
|
use embassy_executor::Spawner;
|
|
use embassy_nrf::spim::Spim;
|
|
use embassy_nrf::{peripherals, spim};
|
|
use {defmt_rtt as _, panic_probe as _};
|
|
|
|
#[embassy_executor::main]
|
|
async fn main(_spawner: Spawner) {
|
|
let mut p = embassy_nrf::init(Default::default());
|
|
let mut config = spim::Config::default();
|
|
config.frequency = spim::Frequency::M1;
|
|
let mut spim = Spim::new(
|
|
&mut peri!(p, SPIM0),
|
|
irqs!(SPIM0),
|
|
&mut peri!(p, PIN_X),
|
|
&mut peri!(p, PIN_A), // MISO
|
|
&mut peri!(p, PIN_B), // MOSI
|
|
config.clone(),
|
|
);
|
|
let data = [
|
|
0x42, 0x43, 0x44, 0x45, 0x66, 0x12, 0x23, 0x34, 0x45, 0x19, 0x91, 0xaa, 0xff, 0xa5, 0x5a, 0x77,
|
|
];
|
|
let mut buf = [0u8; 16];
|
|
|
|
buf.fill(0);
|
|
spim.blocking_transfer(&mut buf, &data).unwrap();
|
|
assert_eq!(data, buf);
|
|
|
|
buf.fill(0);
|
|
spim.transfer(&mut buf, &data).await.unwrap();
|
|
assert_eq!(data, buf);
|
|
|
|
info!("Test OK");
|
|
cortex_m::asm::bkpt();
|
|
}
|