aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-08-26 10:57:10 +0000
committerGitHub <[email protected]>2022-08-26 10:57:10 +0000
commit24ab21a7ddcf8dafd6f464e6d66c9011cc08047b (patch)
tree3f0aaf9178281349767f977df3d69f521ed6d0d7 /tests
parent1125d578428dd0af3274142edbac46ae90042a0e (diff)
parentbd27b9080fd9019e69e84fd30894a71db9fd61b5 (diff)
Merge #913
913: (embassy-rp): Add DMA implementation r=Dirbaio a=MathiasKoch This PR adds everything necessary to do peripheral to memory DMA & memory to memory DMA operations. It also adds async UART read & write, powered by DMA Co-authored-by: Mathias <[email protected]>
Diffstat (limited to 'tests')
-rw-r--r--tests/rp/src/bin/dma_copy_async.rs41
-rw-r--r--tests/rp/src/bin/uart.rs32
-rw-r--r--tests/rp/src/bin/uart_dma.rs32
3 files changed, 105 insertions, 0 deletions
diff --git a/tests/rp/src/bin/dma_copy_async.rs b/tests/rp/src/bin/dma_copy_async.rs
new file mode 100644
index 000000000..c53f644bd
--- /dev/null
+++ b/tests/rp/src/bin/dma_copy_async.rs
@@ -0,0 +1,41 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5use defmt::{assert_eq, *};
6use embassy_executor::Spawner;
7use embassy_rp::dma::copy;
8use {defmt_rtt as _, panic_probe as _};
9
10#[embassy_executor::main]
11async fn main(_spawner: Spawner) {
12 let p = embassy_rp::init(Default::default());
13 info!("Hello World!");
14
15 // Check `u8` copy
16 {
17 let data: [u8; 2] = [0xC0, 0xDE];
18 let mut buf = [0; 2];
19 unsafe { copy(p.DMA_CH0, &data, &mut buf).await };
20 assert_eq!(buf, data);
21 }
22
23 // Check `u16` copy
24 {
25 let data: [u16; 2] = [0xC0BE, 0xDEAD];
26 let mut buf = [0; 2];
27 unsafe { copy(p.DMA_CH1, &data, &mut buf).await };
28 assert_eq!(buf, data);
29 }
30
31 // Check `u32` copy
32 {
33 let data: [u32; 2] = [0xC0BEDEAD, 0xDEADAAFF];
34 let mut buf = [0; 2];
35 unsafe { copy(p.DMA_CH2, &data, &mut buf).await };
36 assert_eq!(buf, data);
37 }
38
39 info!("Test OK");
40 cortex_m::asm::bkpt();
41}
diff --git a/tests/rp/src/bin/uart.rs b/tests/rp/src/bin/uart.rs
new file mode 100644
index 000000000..92f61464e
--- /dev/null
+++ b/tests/rp/src/bin/uart.rs
@@ -0,0 +1,32 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5use defmt::{assert_eq, *};
6use embassy_executor::Spawner;
7use embassy_rp::uart::{Config, Uart};
8use {defmt_rtt as _, panic_probe as _};
9
10#[embassy_executor::main]
11async fn main(_spawner: Spawner) {
12 let p = embassy_rp::init(Default::default());
13 info!("Hello World!");
14
15 let (tx, rx, uart) = (p.PIN_0, p.PIN_1, p.UART0);
16
17 let config = Config::default();
18 let mut uart = Uart::new_blocking(uart, tx, rx, config);
19
20 // We can't send too many bytes, they have to fit in the FIFO.
21 // This is because we aren't sending+receiving at the same time.
22
23 let data = [0xC0, 0xDE];
24 uart.blocking_write(&data).unwrap();
25
26 let mut buf = [0; 2];
27 uart.blocking_read(&mut buf).unwrap();
28 assert_eq!(buf, data);
29
30 info!("Test OK");
31 cortex_m::asm::bkpt();
32}
diff --git a/tests/rp/src/bin/uart_dma.rs b/tests/rp/src/bin/uart_dma.rs
new file mode 100644
index 000000000..963c22707
--- /dev/null
+++ b/tests/rp/src/bin/uart_dma.rs
@@ -0,0 +1,32 @@
1#![no_std]
2#![no_main]
3#![feature(type_alias_impl_trait)]
4
5use defmt::{assert_eq, *};
6use embassy_executor::Spawner;
7use embassy_rp::uart::{Config, Uart};
8use {defmt_rtt as _, panic_probe as _};
9
10#[embassy_executor::main]
11async fn main(_spawner: Spawner) {
12 let p = embassy_rp::init(Default::default());
13 info!("Hello World!");
14
15 let (tx, rx, uart) = (p.PIN_0, p.PIN_1, p.UART0);
16
17 let config = Config::default();
18 let mut uart = Uart::new(uart, tx, rx, p.DMA_CH0, p.DMA_CH1, config);
19
20 // We can't send too many bytes, they have to fit in the FIFO.
21 // This is because we aren't sending+receiving at the same time.
22
23 let data = [0xC0, 0xDE];
24 uart.write(&data).await.unwrap();
25
26 let mut buf = [0; 2];
27 uart.read(&mut buf).await.unwrap();
28 assert_eq!(buf, data);
29
30 info!("Test OK");
31 cortex_m::asm::bkpt();
32}