mirror of
https://github.com/embassy-rs/embassy.git
synced 2025-09-30 05:40:55 +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
|
||||
let mut timeout: u32 = 0x00FF_FFFF;
|
||||
|
||||
// Try to read card status (ACMD13)
|
||||
let card = self.card.as_ref().unwrap();
|
||||
while timeout > 0 {
|
||||
match self.read_sd_status().await {
|
||||
Ok(_) => return Ok(()),
|
||||
Err(Error::Timeout) => (), // Try again
|
||||
Err(e) => return Err(e),
|
||||
let status = self.read_status(card)?;
|
||||
|
||||
if status.ready_for_data() {
|
||||
return Ok(());
|
||||
}
|
||||
timeout -= 1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user