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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。
0 c1 d4 j: E  O# L' u
: I8 q  |1 Q/ g) {: k2 h. \STM32_CUBE F4V1.18.0& A7 ]' D- \+ L+ _" i. T; _: z
文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
3 z# A9 ]1 q, a, |# t* c2 d& G4 yif(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
3 S, z" @4 ?! s) [   {; N# N% U2 q& D$ v' M
     /* Card is SD V2.0 compliant */
4 h+ g8 x9 l; O- y% U) n/ ~     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);, m1 o9 k4 `( D
     
$ C$ i6 Y* U3 ~0 m% t5 @2 |     return SDMMC_ERROR_CMD_RSP_TIMEOUT;( m, i& l" C0 S8 _; b5 I5 A8 D
   }
$ `' B4 S4 n* G) G$ j, \& O; ?# o& [$ L2 `( F% l2 v2 k3 _

7 p5 D% q" y  b8 ~& Y文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作* O3 w9 L3 R) w2 T

' {6 S) k: o6 z6 F' l& E
" W( H+ P+ B1 ^errorstate = SDMMC_CmdOperCond(hsd->Instance);# u1 ]: r5 U# ]: }3 H
   if(errorstate != HAL_SD_ERROR_NONE)
  G" }) c( x+ d* R* h   {
1 g  |# V$ _- U# a" s' G+ H, }     hsd->SdCard.CardVersion = CARD_V1_X;
( U7 c  b3 ?) H/ y3 S /********************* LDS:********************************/. S5 I' n' X; r$ @8 t7 V' {
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令7 h" ^% I; z9 u2 c# R: m
     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  
  G' h. Q+ l% k6 L* H* j     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);/ \$ [, y: Z' |3 J* S% n! p
     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
: [+ |: N! M) P8 B& L& z: V: R     {# g& W+ x7 S. U2 G' h5 b, d
       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;4 y8 Y1 [2 ]# @
     }
/ H; {( w: ^5 |( w1 X8 B' M /********************* LDS:*********************************/
( M6 L# c+ x6 D% q- K

评分

参与人数 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
+ f  ]6 [- i  N) l7 Z! X回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...
6 R/ _- G2 ~+ b4 p. i: s1 p
我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。
; V; I2 b6 K6 H4 P, V& N; E7 K) G对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
( T, g& T* r1 C8 f) ?对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)2 L7 s- [9 D. f
FATFS的版本是最新的0.13r& _0 S+ M8 H( T8 l
HAL的版本是最新的CUBEF41.18.0
' K+ m  x" o" t8 c
$ ]5 ~9 a/ W8 Z- |
# g* t1 w! A" Q7 |0 e/ B7 ^- D( w, w! `0 U1 z1 w
. p7 Y) |1 i) r5 m/ v
: _& ]! ?! _7 ~8 u. U
2 o$ W; O. f$ V0 o5 v2 ?
, X4 m4 f3 f3 G1 A3 N
4 S! f5 b& x% b$ b  y
, W7 K) N- T* Q: E/ y1 f3 P9 m
0 Z8 C- \0 w% g# S  X' _

3 Q/ e1 W2 X* m5 Q6 \& @) a0 [6 _5 _8 \2 A- P, h8 [

SDIO.rar

下载

75.2 KB, 下载次数: 152

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01( f( B+ V1 X. n& k- {
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
) d+ A& u8 ~4 B, O
我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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
3 g+ I( l/ A# ]" b感谢分享,如果确认是bug,可以发邮件给   反馈下!!
4 |- r; O9 p5 s3 ~0 ]/ Y# y# I1 u
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01- k& b1 u) y  j( B8 l1 m! t
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
1 c9 I+ d4 R$ [3 n% Q2 Q& {1 N1 d
支持!!!
胤幻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 手机版