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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。7 I1 z" a" ?- M+ X2 ~- i

# O5 b6 ^1 h! USTM32_CUBE F4V1.18.0
7 l% x6 C# [/ ?; h8 [7 T5 G4 V# X2 j文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
$ E3 e5 V8 q* o- j! B1 kif(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
- _  c( h' p1 U3 J3 }' `! x+ P   {
9 t+ M$ h; [7 h& c6 P     /* Card is SD V2.0 compliant */2 T+ p- x- D, L* ?8 C9 Q
     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);
( j% x/ V4 [" }! q( R5 r' _: S' a     
% d4 O0 D7 b; F0 F     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
/ U& o  b9 o5 C7 ]. G# y( a  q   }
; l) _. [6 i; l5 _( M: G: h  g& k  A' c
6 o; x4 C* u8 N% [
文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作4 h0 q' h7 C2 X9 B% V

/ b# |0 l5 h1 E. a4 o" B5 F* W5 h1 d3 ?& s: l3 q
errorstate = SDMMC_CmdOperCond(hsd->Instance);0 V+ s* ]) \% `
   if(errorstate != HAL_SD_ERROR_NONE). j( k; E# r! a, I& q, L
   {" b4 n% c8 y" N, t& e% @
     hsd->SdCard.CardVersion = CARD_V1_X;1 T+ j& ]' M  l8 n5 }' O0 g; ?4 f
/********************* LDS:********************************/
9 k6 R3 D6 _* O5 f          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令
4 |8 z/ Q6 ]' G# Q8 A     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  % j5 N5 _# X6 v6 u' D6 n3 S# U
     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
7 ~* ]" U% @: T, }$ O     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
9 X3 l% s5 W4 w/ Y) l- n     {
' P3 j) I: a0 O       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;/ Q( L% f& N( z
     }
' o# }0 k, W: A5 ~$ X# q /********************* LDS:*********************************/ 2 y& ?2 f1 Q/ @# S' a/ c, c

评分

参与人数 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
+ ~$ E: M% L4 W; A* g回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...

; H. w% k  L& t) p9 O我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。! _+ O7 |) Q& s% X# c4 l" d6 k
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
" W- x* i: A- ^- n6 }; W/ [7 \7 W% @- N对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
/ [9 }0 k$ m: D7 Z( v% w$ KFATFS的版本是最新的0.13r+ d$ G- a3 w& B- m) @; L0 p& q
HAL的版本是最新的CUBEF41.18.0
0 R3 ?6 M: E" v6 [) W8 G: d( ]1 m; E6 a3 l" u

  `1 d( b6 m9 w
; e" I: l8 i% s! H& o
" q! u1 \- j+ F4 |' [0 x' \, H- X( u
5 }" X8 q. D' G' Y& U: B8 Q6 C. X. L. ]; [

3 U& D4 ]. f4 Z! L  O# @
: R$ T* {# w$ d; P) Q$ T5 q: \+ b9 Y+ K8 |

. B6 E% e$ }. q* h# C: N( e0 _
! J3 w2 o6 Z% X8 }
2 @% w/ l* ~3 K, Z

SDIO.rar

下载

75.2 KB, 下载次数: 160

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01
5 n; g7 M0 f; R( o已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

3 J) c, @& B+ z. H% C6 ^8 Y4 F0 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
: Q2 M" \1 I  {% O. Y5 a+ P4 |感谢分享,如果确认是bug,可以发邮件给   反馈下!!
. |: t" p* h3 p4 u2 V
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01) r! N5 D/ |, `; }4 i1 w; X3 L  }& q5 Z
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
) o0 }1 J& q, `, t4 d& u1 G
支持!!!
胤幻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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版