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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。, A1 G4 @# ]0 p" O  {4 d# T

5 a5 p( U% M9 _* \! t/ c$ jSTM32_CUBE F4V1.18.0
- \: J' ?0 S8 E# b8 ^文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
0 X' T  T' ?* X" c0 ?1 }$ Nif(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))
& C: b9 o3 V  E2 k7 z8 Z   {% B: ?( c1 w; ~/ S
     /* Card is SD V2.0 compliant */
) \+ a* I" l: z     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);1 H. X9 o6 P* @; C8 S
     
  R# O0 M: X% [     return SDMMC_ERROR_CMD_RSP_TIMEOUT;
/ o2 C! ?& t5 f$ Z3 g1 Q   }
! l" `  Y# H5 u# [0 B0 Y2 I4 @& ^
- i! s1 }. o- B9 ^9 d0 w6 l
6 \6 X: {  }4 J3 @5 ~; }文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作; c  ^! @0 M4 m& u. V3 C' [- h

, ?5 y' X; j: v( U
/ p9 G  T: Y8 E2 X  F3 merrorstate = SDMMC_CmdOperCond(hsd->Instance);
7 X5 `/ F0 X& I8 h, j5 O# g   if(errorstate != HAL_SD_ERROR_NONE)* Z& F: K& N0 F' |2 i
   {7 J. o6 h# s  J+ W
     hsd->SdCard.CardVersion = CARD_V1_X;/ s  n- P: ?; L# o
/********************* LDS:********************************/
1 n% P8 \6 c- o7 a* K$ ~6 [          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令0 I$ ^& I) V" c
     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  . w' x, b- H0 ^5 T- K' l
     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
) b( i: f& T& O: k     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
) ]# O7 h- }+ A5 ^: ?8 \     {' A4 H* ~8 j7 d, w
       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;& k; d3 Q, d$ }7 D7 Q4 r& ]. n
     }
& \0 _! `  \8 l$ I) ~ /********************* LDS:*********************************/
6 P/ Q- h" c; s) V# l( P& d( W

评分

参与人数 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:088 T( o7 h) @+ e/ m" _
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...
% ?( N9 |4 i5 y! ~; d2 q
我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。2 J* T9 Z3 y8 M' |, A
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。 / }# o* J  C5 u; d1 u
对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)) H. Q8 w# a% ^  [
FATFS的版本是最新的0.13r" O( V  A7 m2 a: s9 ^
HAL的版本是最新的CUBEF41.18.0
9 @' o) }$ c$ L( `# ~' U0 v6 N. O: N" x

$ L" L6 u5 e9 w, Y, g) s8 [2 |
( w( c6 k+ d9 c" \5 E1 b2 Q
/ U3 N6 y; F8 P" i8 z" O
/ K0 r0 _! Z' @# M/ m6 k
3 O! y) O# K' c1 H) l4 Y1 m4 U& p- x; }! e

, Q5 l5 A9 [2 P7 o
! w1 P: g  x& C( r3 ~, y+ u7 H; q# e' j3 \9 Y
/ @- O9 u5 K$ l! |

' m( y& ]# @: w, U. m* W- M

SDIO.rar

下载

75.2 KB, 下载次数: 160

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01
# q) M5 |2 o3 f9 A" y已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...
9 ]) w. A4 y  `: E2 t
我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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
4 k" U' H/ k2 v( {6 p0 W( x+ b8 [& n感谢分享,如果确认是bug,可以发邮件给   反馈下!!

0 g3 e* R: N& C! O0 f- c已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01% g: x7 F5 x( i# {
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

7 k) h9 h7 d8 f支持!!!
胤幻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 手机版