stm32/sdmmc: add support for multiple block reads and writes.

This commit is contained in:
Oliver
2025-02-04 12:15:22 +11:00
committed by Dario Nieuwenhuis
parent 7a620661da
commit eb83d049c7
2 changed files with 195 additions and 17 deletions

View File

@@ -34,8 +34,10 @@ async fn main(_spawner: Spawner) {
pattern1[i] = i as u8;
pattern2[i] = !i as u8;
}
let patterns = [pattern1.clone(), pattern2.clone()];
let mut block = DataBlock([0u8; 512]);
let mut blocks = [DataBlock([0u8; 512]), DataBlock([0u8; 512])];
// ======== Try 4bit. ==============
info!("initializing in 4-bit mode...");
@@ -84,6 +86,13 @@ async fn main(_spawner: Spawner) {
s.read_block(block_idx, &mut block).await.unwrap();
assert_eq!(block, pattern2);
info!("writing blocks [pattern1, pattern2]...");
s.write_blocks(block_idx, &patterns).await.unwrap();
info!("reading blocks...");
s.read_blocks(block_idx, &mut blocks).await.unwrap();
assert_eq!(&blocks, &patterns);
drop(s);
// ======== Try 1bit. ==============
@@ -116,9 +125,9 @@ async fn main(_spawner: Spawner) {
info!("Card: {:#?}", Debug2Format(card));
info!("Clock: {}", s.clock());
info!("reading pattern2 written in 4bit mode...");
info!("reading pattern1 written in 4bit mode...");
s.read_block(block_idx, &mut block).await.unwrap();
assert_eq!(block, pattern2);
assert_eq!(block, pattern1);
info!("writing pattern1...");
s.write_block(block_idx, &pattern1).await.unwrap();
@@ -134,6 +143,13 @@ async fn main(_spawner: Spawner) {
s.read_block(block_idx, &mut block).await.unwrap();
assert_eq!(block, pattern2);
info!("writing blocks [pattern1, pattern2]...");
s.write_blocks(block_idx, &patterns).await.unwrap();
info!("reading blocks...");
s.read_blocks(block_idx, &mut blocks).await.unwrap();
assert_eq!(&blocks, &patterns);
drop(s);
info!("Test OK");