aboutsummaryrefslogtreecommitdiff
path: root/examples/rp235x
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2025-09-05 13:45:00 +0000
committerGitHub <[email protected]>2025-09-05 13:45:00 +0000
commit581594d1f5b403363a109e41b5d354f9364b4724 (patch)
tree8790ffe8adbdd69e83d2aa2436b636dd31d71a93 /examples/rp235x
parent9c30be254cba722397bf328c0acfb063ea33a471 (diff)
parent88934c42d3b70d1da21808436daaeb7210580ab4 (diff)
Merge pull request #4496 from variegated-coffee/psram
feat(embassy-rp): RP2350 - Add support for QMI CS1, and for APS6404L PSRAM
Diffstat (limited to 'examples/rp235x')
-rw-r--r--examples/rp235x/src/bin/psram.rs49
1 files changed, 49 insertions, 0 deletions
diff --git a/examples/rp235x/src/bin/psram.rs b/examples/rp235x/src/bin/psram.rs
new file mode 100644
index 000000000..716ac7695
--- /dev/null
+++ b/examples/rp235x/src/bin/psram.rs
@@ -0,0 +1,49 @@
1//! This example tests an APS6404L PSRAM chip connected to the RP235x
2//! It fills the PSRAM with alternating patterns and reads back a value
3//!
4//! In this example, the PSRAM CS is connected to Pin 0.
5
6#![no_std]
7#![no_main]
8
9use core::slice;
10
11use defmt::*;
12use embassy_executor::Spawner;
13use embassy_time::Timer;
14use {defmt_rtt as _, panic_probe as _};
15
16#[embassy_executor::main]
17async fn main(_spawner: Spawner) {
18 let config = embassy_rp::config::Config::default();
19 let p = embassy_rp::init(config);
20 let psram_config = embassy_rp::psram::Config::aps6404l();
21 let psram = embassy_rp::psram::Psram::new(embassy_rp::qmi_cs1::QmiCs1::new(p.QMI_CS1, p.PIN_0), psram_config);
22
23 let Ok(psram) = psram else {
24 error!("PSRAM not found");
25 loop {
26 Timer::after_secs(1).await;
27 }
28 };
29
30 let psram_slice = unsafe {
31 let psram_ptr = psram.base_address();
32 let slice: &'static mut [u8] = slice::from_raw_parts_mut(psram_ptr, psram.size() as usize);
33 slice
34 };
35
36 loop {
37 psram_slice.fill(0x55);
38 info!("PSRAM filled with 0x55");
39 let at_addr = psram_slice[0x100];
40 info!("Read from PSRAM at address 0x100: 0x{:02x}", at_addr);
41 Timer::after_secs(1).await;
42
43 psram_slice.fill(0xAA);
44 info!("PSRAM filled with 0xAA");
45 let at_addr = psram_slice[0x100];
46 info!("Read from PSRAM at address 0x100: 0x{:02x}", at_addr);
47 Timer::after_secs(1).await;
48 }
49}