当前位置: 首页 新闻资讯 技术问答

SDNAND的CSD寄存器正确使用方法

SD NAND-贴片式TF卡-贴片式SD卡-免费测试2024-09-20221

SD NAND的CSD(Card Specific Data)寄存器是SD卡中一个非常重要的寄存器,用来存储卡的特定信息,包含容量、速度、读写块大小等。理解和正确使用CSD寄存器对开发者在嵌入式系统中有效驱动和管理SD NAND非常关键。
CSD寄存器概述

CSD寄存器的长度为128位(16字节),它描述了SD卡的各种参数,帮助主机系统理解SD卡的特性。SD卡协议根据卡的版本不同分为两种CSD结构:

    CSD v1.0:适用于SD Standard Capacity(SDSC),容量不超过2GB的卡。

    CSD v2.0:适用于SD High Capacity(SDHC)和SD eXtended Capacity(SDXC),容量从4GB到2TB。

CSD寄存器格式(v2.0)

CSD寄存器的128位按位分布描述了SD卡的多种特性,常见的字段包括卡的容量、读写速度、数据块长度等。以下是SDHC/SDXC卡中常见的CSD寄存器字段的详细介绍:

SD 2.0及以上的SD卡使用CSD版本2.0。CSD寄存器的128位分为多个字段,每个字段的含义如下:

SD 2.0及以上的SD卡使用CSD版本2.0。CSD寄存器的128位分为多个字段,每个字段的含义如下:

位范围字段名称长度 (bit)描述
127:126CSD_STRUCTURE2CSD结构,表示CSD寄存器的版本
125:120TAAC8数据读访问时间1
119:112NSAC8数据读访问时间2
111:104TRAN_SPEED8最大数据传输速度
103:96CCC12卡命令类别
95:84READ_BL_LEN4读数据块长度
83:83READ_BL_PARTIAL1是否支持部分块读取
82:82WRITE_BLK_MISALIGN1写块是否跨页对齐
81:81READ_BLK_MISALIGN1读块是否跨页对齐
80:80DSR_IMP1是否支持DSR(驱动器配置寄存器)
79:48C_SIZE22卡容量
47:47ERASE_BLK_EN1是否支持单个块擦除
46:39SECTOR_SIZE7擦除扇区大小
38:32WP_GRP_SIZE7写保护组大小
31:31WP_GRP_ENABLE1是否支持写保护组
30:29R2W_FACTOR3写相对于读的时间因子
28:26WRITE_BL_LEN4写块长度
25:25WRITE_BL_PARTIAL1是否支持部分块写入
24:23FILE_FORMAT_GRP2文件格式分组
22:22COPY1是否为复制的内容
21:21PERM_WRITE_PROTECT1是否为永久写保护
20:20TMP_WRITE_PROTECT1是否为临时写保护
19:18FILE_FORMAT2文件格式
17:16RESERVED2保留位
15:1CRC7CSD寄存器的CRC校验码
0NOT_USED1未使用位


2. CSD寄存器的关键字段
通用字段

以下字段在CSD寄存器中很常见,主要提供卡片的能力和性能信息:

    CSD结构版本 (CSD_STRUCTURE):定义了CSD寄存器的结构格式,通常有两个版本:

        CSD 1.0:用于SDSC卡。

        CSD 2.0:用于SDHC和SDXC卡。

    读块长度 (READ_BL_LEN):表示读取时的最大块长度。典型值是512字节或1024字节。

    卡容量 (C_SIZE):卡的总存储容量,以块数表示。通过它和块长度可以计算出总容量。

        对于SDHC和SDXC卡,容量使用的是C_SIZE_MULT(用于计算实际容量)。

    传输速度 (TRAN_SPEED):此字段表示卡的最大传输速度。通过这个值可以决定主机的传输时钟频率。

    文件格式 (FILE_FORMAT):表示卡的文件系统格式,通常为FAT12、FAT16、FAT32。

    擦除块大小 (ERASE_BLK_EN):表示擦除操作是否按块进行。这个字段用于确定能否进行快速擦除操作。

版本特定字段

    SDHC/SDXC 特定字段:

        C_SIZE: 对于SDHC和SDXC,C_SIZE字段和其他字段组合用于计算卡片的总容量。

        WRITE_BL_LEN: 代表卡片的写块长度,通常为512字节。

    SDSC 特定字段:

        CSD1.0格式下的C_SIZE字段用于直接表示卡片的容量,但较小容量的卡片采用的是老的CSD格式。

3. 如何正确使用CSD寄存器
读取CSD寄存器

    发送CMD9 (SEND_CSD):主机通过向卡发送命令CMD9来读取CSD寄存器。SD卡在接收到此命令后,返回128位的CSD寄存器内容。

    解析CSD寄存器字段:主机需要根据CSD寄存器的结构版本(CSD_STRUCTURE)来解析各个字段。例如:

        对于SDSC卡,使用CSD v1.0格式解析字段。

        对于SDHC和SDXC卡,使用CSD v2.0格式解析字段。

    根据需要调整主机设置:在成功解析CSD寄存器内容后,主机可以根据这些字段信息来调整操作模式。例如:

        设置传输速率:根据TRAN_SPEED字段设定主机与卡片之间的时钟频率。

        设置块大小:根据READ_BL_LEN和WRITE_BL_LEN字段,调整读写时的块大小。

示例:计算SD卡容量

可以通过以下公式来计算卡的实际容量:

    对于SDSC卡:

        容量 = (C_SIZE + 1) * 2^(C_SIZE_MULT + 2) * 2^READ_BL_LEN

    对于SDHC/SDXC卡:

        容量 = (C_SIZE + 1) * 512 KB

注意事项

    兼容性问题:不同SD卡可能使用不同的CSD版本,主机需要能够处理多个版本的CSD寄存器。

    时钟配置:必须根据TRAN_SPEED字段正确配置主机的SPI时钟频率,否则可能导致通信失败或性能不佳。

    块操作:根据READ_BL_LEN和WRITE_BL_LEN字段的值,主机在读写时要正确设置块长度。如果块长度设置不当,可能会导致读写失败。

5. 实际应用

    固件配置:在设计驱动程序时,解析CSD寄存器是初始化SD卡的关键步骤,主机根据CSD寄存器信息决定如何进行高效的读写操作。

    调试信息:如果SD卡无法正常工作,检查CSD寄存器的解析是否正确可以帮助定位问题,尤其是在频率、块大小等参数配置上。

理解并正确使用CSD寄存器是驱动SDNAND卡的基础,有助于优化传输性能并确保数据可靠性。

热门标签:SDNAND贴片式TF卡贴片式SD卡SD FLASHSLC NANDNAND FLASH


SD NAND-贴片式TF卡-贴片式SD卡-免费测试

深圳市芯存者科技有限公司

售前咨询
售前咨询
售后服务
售后服务
联系我们

电话:176-6539-0767

Q Q:135-0379-986

邮箱:1350379986@qq.com

地址:深圳市南山区蛇口街道后海大道1021号B C座C422W8

在线客服 在线客服 QQ客服 微信客服 淘宝店铺 联系我们 返回顶部