aboutsummaryrefslogtreecommitdiff
path: root/tests/stm32/src
diff options
context:
space:
mode:
authorxoviat <[email protected]>2025-12-10 01:39:17 +0000
committerGitHub <[email protected]>2025-12-10 01:39:17 +0000
commitb1798e14d202a28ade6b9f2e985d4aaa0ad7c758 (patch)
treeef69a8d6fc5bd1be2acca11f70b355e0d5d5a854 /tests/stm32/src
parentcf069b3e4e6a02660893ef8014e4ab69df6d46e0 (diff)
parentc5c7a2143b15530b0c8f08d1dd6e24a6985318f9 (diff)
Merge pull request #5018 from xoviat/sdio
stm32: refactor sdmmc module
Diffstat (limited to 'tests/stm32/src')
-rw-r--r--tests/stm32/src/bin/sdmmc.rs37
1 files changed, 15 insertions, 22 deletions
diff --git a/tests/stm32/src/bin/sdmmc.rs b/tests/stm32/src/bin/sdmmc.rs
index 9f9c526e1..454d0dd57 100644
--- a/tests/stm32/src/bin/sdmmc.rs
+++ b/tests/stm32/src/bin/sdmmc.rs
@@ -7,7 +7,7 @@ mod common;
7use common::*; 7use common::*;
8use defmt::assert_eq; 8use defmt::assert_eq;
9use embassy_executor::Spawner; 9use embassy_executor::Spawner;
10use embassy_stm32::sdmmc::{DataBlock, Sdmmc}; 10use embassy_stm32::sdmmc::{CmdBlock, DataBlock, Sdmmc, StorageDevice};
11use embassy_stm32::time::mhz; 11use embassy_stm32::time::mhz;
12use embassy_stm32::{bind_interrupts, peripherals, sdmmc}; 12use embassy_stm32::{bind_interrupts, peripherals, sdmmc};
13use {defmt_rtt as _, panic_probe as _}; 13use {defmt_rtt as _, panic_probe as _};
@@ -54,43 +54,36 @@ async fn main(_spawner: Spawner) {
54 Default::default(), 54 Default::default(),
55 ); 55 );
56 56
57 let mut err = None; 57 let mut cmd_block = CmdBlock::new();
58 loop {
59 match s.init_sd_card(mhz(24)).await {
60 Ok(_) => break,
61 Err(e) => {
62 if err != Some(e) {
63 info!("waiting for card: {:?}", e);
64 err = Some(e);
65 }
66 }
67 }
68 }
69 58
70 let card = unwrap!(s.card()); 59 let mut storage = StorageDevice::new_sd_card(&mut s, &mut cmd_block, mhz(24))
60 .await
61 .unwrap();
71 62
72 info!("Card: {:#?}", Debug2Format(card)); 63 let card = storage.card();
73 info!("Clock: {}", s.clock()); 64
65 info!("Card: {:#?}", Debug2Format(&card));
66 info!("Clock: {}", storage.sdmmc.clock());
74 67
75 info!("writing pattern1..."); 68 info!("writing pattern1...");
76 s.write_block(block_idx, &pattern1).await.unwrap(); 69 storage.write_block(block_idx, &pattern1).await.unwrap();
77 70
78 info!("reading..."); 71 info!("reading...");
79 s.read_block(block_idx, &mut block).await.unwrap(); 72 storage.read_block(block_idx, &mut block).await.unwrap();
80 assert_eq!(block, pattern1); 73 assert_eq!(block, pattern1);
81 74
82 info!("writing pattern2..."); 75 info!("writing pattern2...");
83 s.write_block(block_idx, &pattern2).await.unwrap(); 76 storage.write_block(block_idx, &pattern2).await.unwrap();
84 77
85 info!("reading..."); 78 info!("reading...");
86 s.read_block(block_idx, &mut block).await.unwrap(); 79 storage.read_block(block_idx, &mut block).await.unwrap();
87 assert_eq!(block, pattern2); 80 assert_eq!(block, pattern2);
88 81
89 info!("writing blocks [pattern1, pattern2]..."); 82 info!("writing blocks [pattern1, pattern2]...");
90 s.write_blocks(block_idx, &patterns).await.unwrap(); 83 storage.write_blocks(block_idx, &patterns).await.unwrap();
91 84
92 info!("reading blocks..."); 85 info!("reading blocks...");
93 s.read_blocks(block_idx, &mut blocks).await.unwrap(); 86 storage.read_blocks(block_idx, &mut blocks).await.unwrap();
94 assert_eq!(&blocks, &patterns); 87 assert_eq!(&blocks, &patterns);
95 88
96 drop(s); 89 drop(s);