这几天在调试eMMC时遇到了点问题:
使用的是usdhc2,eMMC为闪迪的SDINBDG4-32G
配置如下:
初始化时停留在 mmccard_init -> MMC_SelectBusTiming -> MMC_SwitchToHighSpeed -> MMC_SetMaxDataBusWidth -> MMC_TestDataBusWidth -> MMC_SendTestPattern ->
SDMMCHOST_TransferFunction ->
SDMMC_OSAEventWait(&(host->hostEvent), SDMMCHOST_TRANSFER_DATA_EVENT,
SDMMCHOST_TRANSFER_COMPLETE_TIMEOUT, &event)
等不到 SDMMCHOST_TRANSFER_DATA_EVENT 事件
请问是否有其他需要注意的?
你好,我尝试对比我现在的驱动和flashloader的区别,但是发现发现flashloader的驱动不是基于SDK的,差别比较大,而我现在的驱动是基于SDK生成的,目前还没发现配置上有说明大的区别;
我调试时发现我基于SDK和官方模板的驱动在执行完MMC_SendExtendedCsd这个函数后,ADMA_ERR_STATUS寄存器中的错误位置位了(ADMADCE为0x1, ADMAES为0x01),可是关于这一块相关的驱动我没有作任何改动,为什么会出现这样的错误呢?
Hi @zyz
你现在参考的代码是SDK吗?具体SDK 工程路径给我一下, 我看看。
你现在用的SDK是不是最新的,建议你用最新的SDK试试看。
还有,你在SDK工程基础上修改点也分享出来,我这边看看。
你说的:执行完MMC_SendExtendedCsd这个函数后,ADMA_ERR_STATUS寄存器中的错误位置位了(ADMADCE为0x1, ADMAES为0x01)
你也对比寄存器看看,这个是错误标志,如果你那边没有用到对应的,你可以尝试修改代码忽略错误试试看。
Best Regards,
Kerry
是的,是接在boot引脚上,但是使用MCUBootUtility连不上,提示:
1812 (0x714) Send Operation Condition failed"
我现在是直接跑代码的,SDK里面没有现成的eMMC例程,我在SD FATFS基础上修改的,将SD改成eMMC以及将USDHC1改为USDHC2而已,其他都是SDK提供的,在执行MMC_SelectBusTiming这个函数之前都是通信正常的,也就说可以可以获取cid,设置设置rca,获取csd等,但是设置卡总线宽度后(SDMMCHOST_SetCardBusWidth),执行MMC_TestDataBusWidth时失败了,等不到SDMMCHOST_TRANSFER_DATA_EVENT事件: