aboutsummaryrefslogtreecommitdiff
path: root/tests/nrf/src/bin/buffered_uart_spam.rs
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2024-01-24 19:30:46 +0100
committerUlf Lilleengen <[email protected]>2024-01-24 21:23:54 +0100
commit85d7779668ce14abbde4cd8fb1ea9395df529206 (patch)
treee4973540c0b91e74cba030e43e3694c55646eb60 /tests/nrf/src/bin/buffered_uart_spam.rs
parent7d961a7f447a56a458a556b747710ec3375950d7 (diff)
rename nrf52 HIL test
Diffstat (limited to 'tests/nrf/src/bin/buffered_uart_spam.rs')
-rw-r--r--tests/nrf/src/bin/buffered_uart_spam.rs91
1 files changed, 0 insertions, 91 deletions
diff --git a/tests/nrf/src/bin/buffered_uart_spam.rs b/tests/nrf/src/bin/buffered_uart_spam.rs
deleted file mode 100644
index 400c0df99..000000000
--- a/tests/nrf/src/bin/buffered_uart_spam.rs
+++ /dev/null
@@ -1,91 +0,0 @@
1#![no_std]
2#![no_main]
3teleprobe_meta::target!(b"nrf52840-dk");
4
5use core::mem;
6use core::ptr::NonNull;
7
8use defmt::{assert_eq, *};
9use embassy_executor::Spawner;
10use embassy_nrf::buffered_uarte::{self, BufferedUarte};
11use embassy_nrf::gpio::{Level, Output, OutputDrive};
12use embassy_nrf::ppi::{Event, Ppi, Task};
13use embassy_nrf::uarte::Uarte;
14use embassy_nrf::{bind_interrupts, pac, peripherals, uarte};
15use embassy_time::Timer;
16use {defmt_rtt as _, panic_probe as _};
17
18bind_interrupts!(struct Irqs {
19 UARTE0_UART0 => buffered_uarte::InterruptHandler<peripherals::UARTE0>;
20 UARTE1 => uarte::InterruptHandler<peripherals::UARTE1>;
21});
22
23#[embassy_executor::main]
24async fn main(_spawner: Spawner) {
25 let mut p = embassy_nrf::init(Default::default());
26 let mut config = uarte::Config::default();
27 config.parity = uarte::Parity::EXCLUDED;
28 config.baudrate = uarte::Baudrate::BAUD1M;
29
30 let mut tx_buffer = [0u8; 1024];
31 let mut rx_buffer = [0u8; 1024];
32
33 mem::forget(Output::new(&mut p.P1_02, Level::High, OutputDrive::Standard));
34
35 let mut u = BufferedUarte::new(
36 p.UARTE0,
37 p.TIMER0,
38 p.PPI_CH0,
39 p.PPI_CH1,
40 p.PPI_GROUP0,
41 Irqs,
42 p.P1_03,
43 p.P1_04,
44 config.clone(),
45 &mut rx_buffer,
46 &mut tx_buffer,
47 );
48
49 info!("uarte initialized!");
50
51 // uarte needs some quiet time to start rxing properly.
52 Timer::after_millis(10).await;
53
54 // Tx spam in a loop.
55 const NSPAM: usize = 17;
56 static mut TX_BUF: [u8; NSPAM] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
57 let _spam = Uarte::new(p.UARTE1, Irqs, p.P1_01, p.P1_02, config.clone());
58 let spam_peri: pac::UARTE1 = unsafe { mem::transmute(()) };
59 let event = unsafe { Event::new_unchecked(NonNull::new_unchecked(&spam_peri.events_endtx as *const _ as _)) };
60 let task = unsafe { Task::new_unchecked(NonNull::new_unchecked(&spam_peri.tasks_starttx as *const _ as _)) };
61 let mut spam_ppi = Ppi::new_one_to_one(p.PPI_CH2, event, task);
62 spam_ppi.enable();
63 let p = unsafe { TX_BUF.as_mut_ptr() };
64 spam_peri.txd.ptr.write(|w| unsafe { w.ptr().bits(p as u32) });
65 spam_peri.txd.maxcnt.write(|w| unsafe { w.maxcnt().bits(NSPAM as _) });
66 spam_peri.tasks_starttx.write(|w| unsafe { w.bits(1) });
67
68 let mut i = 0;
69 let mut total = 0;
70 while total < 256 * 1024 {
71 let buf = unwrap!(u.fill_buf().await);
72 //info!("rx {}", buf);
73
74 for &b in buf {
75 assert_eq!(b, unsafe { TX_BUF[i] });
76
77 i = i + 1;
78 if i == NSPAM {
79 i = 0;
80 }
81 }
82
83 // Read bytes have to be explicitly consumed, otherwise fill_buf() will return them again
84 let n = buf.len();
85 u.consume(n);
86 total += n;
87 }
88
89 info!("Test OK");
90 cortex_m::asm::bkpt();
91}