embedded-sdmmc-rs: SPI init (microcontroller) stuck in TimeoutWaitNotBusy,

Looked at the init sequence and saw 0xFF issued before CMD0, this PR fixes the issue for me.

Thanks!

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 15 (11 by maintainers)

Most upvoted comments

According to the error, that’s an unexpected R1 response to a CMD0. Looking at https://www.sdcard.org/downloads/pls/pdf/?p=Part1_Physical_Layer_Simplified_Specification_Ver9.00.jpg&f=Part1_Physical_Layer_Simplified_Specification_Ver9.00.pdf&e=EN_SS1_9 Section 7.3.2.1, the R1 response is:

  • Bit 7 - must be 0
  • Bit 6 - Parameter Error
  • Bit 5 - Address Error
  • Bit 4 - Erase Sequence Error
  • Bit 3 - COM CRC Error
  • Bit 2 - Illegal Command
  • Bit 1 - Erase Reset
  • Bit 0 - In Idle State

We want 0x01. If we get 0xFF, the card is busy and hasn’t responded yet. If we get anything else after sending CMD0 (GO_IDLE) I don’t think there’s anything we can do except try again.

Yeah. The branch I shared I’ve been able to use pretty reliably the past few days. At least for the project I was using where the existing PR wasn’t working.