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

不吐不快,ST HAL库BUG解决

[复制链接]
ldskendy 发布时间:2018-1-5 16:42
最近在使用ST的HAL库开发项目,在调试过程中,花费了我几个昼夜,终于发现问题不在我代码上,是ST的库有一点点问题,可能是ST芯片涉及的底层驱动、接口太多了,技术人员也不能一一验证吧。直接贴问题代码吧。$ e/ g% J9 N0 [# S* W& |
: y" Q) Q7 ]0 m' z
STM32_CUBE F4V1.18.0
! Z9 q2 u& s$ z# x7 ^- f文件:stm32f4xx_ll_sdmmc.c  L1468,原来这段代码应该是有问题的,超时标志,居然清EMDREND标志,那接下来的那条指令很可能直接超时了。
  o/ _/ w1 Z0 tif(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT))/ h  Z( K. Y" z" V5 {/ n
   {; l$ e, A& @) N( }
     /* Card is SD V2.0 compliant */; |. J- c9 b$ T$ z) Z& J
     __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT);    //LDS原代码:__SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND);- Q# ^; n) g! ]1 I* T7 M% b0 V' c
     
2 e' h! G! w) R     return SDMMC_ERROR_CMD_RSP_TIMEOUT;/ ~6 I* G6 `/ K
   }( R8 P( o. Y% \) [7 m8 a

' W* ]; N: C+ c- f, q
6 Z7 C: L6 }& B/ n  \文件:stm32f4xx_hal_sd.c,L2547,增加一条CMD55指令,解决问题:某些SDSC卡无法初始化识别。在CMD8后的第一条CMD55指令的R1回应会置位_ILLEGAL_CMD,造成初始化程序返回,无法初始化SDSC卡,先加发一条CMD55,只对超时位判断, 如果超时就是MMC,否则发ACMD41。进入后续操作: w- q! A) a/ u3 x- S" [& h

, X" n5 x3 i% M1 w+ y4 }$ y" Z) X7 y4 p
errorstate = SDMMC_CmdOperCond(hsd->Instance);/ G! G' {+ ~& h1 v
   if(errorstate != HAL_SD_ERROR_NONE)3 Z' x0 }, ]0 f! a" O' [- G
   {
- [' P5 C9 ~2 B7 Z; z3 m     hsd->SdCard.CardVersion = CARD_V1_X;! S. J# j. a1 @- q5 L
/********************* LDS:********************************/- u0 }2 M& u+ B" J
          /* 增加以下代码,某些SDSC卡,在CMD8后的第一条CMD55指令9 d; V, m, X, ?! u
     * 的R1回应会置位_ILLEGAL_CMD,如果超时就是MMC卡         */  ; x# m; i. o6 M. u' I
     errorstate = SDMMC_CmdAppCommand(hsd->Instance, 0U);
$ P* {7 Z7 M! E" ?( V1 c+ V9 _     if(errorstate == SDMMC_ERROR_CMD_RSP_TIMEOUT)      //MMC¿¨         
7 j* R2 ]+ V& \4 q     {
9 ]2 j2 z* x5 X% E& y       return HAL_SD_ERROR_UNSUPPORTED_FEATURE;  o6 c. G- \; t' {
     }
& I3 }" l5 t: c( Z8 F) }6 Q' P /********************* LDS:*********************************/ 4 C! t% x. a" V, s6 |

评分

参与人数 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! o9 z' }8 s3 \2 F
回头试试,CubeMX+SD+FATFS,老是不成功,驱动确实有问题,技不如人只能看大佬找bug。 ...

9 ^. j8 m+ I# D+ o! d6 q% H7 D我的也是SD+FATFS,不过没有用CubeMX,以前是用DFP里的HAL代码,也有一点总部,后来发现CubeF4V1.18的代码新点,就直接复制HAL到工程里使用了。7 i7 P0 ?! H+ l/ |) \
对了,HAL的SD驱动,如果你使用DMA传输数据,中断函数又是直接调HAL的自带的话,也有BUG的,有空了我再贴出来,解决方法就是,要不自已写中断函数代码,要不改HAL库的函数。
ldskendy 回答时间:2018-1-10 14:09:15
有网友说自己还是调不出,现在把这部分代码帖上吧。
5 v+ E4 K9 S( F/ S3 u" J对应的硬件是原子的F407,探索者,使用了DMA传输方式,中断代码在stm32f4xx_it.c上,(为什么放这里?我反这个文件的代码全部定义到片上的RAM区去执行了,)
9 B4 L$ f& f2 v, `4 B1 u' ]FATFS的版本是最新的0.13r
, U2 T- {0 c# a" M1 V$ cHAL的版本是最新的CUBEF41.18.0
& G! n1 y" I( i% B& |# {" Z+ h* ?) c: u7 I* @* V  t: Q& K3 j

& ~! [0 s, w; d& v9 Y
( b8 ^4 _5 R" X7 i) m$ Q/ j
2 ^: q1 R2 G, }& P& T
+ ?4 Z( ]+ j5 V0 S9 V2 ^2 l! F. |

8 R0 I" V( t- i" g5 q* `" z4 L
+ {: D$ G. R. y! R" w* J
9 z) }/ K, N- q& D9 j) t- z2 B
2 W6 _4 ]$ a7 l" _( l) K' x1 G$ j; S& B! N

3 `" w- D4 ]/ {+ ]

SDIO.rar

下载

75.2 KB, 下载次数: 152

creep 回答时间:2018-1-6 11:43:58
ldskendy 发表于 2018-1-6 10:01. H( d8 ~3 k# b# s/ H2 u
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

% o5 L1 C% Y$ u' }- ]3 p我之前发邮件反馈问题很快会收到反馈结果的,工作日的时候可能比较快一些收到回复。
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
, i: ?* o6 \9 E4 l; G感谢分享,如果确认是bug,可以发邮件给   反馈下!!
; e) w: \% D3 K/ J: A2 ]; M2 D
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。
MrJiu 回答时间:2018-1-6 10:13:02
ldskendy 发表于 2018-1-6 10:01. x/ S7 _9 ^7 s! H  a  J6 Q4 y/ B
已发邮件,试试反馈有没有效果,如果有回复的话,把以前遇到的问题也反馈了。 ...

/ }! r9 {' a) M2 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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版