i.MXRT1050 EVKB USDHC1 eMMC DDR52 issue

cancel
Showing results for 
Search instead for 
Did you mean: 

i.MXRT1050 EVKB USDHC1 eMMC DDR52 issue

222 Views
yugandhar421
Contributor I

Hi,

I am using i.MXRT1050 EVKB board to test eMMC chip which is connected to micro SD slot on evaluation board with help of micro SD adapter. The micro SD slot connected to USDHC1 of i.MXRT1050.

I enabled 4bit high speed mode in eMMC chip with 52MHz clock in host using below code, I can able to read/write eMMC chip perfectly.

    if (kStatus_Success != MMC_SwitchHSTiming(card, kMMC_HighSpeedTiming, kMMC_DriverStrength0))
    {
        return kStatus_SDMMC_SwitchBusTimingFailed;
    }

    card->busTiming = kMMC_HighSpeedTiming;

    SDMMCHOST_SET_CARD_BUS_WIDTH(card->host.base, kSDMMCHOST_DATABUSWIDTH4BIT);
    card->busWidth = kMMC_DataBusWidth4bit;
    if (kStatus_Success != MMC_SetDataBusWidth(card, card->busWidth))
    {
     return kStatus_SDMMC_SwitchBusTimingFailed;
    }

    if (kStatus_Success != MMC_TestDataBusWidth(card, card->busWidth))
    {
 return kStatus_SDMMC_SwitchBusTimingFailed;
    }

    card->busClock_Hz = SDMMCHOST_SET_CARD_CLOCK(card->host.base, card->host.sourceClock_Hz, MMC_CLOCK_52MHZ);
    /* config io speed and strength */
    SDMMCHOST_CONFIG_SD_IO(CARD_BUS_FREQ_50MHZ, CARD_BUS_STRENGTH_7);‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Now my target is DDR mode, so I changed above code as below. Now I am not able to read/write correct data resulting file system crash when I connected same eMMC chip to PC.

    if (kStatus_Success != MMC_SwitchHSTiming(card, kMMC_HighSpeedTiming, kMMC_DriverStrength0))
    {
        return kStatus_SDMMC_SwitchBusTimingFailed;
    }

    card->busTiming = kMMC_HighSpeedTiming;

    SDMMCHOST_SET_CARD_BUS_WIDTH(card->host.base, kSDMMCHOST_DATABUSWIDTH4BIT);
    card->busWidth = kMMC_DataBusWidth4bitDDR;
    if (kStatus_Success != MMC_SetDataBusWidth(card, card->busWidth))
    {
     return kStatus_SDMMC_SwitchBusTimingFailed;
    }

    SDMMCHOST_ENABLE_DDR_MODE(card->host.base, true);
    card->busClock_Hz = SDMMCHOST_SET_CARD_CLOCK(card->host.base, card->host.sourceClock_Hz, MMC_CLOCK_DDR52);
    /* config io speed and strength */
    SDMMCHOST_CONFIG_SD_IO(CARD_BUS_FREQ_100MHZ1, CARD_BUS_STRENGTH_7);

Am I doing anything wrong in code? Or my micro SD eMMC adapter has insufficient pull-up/pull-down resistors/capacitors to send/receive DDR signal correctly to/from eMMC chip?

If anybody know how to enable eMMC DDR mode correctly, please reply.

Thanks

Yugandhar

Labels (1)
Tags (2)
0 Kudos
1 Reply

100 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi Yugandhar,

It seems other people has it working in DDR mode. Please refer to https://community.nxp.com/message/1200968 

Regards,

Jing

0 Kudos