野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12229|回复: 5

SD卡标准容量(2G)blocksize是多大?

[复制链接]
发表于 2016-10-20 00:07:33 | 显示全部楼层 |阅读模式
我参照教程移植的SD卡驱动程序,然后用金士顿2GSD卡测试程序,并利用串口打印SD卡信息,SD_CardInfo结构体如下:


typedef struct
{
  SD_CSD SD_csd;
  SD_CID SD_cid;
  uint64_t CardCapacity;  /*!< Card Capacity */
  uint32_t CardBlockSize; /*!< Card Block Size */
  uint16_t RCA;
  uint8_t CardType;
} SD_CardInfo;


结果打印出
CardType = 1 ,即:SDIO_STD_CAPACITY_SD_CARD_V2_0,正确
然后:
CardBlockSize = 1024



教程里不是说SD卡的CardBlockSize = 512吗?怎么我的打印出来是1024?


还有,FatFS移植的conf文件里有个宏定义用来定义sector的最大值与最小值的。
我都设置成了512. 测试文件系统好像没有什么问题。这个sector大小是不是就是sd卡的blocksize?

回复

使用道具 举报

发表于 2016-10-20 08:47:43 | 显示全部楼层
sdhc(大于2G)的固定是512,sdsc(小于等于2G)的blocksize是跟卡有关的,不过一般小于512,不知道你这个是什么情况
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-20 13:57:09 | 显示全部楼层
本帖最后由 ggafish 于 2016-10-20 14:03 编辑
flyleaf 发表于 2016-10-20 08:47
sdhc(大于2G)的固定是512,sdsc(小于等于2G)的blocksize是跟卡有关的,不过一般小于512,不知道你这个 ...

会影响文件系统的正常功能吗?
我用FatFS文件系统测试SD卡操作,读写文件都是正常的。
文件系统ffconf.中的配置如下:

#define        _MIN_SS                512
#define        _MAX_SS                512
/* These options configure the range of sector size to be supported. (512, 1024, 2048 or
/  4096) Always set both 512 for most systems, all memory card and harddisk. But a larger
/  value may be required for on-board flash memory and some type of optical media.
/  When _MAX_SS is larger than _MIN_SS, FatFs is configured to variable sector size and
/  GET_SECTOR_SIZE command must be implemented to the disk_ioctl() function. */

配置sector size,这个应该就是sd卡的block size吧?
由于我板上还有SPI FLASH,所以修改为:
#define        _MIN_SS                512
#define        _MAX_SS                1024

这时SD卡初始化会失败,改回来正常。是不是SD卡的驱动没有移植好的缘故?

另外还有个问题,429的主频是180M,系统时钟配置时,PLLN=360,PLLQ=7,
这样SDIOCLK应该=360/7 = 51.4MHz,而不是407的336/7=48MHz了。
我们教程里面讲解SD卡初始话流程代码的时候直接说SDIOCLK为48M,应该是不准确的。这样,在卡识别流程中配置的时钟频率分频比为0x76,得到的SD卡CLK就不再是48MHz/(0x76+2) = 400KHz了,
而是 51.4MHz/(0x76+2=)428.5K,四线工作时经2分频后频率应为51.4MHz/2=25.7MHz,都要比SD卡规定的400K,25M要高,属于超频工作。
在实际工程中有什么隐患吗?

我打算再重新移植一遍SD卡驱动,进一步熟悉流程。

回复 支持 反对

使用道具 举报

发表于 2016-10-20 16:24:16 | 显示全部楼层
ggafish 发表于 2016-10-20 13:57
会影响文件系统的正常功能吗?
我用FatFS文件系统测试SD卡操作,读写文件都是正常的。
文件系统ffconf. ...

SPI FLASH 使用的是4096吧

关于时钟部分,我查了下手册,确实之前没留意到,180M的时候它的时钟就不是48MHz了,目前应用还没有遇到问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-4 23:15:35 | 显示全部楼层
flyleaf 发表于 2016-10-20 16:24
SPI FLASH 使用的是4096吧

关于时钟部分,我查了下手册,确实之前没留意到,180M的时候它的时钟就不是 ...

今天仔细看了一下SPI Flash 文件系统的视频讲解,明白问题在哪里了。
是我修改了 _MAX_SS但是没有实现disk_ioctl()的原因,
我正在调试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-4 23:16:45 | 显示全部楼层
flyleaf 发表于 2016-10-20 08:47
sdhc(大于2G)的固定是512,sdsc(小于等于2G)的blocksize是跟卡有关的,不过一般小于512,不知道你这个 ...

你是不是记错了,我用的2G SD卡,金士顿,读出来blocksize是1024,我换了个SD卡,读出来还是1024。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-13 11:01 , Processed in 0.050834 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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