硬汉嵌入式论坛

 找回密码
 立即注册
查看: 580|回复: 8
收起左侧

[RTOS] ThreadX全家桶sd卡一直错误

[复制链接]

3

主题

4

回帖

13

积分

新手上路

积分
13
发表于 2025-3-12 17:20:38 | 显示全部楼层 |阅读模式
硬汉好,参照开发板sd卡自己做的板子电路一点没变,用ThreadX 2.0全家桶测试,sd初始化不通过,if(HAL_SD_Init(&uSdHandle) != HAL_OK)这里的if (HAL_SD_GetCardStatus(hsd, &CardStatus) != HAL_OK)一直返回HAL_SD_ERROR_DATA_CRC_FAIL,不知道咋回事啊 ?
回复

使用道具 举报

3

主题

4

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2025-3-12 19:38:11 来自手机 | 显示全部楼层
卡的容量等信息都可以读出来的,完后就crc错误了
回复

使用道具 举报

692

主题

3576

回帖

5677

积分

论坛元老

积分
5677
发表于 2025-3-12 20:45:00 | 显示全部楼层
kouzg12374 发表于 2025-3-12 19:38
卡的容量等信息都可以读出来的,完后就crc错误了

降低 SD 时钟频率看看
回复

使用道具 举报

10

主题

53

回帖

83

积分

初级会员

积分
83
发表于 2025-3-13 00:25:41 | 显示全部楼层
SDMMC开中断 以及 相应的ram cache关掉试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2025-3-13 08:00:19 | 显示全部楼层
1、看看是不是卡的问题,使用SD卡联盟的小软件先格式化下。
2、降低时钟速度,同时使用1线方式,先不用4线测试下。
3、还有就是卡座是不是没有接触好。
回复

使用道具 举报

3

主题

4

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2025-3-13 08:56:13 | 显示全部楼层
eric2013 发表于 2025-3-13 08:00
1、看看是不是卡的问题,使用SD卡联盟的小软件先格式化下。
2、降低时钟速度,同时使用1线方式,先不用4线 ...

卡确实按照教程的工具格式化的,能正常读取,时钟从400k改为20k了,用cutemx生成的代码是可以读写sd的,所以硬件无问题的。但是我想用全家桶改,卡到这了,
/* Send ACMD13 (SD_APP_STAUS)  with argument as card's RCA */
  errorstate = SDMMC_CmdStatusRegister(hsd->Instance);
  if (errorstate != HAL_SD_ERROR_NONE)
  {
    hsd->ErrorCode |= HAL_SD_ERROR_NONE;
    return errorstate;
  }

  /* Get status data */
  while (!__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXOVERR | SDMMC_FLAG_DCRCFAIL | SDMMC_FLAG_DTIMEOUT | SDMMC_FLAG_DATAEND))
  {
    if (__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_RXFIFOHF))
    {
      for (count = 0U; count < 8U; count++)
      {
        *pData = SDMMC_ReadFIFO(hsd->Instance);
        pData++;
      }
    }
问题出现在SDMMC_ReadFIFO后面,else if (__HAL_SD_GET_FLAG(hsd, SDMMC_FLAG_DCRCFAIL))这个不通过。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2025-3-14 07:43:21 | 显示全部楼层
kouzg12374 发表于 2025-3-13 08:56
卡确实按照教程的工具格式化的,能正常读取,时钟从400k改为20k了,用cutemx生成的代码是可以读写sd的, ...

400k改为20k了  -  这个不用修改,初始化阶段是400K,后面才会转换到正常速度。

你这个裸机例子初始化能通过吗,这样测试还方便些。
回复

使用道具 举报

3

主题

4

回帖

13

积分

新手上路

积分
13
 楼主| 发表于 2025-3-14 08:49:14 | 显示全部楼层
裸机代码可以啊,就是全家桶不行,初始化SDMMC_CmdStatusRegister最后一步SDMMC_ReadFIFO(hsd->Instance),读取第三次时候crc校验错误
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2025-3-15 08:39:10 | 显示全部楼层
kouzg12374 发表于 2025-3-14 08:49
裸机代码可以啊,就是全家桶不行,初始化SDMMC_CmdStatusRegister最后一步SDMMC_ReadFIFO(hsd->Instance), ...

方便的话,分享你的代码到百度网盘,我看下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 00:25 , Processed in 0.044684 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表