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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。! B* r: l+ X- c5 _9 u  A
8 @/ I) X! L& T7 Q
STM32_CUBE F4V1.18.0/ R' H: n  r7 b
文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
' r1 Q  j. V5 v% k  t7 z3 p. ^if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))1 E4 Y. s# t" {* \) }2 G
   {. g0 i7 Z; X% \6 |4 I
     /* Card is SD V2.0 compliant */$ x) [  g" G: w
     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);
* F+ V5 A- f- V* _6 V     ) T- f, \: |& z5 i' v. Y
     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
1 a. }% W) Z! M6 p- Q   }
& |" V+ {6 h4 z( ?$ ^0 C
3 C+ A! M6 k! d, i8 F* X, r2 T' p, L2 A* ^$ @
文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作* }: ]( z- R- [$ s) o2 L/ X

2 y6 a0 X8 F3 @  H# H7 O0 _8 z5 M  p8 d9 _
errorstate = SDMMC_CmdOperCond(hsd->Instance);" A9 i3 ~; |* L  }- z
   if(errorstate != HAL_SD_ERROR_NONE)
5 U0 {% v7 h: h* Q4 Z0 z   {6 B3 h% |3 C1 y2 G* T- D
     hsd->SdCard.CardVersion = CARD_V1_X;
/ X3 h! @3 D9 b+ q# V$ O& i1 k /********************* LDS:********************************// P3 U. d! t( R# f+ D+ S6 d
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令
3 Q. l) c, G; }" p9 X     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  + e$ U+ d( y. i6 t( d8 c. Y7 E
     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
& |2 E+ T) z. c" P, q     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         * F- D8 z. a3 f- }: N
     {3 u7 b) i, M" h/ F$ c8 J" @. U! T2 [
       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;0 D% z" H, ?- l: r+ f
     }" i8 M( y: k( Q# q  O6 v
/********************* LDS:*********************************/
9 z) b* H' ~7 u

评分

参与人数 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:087 b) y+ \' d" {+ |+ c$ e
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...
/ k. U& X) H* m% R9 ^" x. f- |; R4 }
我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。& D/ ~- s9 M+ ?# `0 k2 v
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
5 l/ S& Q* G4 [; j7 [+ I对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
. N5 ?: O; L9 z- P, hFATFS的版本是最新的0.13r
# B, s, e! q: Z9 m6 F/ dHAL的版本是最新的CUBEF41.18.0
8 \8 Q# M0 M! h2 H' J+ q6 _$ y& n# n7 O7 _, j3 Q& j, ]: r" C
5 |/ X) L% I5 g4 F* b) s+ N

* T, \7 t3 x8 y2 {% x; C* x) c. {- [6 y: z: D
. q, W9 A+ r2 c, C7 D: w# b
. E; L) K0 N1 o3 j
' C( g- U* q: H1 {2 }3 z
3 g" p- t  @- x) p# V7 B

5 D' U- j. Y0 H% w. j! D4 X7 a( A# K" ?

# A( m# f' I- r& S
" h% A, o8 a9 {; a- o& b' L1 a$ l

SDIO.rar

下载

75.2 KB, 下载次数: 152

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01
: J* H( U9 K; d, M5 i" a% f已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

& U' r$ ^) g7 D  C; Y* X, W9 h+ S, ?我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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
2 K. |7 `7 G5 j1 c2 z4 ~% B" q感谢分享,如果确认是bug,可以发邮件给   反馈下!!

  c1 L/ m5 Z% ^* h& c8 w已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:018 ^- X  O& j( [) S  e% }
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

5 ~$ |  ~9 W% F7 q) B5 |9 T+ T支持!!!
胤幻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 手机版