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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。6 y8 {5 V8 r$ @, R7 S% j. q
  r5 R1 b2 C2 d( l- i3 e  B, m2 x3 _
STM32_CUBE F4V1.18.0
% F0 i/ m, a* A! b- s文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
1 v3 y1 E$ c3 R# e9 Hif(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))  V$ C) l$ C+ F* `9 Y
   {9 Q  O. K* s$ S, T3 [
     /* Card is SD V2.0 compliant */
6 l- V- r0 Y3 x9 ?/ f     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);
' r$ Y. ^: G& p$ B$ y     0 `* d- r) X- h' v% I( e
     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
/ ?$ R4 Q5 c  C* }. R0 Q7 _3 H   }! ~) \4 Y, W7 ~- i7 G% P

" J% _2 R( |! }
" D& y; Y" H' b% Z: v文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作, U& t# k3 A- w# H

- \6 H) I% l, a" y( Y2 v2 U# E; Z9 r& |5 W( V/ {' W6 s1 \6 Z
errorstate = SDMMC_CmdOperCond(hsd->Instance);
, ]- t% [, F6 x1 g/ k0 E) }  d   if(errorstate != HAL_SD_ERROR_NONE)
+ I8 f" L( @' |' W7 s   {
& \" D. g3 d! R/ y* L$ a) W9 w     hsd->SdCard.CardVersion = CARD_V1_X;
, G0 m1 |% l3 K- q# P /********************* LDS:********************************/, S& H( ^& r4 ]$ `3 m5 S1 G) L9 `
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令
0 r, H2 Z7 g" `8 n$ E( A: X7 |( r     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  1 U% S; h/ q/ h* U
     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
; a0 }8 M  P+ Y* T5 \     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
' x1 `6 O6 s8 f) a6 T# F& k" Z1 G     {
5 |7 v: Y# v$ b( P, J: }       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;
! _' `" K$ k9 U; X* A     }
9 ^7 A5 _7 a7 F /********************* LDS:*********************************/ / L9 [( ~; M% s  F( G6 J

评分

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

查看全部评分

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

举报

18个回答
ldskendy 回答时间:2018-1-6 10:00:49
lebment 发表于 2018-1-5 23:08
' g9 Q2 [" O/ K' |9 w1 Y回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...
8 ?# s8 [, w, q( v/ |5 M$ E/ f
我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。
# t* I/ ?5 \1 ?* n- S" y; l对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。 , d% n: H7 T1 j3 B! }
对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
, r$ S  _8 ]: @/ r) RFATFS的版本是最新的0.13r; b$ O: X" T' T0 P9 H
HAL的版本是最新的CUBEF41.18.0, x" u/ e6 u: j4 k3 F: A
& m* }& M% R7 [5 ?5 _* f. Z

- C# w3 o7 \, S3 R
3 R" n( D  _: k+ O6 L2 O( K0 ^% G$ g3 @* I6 Q% J
+ @. A8 M2 X0 @9 l

% ^2 k$ l+ J7 t$ X8 L$ U# ]$ m2 f: }9 X9 l1 d' [3 j4 H6 V, r
5 k' `+ j' q3 o, c+ s1 S/ @/ U) r
9 ^7 B4 |+ N2 h' r; f
! t! b6 `' o' y* ]' ?6 O

8 Z  E0 \1 W+ ^5 d
3 Q% A; G- R& @0 H6 \; {0 m7 e3 u

SDIO.rar

下载

75.2 KB, 下载次数: 152

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01
1 i/ V( O8 H# Y- R% E4 \: {已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
! F" e+ U5 |7 v$ ~. T; ~; u, }
我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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:01:45
creep 发表于 2018-1-5 18:34
/ Z: Y4 P% S; `( S6 Z感谢分享,如果确认是bug,可以发邮件给   反馈下!!
6 g% Y" k4 N5 e6 p3 A3 T
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01
6 l1 [. K8 q9 ~# l' c已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
! N% E4 c7 X6 Z# q4 W
支持!!!
胤幻1988 回答时间:2018-1-7 10:17:16
有意思。。我还是怀恋标准库啊。。
lebment 回答时间:2018-1-10 16:20:07
谢谢分享。
legenderw 回答时间:2018-1-22 13:27:52
不错!谢谢分享!
五哥1 回答时间:2018-1-23 00:25:22
支持!!!
hjl2832 回答时间:2018-1-23 09:56:28
谢谢分享经验!!!!!
板子粉丝 回答时间:2018-2-28 09:23:28
跟着学习
板子粉丝 回答时间:2018-2-28 09:25:00
期待有下文
12下一页

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版