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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。
; L; t( a; |; u- T8 ^  D
+ s9 E" C2 B) G% }STM32_CUBE F4V1.18.0
5 \, u+ u3 ^3 t& u$ u文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。* }) i- ~/ [& U0 z" {7 f. `
if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
. ]% c) C% z4 s. ?% ?: K   {
7 K3 G1 T( t6 \: @     /* Card is SD V2.0 compliant */
  z" m3 ]. J5 Y2 Z     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);
1 h) ^) _! m/ X  X' |4 G3 W     
/ O8 n, h" o7 R1 O* \2 I3 H7 m     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
8 B& o, z; `1 q3 U6 u5 n   }
! A3 _, s# Z) N6 \; Q6 y
0 E% a, X" `% A6 b  Z- g7 v( }7 J/ w8 k, {
文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作
6 y' i* _! y8 R1 n6 V# d  n
6 j" X2 F2 C7 U) _. l& U
5 j" {& S) T+ V9 F0 x6 ~errorstate = SDMMC_CmdOperCond(hsd->Instance);( a, T0 K6 C& D" r; ^- q" R
   if(errorstate != HAL_SD_ERROR_NONE)
- V  X* D2 {& X& U% T6 B& d# U& `   {
6 T1 h1 D& @. \     hsd->SdCard.CardVersion = CARD_V1_X;
) h. }4 [/ T1 s8 [% f  n /********************* LDS:********************************/
+ C# Y1 V) p% P/ ]0 f          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令) r1 V: n! v6 _# g& \
     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  
7 q. C7 F! G: y; d     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);. d5 N8 h) D7 Q& @0 y
     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
$ @5 a8 h! W2 @/ {     {
. Z, q+ {7 R' ]/ I! p/ t% `       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;
9 |. R- V- N/ c     }/ }! D/ d: [" z! D
/********************* LDS:*********************************/
# r  n3 w: K/ R. _* J

评分

参与人数 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:086 X8 _. o: a2 {3 s
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...
- m# Q; K* v5 ]
我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。" n7 E+ o; a' A. E
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
& V/ q$ J- J  w" D对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,). O4 L: p" y" J1 |
FATFS的版本是最新的0.13r. _: ?0 P. g  ?6 B' Y0 N
HAL的版本是最新的CUBEF41.18.0
% Z! u5 ^9 r* X4 t" s* A3 C9 W! F& K" a( p
0 `; s* Q6 J. e5 d

6 x8 q% Z! M( ]. t/ h. Z
1 ]6 ?% q# k! H4 {. X9 r) `$ J7 e+ _6 g7 z) }- ?
# p. M" F7 N. Y# @3 U3 z
; W' v' F1 x. A7 \2 H% l
  Z  E' z8 d! {' o) s

& K( V# g4 e1 ~; L! u1 _8 \# M$ v1 L3 N$ H$ {$ B' t! k0 `

# x" _  g8 x- k0 K% D4 z
& g& }# B' _% J

SDIO.rar

下载

75.2 KB, 下载次数: 160

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01
3 Y! M8 @' Q, I- `已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

* S; u! N: v5 @% O4 |) n% a* J我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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:346 k- L5 @( D, ~# C
感谢分享,如果确认是bug,可以发邮件给   反馈下!!
8 M% s/ M! [* U7 q) ]- c" D, K' {
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01* k3 ~- j6 S: y" F* O8 k. j
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

. b  L1 S0 A+ w9 E1 O! q支持!!!
胤幻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 手机版