OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5080|回复: 6

请教SD卡问题,望大佬相助

[复制链接]

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2023-2-14
在线时间
51 小时
发表于 2023-4-10 16:52:27 | 显示全部楼层 |阅读模式
5金钱
自己做了一块板子,想通过SD卡烧录程序,但是在BootLoader程序中,一直检测不到SD卡。调试发现,SD卡初始化的时候,识别卡的工作电压处,返回错误SD_CMD_RSP_TIMEOUT。这是什么原因。
1681116467329.jpg

最佳答案

查看完整内容[请看2#楼]

具体什么原因没有找到,可能是识别卡的型号的问题,换了SD卡就可以识别了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2023-2-14
在线时间
51 小时
 楼主| 发表于 2023-4-10 16:52:28 | 显示全部楼层
具体什么原因没有找到,可能是识别卡的型号的问题,换了SD卡就可以识别了
回复

使用道具 举报

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2023-2-14
在线时间
51 小时
 楼主| 发表于 2023-4-10 16:52:58 | 显示全部楼层
附图是硬件电路设计
回复

使用道具 举报

1

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2015-1-4
在线时间
68 小时
发表于 2023-4-10 17:16:47 | 显示全部楼层
wyp010123 发表于 2023-4-10 16:52
附图是硬件电路设计

下个SD卡的例程替换下,初始化估计不对
回复

使用道具 举报

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2023-2-14
在线时间
51 小时
 楼主| 发表于 2023-4-14 09:01:48 | 显示全部楼层
马超飞燕 发表于 2023-4-10 17:16
下个SD卡的例程替换下,初始化估计不对

不好意思,最近也是因为有事要忙,所以这个就一直没来得及回复您。  我用的芯片和原子哥开发板MINI的芯片一样,原子哥MINI板上SD卡接线用的SPI,所以当时SDIO初始化我是直接移植了战舰的
回复

使用道具 举报

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2023-2-14
在线时间
51 小时
 楼主| 发表于 2023-4-14 09:52:18 | 显示全部楼层
本帖最后由 wyp010123 于 2023-4-14 10:09 编辑
马超飞燕 发表于 2023-4-10 17:16
下个SD卡的例程替换下,初始化估计不对

SDIO的初始化

u8 SD_Init(void)
{
    u8 SD_Error;
   
    //初始化时的时钟不能大于400KHZ
    SDCARD_Handler.Instance=SDIO;
    SDCARD_Handler.Init.ClockEdge=SDIO_CLOCK_EDGE_RISING;          //上升沿     
    SDCARD_Handler.Init.ClockBypass=SDIO_CLOCK_BYPASS_DISABLE;     //不使用bypass模式,直接用HCLK进行分频得到SDIO_CK
    SDCARD_Handler.Init.ClockPowerSave=SDIO_CLOCK_POWER_SAVE_DISABLE;    //空闲时不关闭时钟电源
    SDCARD_Handler.Init.BusWide=SDIO_BUS_WIDE_1B;                        //1位数据线
    SDCARD_Handler.Init.HardwareFlowControl=SDIO_HARDWARE_FLOW_CONTROL_DISABLE;//关闭硬件流控
    SDCARD_Handler.Init.ClockDiv=SDIO_TRANSFER_CLK_DIV;            //SD传输时钟频率最大25MHZ

    SD_Error=HAL_SD_Init(&SDCARD_Handler,&SDCardInfo);
    if(SD_Error!=SD_OK)
        {
                return 1;
        }
   
    SD_Error=HAL_SD_WideBusOperation_Config(&SDCARD_Handler,SDIO_BUS_WIDE_4B);//使能宽总线模式
    if(SD_Error!=SD_OK)
        {               
                return 2;
        }
        
    return 0;
}

//SDMMC底层驱动,时钟使能,引脚配置,DMA配置
//此函数会被HAL_SD_Init()调用
//hsd:SD卡句柄
void HAL_SD_MspInit(SD_HandleTypeDef *hsd)
{
    DMA_HandleTypeDef TxDMAHandler,RxDMAHandler;
    GPIO_InitTypeDef GPIO_Initure;
   
    __HAL_RCC_SDIO_CLK_ENABLE();    //使能SDIO时钟
    __HAL_RCC_DMA2_CLK_ENABLE();    //使能DMA2时钟
    __HAL_RCC_GPIOC_CLK_ENABLE();   //使能GPIOC时钟
    __HAL_RCC_GPIOD_CLK_ENABLE();   //使能GPIOD时钟
   
    //PC8,9,10,11,12
    GPIO_Initure.Pin=GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;      //推挽复用
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_FREQ_HIGH;     //高速
    HAL_GPIO_Init(GPIOC,&GPIO_Initure);     //初始化
   
    //PD2
    GPIO_Initure.Pin=GPIO_PIN_2;            
    HAL_GPIO_Init(GPIOD,&GPIO_Initure);     //初始化
}
回复

使用道具 举报

4

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2023-2-14
在线时间
51 小时
 楼主| 发表于 2023-4-14 11:20:36 | 显示全部楼层
本帖最后由 wyp010123 于 2023-4-14 11:21 编辑
wyp010123 发表于 2023-4-14 09:01
不好意思,最近也是因为有事要忙,所以这个就一直没来得及回复您。  我用的芯片和原子哥开发板MINI的芯片 ...

if((timeout == 0) || tmp)
  {
    /* Card is not V2.0 compliant or card does not support the set voltage range */
    errorstate = SD_CMD_RSP_TIMEOUT;
   
    __HAL_SD_SDIO_CLEAR_FLAG(hsd, SDIO_FLAG_CTIMEOUT);
   
    return errorstate;
  }
  
  if(__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_CMDREND))
  {
    /* Card is SD V2.0 compliant */
    errorstate = SD_OK;
   
    __HAL_SD_SDIO_CLEAR_FLAG(hsd, SDIO_FLAG_CMDREND);
   
    return errorstate;
  }
  
  return errorstate;
}

这是调试时出现错误部分,在上面进行判断时,返回SD_CMD_RSP_TIMEOUT
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 09:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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