Search code examples
linuxoperating-systemembeddedspi

Enabling DDR in SD/MMC causes problems? CMD 11 gives a response but the voltage switch wont complete


I am trying to enable DDR in sd (spec above 2.0) the procedure in the specifications is as follows

  1. Execute CMD0 to make the card idle
  2. Execute CMD8 to enable ask about the voltage requirements
  3. Execute ACMD41 with S18 bit enabled and log for S18 in the reply to see if the card has voltage switch functionality: checked and the card has the functionality
  4. Now execute CMD11, if the card replies with a response the voltage switching sequence is started, the cmd and data line should go low: checked and yes they do
  5. Stop the clock,
  6. Program the voltage switch reg (with 1.8V) and wait 5 ms
  7. Start the clock: the card should start at speed SDR12 with 1.8V: cmd and data lines should go high, a cmd_done interrupt should be received: NOT RECEIVED

Any pointers regarding this would be helpful...the card status registers shows that there is a data transfer in progress and the card is not present. After this I cannot execute any CMD (the cmd_done interrupts are not received)


Solution

  • For the sake of helping others, the process explained above is correct. The problem was on the board side i.e. there were no 1.8v regulators connected on the board. So first make sure that the SOC or the board has those connectors available. In case of mmc, ddr mode can be enabled with 3V so the above case is only valid for sd.....