diff options
Diffstat (limited to 'tests/stm32/src')
| -rw-r--r-- | tests/stm32/src/bin/sdmmc.rs | 37 |
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; | |||
| 7 | use common::*; | 7 | use common::*; |
| 8 | use defmt::assert_eq; | 8 | use defmt::assert_eq; |
| 9 | use embassy_executor::Spawner; | 9 | use embassy_executor::Spawner; |
| 10 | use embassy_stm32::sdmmc::{DataBlock, Sdmmc}; | 10 | use embassy_stm32::sdmmc::{CmdBlock, DataBlock, Sdmmc, StorageDevice}; |
| 11 | use embassy_stm32::time::mhz; | 11 | use embassy_stm32::time::mhz; |
| 12 | use embassy_stm32::{bind_interrupts, peripherals, sdmmc}; | 12 | use embassy_stm32::{bind_interrupts, peripherals, sdmmc}; |
| 13 | use {defmt_rtt as _, panic_probe as _}; | 13 | use {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); |
