mirror of
https://github.com/embassy-rs/embassy.git
synced 2025-10-02 22:54:52 +00:00
use ready_for_data status to determine when write has finished
`read_sd_status` works, but it's somewhat of a hack, but also won't work on eMMC devices. The official spec for both SD and eMMC recommends using this method.
This commit is contained in:
parent
5d01712d84
commit
14bb4ee9e4
@ -1292,12 +1292,12 @@ impl<'d, T: Instance> Sdmmc<'d, T> {
|
|||||||
// TODO: Make this configurable
|
// TODO: Make this configurable
|
||||||
let mut timeout: u32 = 0x00FF_FFFF;
|
let mut timeout: u32 = 0x00FF_FFFF;
|
||||||
|
|
||||||
// Try to read card status (ACMD13)
|
let card = self.card.as_ref().unwrap();
|
||||||
while timeout > 0 {
|
while timeout > 0 {
|
||||||
match self.read_sd_status().await {
|
let status = self.read_status(card)?;
|
||||||
Ok(_) => return Ok(()),
|
|
||||||
Err(Error::Timeout) => (), // Try again
|
if status.ready_for_data() {
|
||||||
Err(e) => return Err(e),
|
return Ok(());
|
||||||
}
|
}
|
||||||
timeout -= 1;
|
timeout -= 1;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user