diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-10-24 13:31:53 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2024-11-04 00:47:31 +0100 |
| commit | 51f6b813e1a4311ffb4adf2e66ed3effb990d246 (patch) | |
| tree | 66a175cc893b00dcd56bcaff0e6b90b4d0753732 /tests/nrf/src/bin | |
| parent | 650f97924ab540d3232b187cbde73d7a0104f734 (diff) | |
nrf: port to chiptool-based `nrf-pac`.
Diffstat (limited to 'tests/nrf/src/bin')
| -rw-r--r-- | tests/nrf/src/bin/buffered_uart_spam.rs | 12 | ||||
| -rw-r--r-- | tests/nrf/src/bin/gpio.rs | 2 | ||||
| -rw-r--r-- | tests/nrf/src/bin/spim.rs | 42 |
3 files changed, 50 insertions, 6 deletions
diff --git a/tests/nrf/src/bin/buffered_uart_spam.rs b/tests/nrf/src/bin/buffered_uart_spam.rs index 45daaae0c..cf9ca50d2 100644 --- a/tests/nrf/src/bin/buffered_uart_spam.rs +++ b/tests/nrf/src/bin/buffered_uart_spam.rs | |||
| @@ -50,15 +50,15 @@ async fn main(_spawner: Spawner) { | |||
| 50 | const NSPAM: usize = 17; | 50 | const NSPAM: usize = 17; |
| 51 | static mut TX_BUF: [u8; NSPAM] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; | 51 | static mut TX_BUF: [u8; NSPAM] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]; |
| 52 | let _spam = UarteTx::new(peri!(p, UART1), irqs!(UART1), peri!(p, PIN_A), config.clone()); | 52 | let _spam = UarteTx::new(peri!(p, UART1), irqs!(UART1), peri!(p, PIN_A), config.clone()); |
| 53 | let spam_peri: pac::UARTE1 = unsafe { mem::transmute(()) }; | 53 | let spam_peri = pac::UARTE1; |
| 54 | let event = unsafe { Event::new_unchecked(NonNull::new_unchecked(&spam_peri.events_endtx as *const _ as _)) }; | 54 | let event = unsafe { Event::new_unchecked(NonNull::new_unchecked(spam_peri.events_endtx().as_ptr())) }; |
| 55 | let task = unsafe { Task::new_unchecked(NonNull::new_unchecked(&spam_peri.tasks_starttx as *const _ as _)) }; | 55 | let task = unsafe { Task::new_unchecked(NonNull::new_unchecked(spam_peri.tasks_starttx().as_ptr())) }; |
| 56 | let mut spam_ppi = Ppi::new_one_to_one(p.PPI_CH2, event, task); | 56 | let mut spam_ppi = Ppi::new_one_to_one(p.PPI_CH2, event, task); |
| 57 | spam_ppi.enable(); | 57 | spam_ppi.enable(); |
| 58 | let p = (&raw mut TX_BUF) as *mut u8; | 58 | let p = (&raw mut TX_BUF) as *mut u8; |
| 59 | spam_peri.txd.ptr.write(|w| unsafe { w.ptr().bits(p as u32) }); | 59 | spam_peri.txd().ptr().write_value(p as u32); |
| 60 | spam_peri.txd.maxcnt.write(|w| unsafe { w.maxcnt().bits(NSPAM as _) }); | 60 | spam_peri.txd().maxcnt().write(|w| w.set_maxcnt(NSPAM as _)); |
| 61 | spam_peri.tasks_starttx.write(|w| unsafe { w.bits(1) }); | 61 | spam_peri.tasks_starttx().write_value(1); |
| 62 | 62 | ||
| 63 | let mut i = 0; | 63 | let mut i = 0; |
| 64 | let mut total = 0; | 64 | let mut total = 0; |
diff --git a/tests/nrf/src/bin/gpio.rs b/tests/nrf/src/bin/gpio.rs index 9e809a694..4995d244c 100644 --- a/tests/nrf/src/bin/gpio.rs +++ b/tests/nrf/src/bin/gpio.rs | |||
| @@ -17,10 +17,12 @@ async fn main(_spawner: Spawner) { | |||
| 17 | let mut output = Output::new(peri!(p, PIN_B), Level::Low, OutputDrive::Standard); | 17 | let mut output = Output::new(peri!(p, PIN_B), Level::Low, OutputDrive::Standard); |
| 18 | 18 | ||
| 19 | output.set_low(); | 19 | output.set_low(); |
| 20 | assert!(output.is_set_low()); | ||
| 20 | Timer::after_millis(10).await; | 21 | Timer::after_millis(10).await; |
| 21 | assert!(input.is_low()); | 22 | assert!(input.is_low()); |
| 22 | 23 | ||
| 23 | output.set_high(); | 24 | output.set_high(); |
| 25 | assert!(output.is_set_high()); | ||
| 24 | Timer::after_millis(10).await; | 26 | Timer::after_millis(10).await; |
| 25 | assert!(input.is_high()); | 27 | assert!(input.is_high()); |
| 26 | 28 | ||
diff --git a/tests/nrf/src/bin/spim.rs b/tests/nrf/src/bin/spim.rs new file mode 100644 index 000000000..c2ec90b88 --- /dev/null +++ b/tests/nrf/src/bin/spim.rs | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | // required-features: easydma | ||
| 2 | #![no_std] | ||
| 3 | #![no_main] | ||
| 4 | |||
| 5 | #[path = "../common.rs"] | ||
| 6 | mod common; | ||
| 7 | |||
| 8 | use defmt::{assert_eq, *}; | ||
| 9 | use embassy_executor::Spawner; | ||
| 10 | use embassy_nrf::spim::Spim; | ||
| 11 | use embassy_nrf::{peripherals, spim}; | ||
| 12 | use {defmt_rtt as _, panic_probe as _}; | ||
| 13 | |||
| 14 | #[embassy_executor::main] | ||
| 15 | async fn main(_spawner: Spawner) { | ||
| 16 | let mut p = embassy_nrf::init(Default::default()); | ||
| 17 | let mut config = spim::Config::default(); | ||
| 18 | config.frequency = spim::Frequency::M1; | ||
| 19 | let mut spim = Spim::new( | ||
| 20 | &mut peri!(p, SPIM0), | ||
| 21 | irqs!(SPIM0), | ||
| 22 | &mut peri!(p, PIN_X), | ||
| 23 | &mut peri!(p, PIN_A), // MISO | ||
| 24 | &mut peri!(p, PIN_B), // MOSI | ||
| 25 | config.clone(), | ||
| 26 | ); | ||
| 27 | let data = [ | ||
| 28 | 0x42, 0x43, 0x44, 0x45, 0x66, 0x12, 0x23, 0x34, 0x45, 0x19, 0x91, 0xaa, 0xff, 0xa5, 0x5a, 0x77, | ||
| 29 | ]; | ||
| 30 | let mut buf = [0u8; 16]; | ||
| 31 | |||
| 32 | buf.fill(0); | ||
| 33 | spim.blocking_transfer(&mut buf, &data).unwrap(); | ||
| 34 | assert_eq!(data, buf); | ||
| 35 | |||
| 36 | buf.fill(0); | ||
| 37 | spim.transfer(&mut buf, &data).await.unwrap(); | ||
| 38 | assert_eq!(data, buf); | ||
| 39 | |||
| 40 | info!("Test OK"); | ||
| 41 | cortex_m::asm::bkpt(); | ||
| 42 | } | ||
