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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。
9 y; e; |7 f9 z" N, y4 [$ S
5 F9 M3 a8 b# G! f) {( U: B5 iSTM32_CUBE F4V1.18.0) o6 {$ c: z5 Y
文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。5 ]# X4 ?" a5 \
if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
& C9 [7 N) |) m8 U- E6 r   {5 H! `4 @5 S% G/ i5 J
     /* Card is SD V2.0 compliant */4 C) ?$ P- X3 ?( o$ g7 `7 z
     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);+ ~8 Y. y8 ~( x" G% R& m: w" j4 L+ g( {
     
& t& q/ U3 |6 y6 A( t     return SDMMC_ERROR_CMD_RSP_TIMEOUT;6 T4 J3 t9 q4 y9 n7 _
   }
% i  Y0 K6 X$ g/ L4 b
/ u- K4 ^- S3 q8 O7 s6 W: f  x7 s2 l5 p8 p
文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作
, @# x; A3 w0 ^+ h8 |* ]9 f4 z- r/ x) \+ m, u) G% |
# s; h- i" s6 I, o
errorstate = SDMMC_CmdOperCond(hsd->Instance);
; ^4 b: W0 z# R/ {6 B   if(errorstate != HAL_SD_ERROR_NONE)
/ @( D0 O  F, M( c& \- y   {
; x; X: b4 K. f: p8 Y9 R     hsd->SdCard.CardVersion = CARD_V1_X;6 N& V7 `' |- h. c% _
/********************* LDS:********************************/3 p* @' o, [7 X9 N+ r% z9 n4 c6 U. r
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令
9 i5 [. X" p+ b     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  
+ N) \5 v" Q2 G1 X( y* O$ C     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
1 K  i- B8 q! q) l: B3 {     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         2 y( a) F, Y+ ?0 `6 N, I
     {
2 y+ p5 q4 Y& W0 B7 d! q3 [% P       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;3 k0 P4 z  H1 y- T9 @8 }
     }' U" }+ R& d) _- S
/********************* LDS:*********************************/ : J9 t+ u$ m) Y/ \

评分

参与人数 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$ h% A: @( u  F( L4 o% s
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...
& k% _7 E& T0 K
我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。
5 J9 f, Q( l$ a: i" t! d- Z; g) H对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
/ a$ U3 [6 v' \" f1 E! w对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
9 B+ W+ c, i  m7 _3 d5 ]3 fFATFS的版本是最新的0.13r
- G/ k' v5 y0 @HAL的版本是最新的CUBEF41.18.0
$ g9 B% G; N# a9 r; l; J# ]9 L9 N* ?/ F$ m; `' F) Z
0 \# T7 p9 k0 V! G! c% |2 a' _

' z/ e5 t; ~. M  Q' J8 N) ^4 y$ F+ `0 Y; O% O' D) j

* y3 Q$ w; c3 V' L2 p& k: c# \* r% _, g/ [" A5 D0 y

  b2 W! z; V' `# Y# s
# {- d' T5 X1 e" u/ U. k3 d3 S- j3 t( g1 a- h
/ K& J+ V! Q) h
; _: n, z; m6 D5 M" C4 A1 i3 |9 f1 ?
5 i$ s/ o# T5 g$ p- V  ?

SDIO.rar

下载

75.2 KB, 下载次数: 152

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01- e& v/ p" O# m. U6 B& S, I
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
. d9 H4 V+ I8 N' S/ W5 m- _# w( I7 L
我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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:345 J/ J7 F8 R! A: q7 W
感谢分享,如果确认是bug,可以发邮件给   反馈下!!
9 v6 n) _8 z; ^: n+ i
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01
) t# F; ]0 ?9 s2 N: S5 f0 R已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
: Z: c% `4 m1 X6 j* ?& ?
支持!!!
胤幻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 手机版