搜索
bottom↓
回复: 6

用stm32自带的文件stm32hxxx_hal_mmc.c调试驱动EMMC

[复制链接]

出0入0汤圆

发表于 2019-3-22 13:50:57 | 显示全部楼层 |阅读模式
最近调试emmc,发现stm32自带的文件stm32h7xx_hal_mmc.c,stm32f7xx_hal_mmc.c,stm32h4xx_hal_mmc.c就可以驱动。
在HAL_StatusTypeDef  HAL_MMC_Init(MMC_HandleTypeDef *hmmc)函数中加入适当延时:

HAL_StatusTypeDef HAL_MMC_Init(MMC_HandleTypeDef *hmmc)
{
  /* Check the MMC handle allocation */
  if(hmmc == NULL)
  {
    return HAL_ERROR;
  }

  /* Check the parameters */
  assert_param(IS_SDMMC_ALL_INSTANCE(hmmc->Instance));
  assert_param(IS_SDMMC_CLOCK_EDGE(hmmc->Init.ClockEdge));
  assert_param(IS_SDMMC_CLOCK_POWER_SAVE(hmmc->Init.ClockPowerSave));
  assert_param(IS_SDMMC_BUS_WIDE(hmmc->Init.BusWide));
  assert_param(IS_SDMMC_HARDWARE_FLOW_CONTROL(hmmc->Init.HardwareFlowControl));
  assert_param(IS_SDMMC_CLKDIV(hmmc->Init.ClockDiv));

  if(hmmc->State == HAL_MMC_STATE_RESET)
  {
    /* Allocate lock resource and initialize it */
    hmmc->Lock = HAL_UNLOCKED;
    /* Init the low level hardware : GPIO, CLOCK, CORTEX...etc */
    HAL_MMC_MspInit(hmmc);
  }

  hmmc->State = HAL_MMC_STATE_BUSY;

  /* Initialize the Card parameters */
  if(HAL_MMC_InitCard(hmmc) == HAL_ERROR)
  {
    return HAL_ERROR;
  }

  HAL_Delay(20);///////加入适当延时

  /* Configure the bus wide */
  if(HAL_MMC_ConfigWideBusOperation(hmmc, hmmc->Init.BusWide) == HAL_ERROR)
  {
    return HAL_ERROR;
  }
  
  /* Initialize the error code */
  hmmc->ErrorCode = HAL_DMA_ERROR_NONE;
  
  /* Initialize the MMC operation */
  hmmc->Context = MMC_CONTEXT_NONE;

  /* Initialize the MMC state */
  hmmc->State = HAL_MMC_STATE_READY;

  return HAL_OK;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2019-3-22 14:44:33 | 显示全部楼层
关注 ,一直想试试emmc

出0入442汤圆

发表于 2019-3-24 09:55:47 来自手机 | 显示全部楼层
coslight_dt 发表于 2019-3-22 14:44
关注 ,一直想试试emmc

你按sd接就能直接sd卡读写方式操作emmc。我已经飞线了3台设备。

出140入8汤圆

发表于 2019-3-24 13:04:47 | 显示全部楼层
EMMC 5.0 能用么?4.xx 都快全部淘汰了

出0入0汤圆

发表于 2019-3-25 08:04:38 | 显示全部楼层
wye11083 发表于 2019-3-24 09:55
你按sd接就能直接sd卡读写方式操作emmc。我已经飞线了3台设备。

底层扇区 函数读写也不用修改吗?底层怎嘛区分他是SD还是EMMC 或者应用上能识别出来吗?谢谢

出0入0汤圆

 楼主| 发表于 2019-3-25 08:23:21 | 显示全部楼层
coslight_dt 发表于 2019-3-25 08:04
底层扇区 函数读写也不用修改吗?底层怎嘛区分他是SD还是EMMC 或者应用上能识别出来吗?谢谢 ...

其实差不多,稍作修改。现只针对EMMC

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入442汤圆

发表于 2019-3-25 08:35:40 | 显示全部楼层
coslight_dt 发表于 2019-3-25 08:04
底层扇区 函数读写也不用修改吗?底层怎嘛区分他是SD还是EMMC 或者应用上能识别出来吗?谢谢 ...

EMMC自动降级标准SD协议。其初始化貌似也是SD,然后动态切换的吧,你可以查ONFI,我真没注意。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-18 21:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表