打印
[STM32F4]

正点原子的代码 初始化金士顿8G Class 4 TF卡不成功

[复制链接]
1954|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
@若水|  楼主 | 2017-3-21 17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 @若水 于 2017-3-21 17:56 编辑

单片机为STM32F407

程序用的是正点原子的程序,第38个实验的程序(即不带文件系统的程序),初始化512MB的卡就行,但卡的其它参数就不知了,因为这个卡已经放了好久了,上面的很多东西都看不清了,

用同样的程序初始化金士顿8G Class 4 TF卡就不成功,这张卡昨天才从JD上买的

程序调用到  SD_PowerON()函数的

while((!validvoltage)&&(count<SD_MAX_VOLT_TRIAL))
{                                                                                             
     SDIO_CmdInitStructure.SDIO_Argument = 0x00;//发送CMD55,短响应
      SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_APP_CMD;          //CMD55
      SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;
      SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
      SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
      SDIO_SendCommand(&SDIO_CmdInitStructure);                        //发送CMD55,短响应         
        errorstatus=CmdResp1Error(SD_CMD_APP_CMD);                  //等待R1响应  
                        
         if(errorstatus!=SD_OK)return errorstatus;           //响应错误   <<------  将会在这里出现一个错误  ,为SD_CMD_CRC_FAIL,并退出 SD_PowerON函数

      //acmd41,命令参数由支持的电压范围及HCS位组成,HCS位置一来区分卡是SDSc还是sdhc
      SDIO_CmdInitStructure.SDIO_Argument = SD_VOLTAGE_WINDOW_SD | SDType;        //发送ACMD41,短响应        
      SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_SD_APP_OP_COND;
      SDIO_CmdInitStructure.SDIO_Response = SDIO_Response_Short;  //r3
      SDIO_CmdInitStructure.SDIO_Wait = SDIO_Wait_No;
      SDIO_CmdInitStructure.SDIO_CPSM = SDIO_CPSM_Enable;
      SDIO_SendCommand(&SDIO_CmdInitStructure);

        errorstatus=CmdResp3Error();                                         //等待R3响应           
         if(errorstatus!=SD_OK)return errorstatus;           //响应错误
        response=SDIO->RESP1;;                                                           //得到响应
        validvoltage=(((response>>31)==1)?1:0);                        //判断SD卡上电是否完成
        count++;  << ----  退出时,这个值大概为9左右
}


有没有人知道是什么原因?

来自 2楼
@若水|  楼主 | 2017-3-24 21:36 | 只看该作者
今天终于把程序调出来的,问题是时钟设置得不对,同时上一块板的硬件可能也有问题,用了5张不同的卡进行测试,发现SanDisk的卡支持得最好,Class 10的卡读取非常顺畅,很好。对金士顿的支持不是很好 ,两张金士顿8G Class 4的卡,一张是台湾产的,一张是日本产的,结果只能识别台湾产的卡

使用特权

评论回复
板凳
@若水|  楼主 | 2017-3-24 11:29 | 只看该作者
现在查到一个问题了,好像是时钟的问题

使用特权

评论回复
地板
@若水|  楼主 | 2017-3-24 11:31 | 只看该作者
完全是想不懂了,时钟按晶振配的,待我查查,搞明白了再公布答案吧

使用特权

评论回复
5
@若水|  楼主 | 2017-3-24 11:32 | 只看该作者
没有满意的答案,先结个贴先

使用特权

评论回复
6
hudi008| | 2017-3-24 16:28 | 只看该作者
8G太大不能读取数据了。

使用特权

评论回复
7
hudi008| | 2017-3-24 16:33 | 只看该作者
使用512M应该简单一些

使用特权

评论回复
8
一代掌门| | 2017-3-24 21:29 | 只看该作者
8G容量可不好管理咯

使用特权

评论回复
9
@若水|  楼主 | 2017-3-24 21:30 | 只看该作者
hudi008 发表于 2017-3-24 16:28
8G太大不能读取数据了。

8G可以读取数据是没问题的,Class 10的卡比Class 4的卡顺畅很多,所说STM32F407可以支持32G的卡

使用特权

评论回复
10
戈卫东| | 2017-3-24 21:40 | 只看该作者
@若水 发表于 2017-3-24 21:36
今天终于把程序调出来的,问题是时钟设置得不对,同时上一块板的硬件可能也有问题,用了5张不同的卡进行测 ...

搞不好是山上来的。

使用特权

评论回复
11
@若水|  楼主 | 2017-3-24 21:51 | 只看该作者
一代掌门 发表于 2017-3-24 21:29
8G容量可不好管理咯

直接上文件系统

使用特权

评论回复
12
@若水|  楼主 | 2017-3-24 21:52 | 只看该作者
戈卫东 发表于 2017-3-24 21:40
搞不好是山上来的。

在某东买 的,不至于这么水吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专注于以太网  GPRS GSM CAN 485 继电器等工控模块 小店:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-6466605198.19.7OO7ja&id=522606430970 回头之人,永远无法见到真相

26

主题

2686

帖子

6

粉丝