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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。
! H3 E/ X0 g- k9 w8 y
, O0 N: p, A( u4 w$ ~+ c: sSTM32_CUBE F4V1.18.08 M1 }6 n* ~6 r8 `7 B0 e
文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。" T+ I8 e- N- ~/ Z9 j0 U9 U
if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
) ]! O6 s4 v. F& e* R+ h5 O: e   {9 G7 U% F5 M/ G0 g4 b6 X
     /* Card is SD V2.0 compliant */$ `7 ]4 k1 |! q+ f9 m% ^
     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);1 k8 X, {4 J2 S) u# ^9 h& W, W
       \1 v+ `/ a7 n7 q, x
     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
; t3 m+ ^# ]+ N4 u+ `  k$ Q" _% s1 X   }5 b, ?9 x3 A0 K5 v- `9 a" D, h

# @: q6 h3 U) @$ e2 E9 z' g4 V+ T9 ]; {/ y. x) x# w
文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作
. ^3 c' W: @) J# |7 u' `: R4 d% c1 X) X6 o; M5 {; U/ B
! J' l5 V! W% j
errorstate = SDMMC_CmdOperCond(hsd->Instance);
  l4 h: d$ i! d   if(errorstate != HAL_SD_ERROR_NONE)/ U- `+ {" F% J$ i# w) k
   {
2 W2 R5 F; ?" ]$ h     hsd->SdCard.CardVersion = CARD_V1_X;8 w7 |, R. G" Q( o- L9 F* F0 Z
/********************* LDS:********************************/9 }9 Q- L% \) H1 y' l' h2 c
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令
4 J, X' K/ R8 s) ]; K$ Z) W+ q; a     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  
) F) L+ m7 c4 I6 Q" v     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
) C! S: E  d7 B9 j% f1 {# E     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         . d7 q5 i: I- C1 _4 Y, g
     {
) F* K4 r6 Z, W- w9 w       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;
  |4 ~) o$ ], G3 C& b5 _     }
* w( C  p( l& c3 G7 J /********************* LDS:*********************************/ 1 o' b5 Q0 A2 |" P

评分

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

查看全部评分

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

举报

19个回答
ldskendy 回答时间:2018-1-6 10:00:49
lebment 发表于 2018-1-5 23:089 j( W  U6 y* m4 _! ~% o8 d& r
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...

+ l6 c8 w! ?9 |4 H, C2 m5 A! `我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。$ [# C0 L& H! i) _& m& I3 m
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。 # q* H' B$ v$ V$ a, L
对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
' f# Z" u1 T$ D/ p# [! ^. NFATFS的版本是最新的0.13r
. l- z. K/ H! V- X5 T) NHAL的版本是最新的CUBEF41.18.0  r5 _. {: {$ |; i8 R( |
# {8 u- Q$ I, Z" c! `
! t6 N5 e2 w! J% J
8 [: Y  r- a% j0 c0 h

" e( Q5 |. T' N! N, D5 l; i+ B/ k4 Y/ e+ Y

  J2 ~/ B+ W- ^# P  i/ Q2 [  l
3 L: U* J' {$ T: w8 B
* Z% r) u$ z2 ]" ^
/ a% v) l  p, P2 C2 y7 w, L
3 H( B- O' z* \- G8 X- p. S7 c0 n1 D, c/ D5 t8 Y  i% @
9 M( ~/ u+ B. w7 E7 \  q+ M$ V

SDIO.rar

下载

75.2 KB, 下载次数: 161

SMT64 回答时间:2026-6-25 14:48:52

屁用没有,这已经是祖传bug了,hal库更新迭代多少次了,,st改过吗?估计他们的想法是1bit模式又不是不能用为什么一定要修复4bit的bug,同样的RTC初始化强制重置时间的问题,也是一样不打算改的

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
% P& C0 `2 `+ @' L! P/ O感谢分享,如果确认是bug,可以发邮件给   反馈下!!

, q1 ~' k$ Y; t7 ^已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01
9 G% S/ E5 `& L* m& F' B已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
0 N. q5 G) v. m5 {# N5 U6 F6 A0 L* J
支持!!!
creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01: P* r" l# ]8 k5 C2 R5 F
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
( K" `- a8 g" P- ?, I+ ^% x" \* O
我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
胤幻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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版