I am trying to port the file system including the MMC driver in sdk2 to freertos system. However , when we use usdhc2 connect to the MMC5.1 chip, we call the MMC_Init to do the initialization.
the step is 1.after the host initialization , we send CMD0 to reset the bus , seems it works. here is the function:
/* Send CMD0 to reset the bus */
if (kStatus_Success != MMC_GoIdle(card))
{
return kStatus_SDMMC_GoIdleFailed;
}
and after sending a command , it could also enter into interrupt.
but the second command, it doesnot work. after sending the command , it could not get the response and therefore could enter into interrupt handler, and then keeping waiting for the completion of transfer.
/* Hand-shaking with card to validata the voltage range Host first sending its expected
information.*/
if (kStatus_Success != MMC_SendOperationCondition(card, 0U))
{
return kStatus_SDMMC_HandShakeOperationConditionFailed;
}
could anyone give me some indications? all the code are from official NXP SDK2 package.
Hi Alven
one can check emmc voltages and signals with oscilloscope,
check response from emmc with logic analyzer. Next should be CMD1 command
as described in Figure 22 - e•MMC state diagram eMMC JESD84 specification.
Host issues CMD1 for supported access mode of the memory.
Simple baremetal test can be found in i.MX6Q SDK (1.1.0_iMX6_Platform_SDK.zip)
on link SMP Enable in IMX6
Also one can test emmc from uboot.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------