你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。

STM32_CUBE F4V1.18.0
文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
   {
     /* Card is SD V2.0 compliant */
     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);
     
     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
   }


文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作


errorstate = SDMMC_CmdOperCond(hsd->Instance);
   if(errorstate != HAL_SD_ERROR_NONE)
   {
     hsd->SdCard.CardVersion = CARD_V1_X;
/********************* LDS:********************************/
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令
     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  
     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
     {
       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;
     }
/********************* LDS:*********************************/

评分

参与人数 2 ST金币 +16 收起 理由
MrJiu + 6 顶!!!
shaoziyang + 10 很给力!

查看全部评分

收藏 4 评论18 发布时间:2018-1-5 16:42

举报

18个回答
creep 回答时间:2018-1-5 18:34:03
感谢分享,如果确认是bug,可以发邮件给  mcu.china@st.com 反馈下!!
lebment 回答时间:2018-1-5 23:08:29
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。
ldskendy 回答时间:2018-1-6 10:00:49
lebment 发表于 2018-1-5 23:08
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...

我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-6 10:01:45
creep 发表于 2018-1-5 18:34
感谢分享,如果确认是bug,可以发邮件给   反馈下!!

已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

支持!!!
creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
胤幻1988 回答时间:2018-1-7 10:17:16
有意思。。我还是怀恋标准库啊。。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
FATFS的版本是最新的0.13r
HAL的版本是最新的CUBEF41.18.0












SDIO.rar

下载

75.2 KB, 下载次数: 117

lebment 回答时间:2018-1-10 16:20:07
谢谢分享。
12下一页

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版