当前位置: 首页 > news >正文

SD卡简介与驱动开发

基本概念

存储卡有很多种类,CF卡、记忆棒、SD卡、XD卡、MMC卡、MS卡、TF卡、MicroSD卡等。平时最常见的有SD卡和MicroSD卡两种, SD卡和MicroSD只是两张卡的大小不同,规格版本是完全相同的,均由SD卡协会推出。

SD卡有不少规范,常用包含存储空间和存储速度两种,厂商会把满足的规范的图标印在卡面上,所以通过卡上有的规格,就能很快判断出这张卡的容量、类型和最低速度,甚至适用场景。

容量

SD

早期版本现在已经基本停用,最高容量2GB,分区格式为FAT12(FAT)或FAT16

DHC

SDHC:技术很成熟的种类,容量为4GB-32GB,分区格式为FAT32。

SDXC

SDXC:目前市场存储卡的主流,容量为64GB-2TB,分区格式为exFAT。

SDUC

新推出的版本,容量为2TB-128TB,分区格式为exFAT。

速度分级

Class 2 大于等于2MB/s

Class 4 大于等于4MB/s

Class 6 大于等于6MB/s

Class 10 大于等于10MB/s

UHS总线模式

UHS-I

最大读取速度104MB/s

UHS-II

最大读取速度312MB/s

UHS-III

最大读取速度624MB/s

SD Express I

最大读取速度985MB/s

UHS速度等级

U1

最低写入速度10M/S

U3

最低写入速度30M/S

举例

总线模式

SD模式

SPI模式

引脚对应

SD卡寄存器

上电时序要求

SD卡在上电要求250ms内电压必须要达到要求的最小电压值,并且至少需要保持74个SD卡时钟周期以保证CMD线变为高电平,SPI模式下则要求CS信号线在至少74个CLK时钟保持高电平

控制协议(以SD模式举例)

command

command共包含6个字节

Response

Response 包含不同的种类,不同种类的长度不一样

SD卡协议规定了不同的Command对应的Response

Data

命令控制时序

块读取时序

块写入时序

工作模式

SD卡根据上电后默认为SD卡模式,后所接收的指令来决定是否切换为SPI模式,SPI模式属于SD卡控制的附加模式

切换方式:在CS引脚为低电平条件下向SD卡发送CMD0 (复位指令),返回R1寄存器状态OK表示切换完成

退出方式:一旦切换为SPI模式,无法退回至SD模式,除非重新上电

两种工作模式各有优劣

SD模式: 速率更高,线路多,通信较为复杂

SPI模式:速率相对较低,更加通用,线路少,控制简单

SD模式

SD模式下的SD卡初始化流程

最重要的是ACMD41和CMD8命令及其结果返回

注意事项:初始化前应当考虑将SD卡的时钟线频率配置在400kHz以下,初始化完成后再恢复时钟频率

SPI模式

SPI模式下的初始化与SD模式相差无几,

1、SPI模式下需要先控制SD卡进入到SPI模式

2、SPI模式下的命令/返回/时序等要求与SD模式都存在区别,需要区别对待

3、初始化流程中ACMD41/CMD8命令最为重要

ACMD41返回

CMD8返回

SPI模式驱动举例

SPI时序要求

发送命令时序

时序中存在不确定的等待周期,如NCS NEC等,因此包含NCR在内的等待过程都需要设置重试等待机制,推荐使用

do while方式进行编程实现

块读取

对于读到的数据而言,其包含以下结构,首字节为0xFE, 中间数据为块大小数据,最后为2byte的CRC校验值

块写入时序

参考资料:home - SD Association

http://www.lryc.cn/news/602690.html

相关文章:

  • 优测推出HarmonyOS全场景测试服务,解锁分布式场景应用卓越品质!
  • Makefile if语句用法
  • Linux内核驱动开发核心问题全解
  • Python全栈项目--基于深度学习的视频内容分析系统
  • 使用Docker在Rocky Linux 9.5上在线部署LangFlow
  • GoldenDB 分布式数据库详解
  • 在CentOS上以源码编译的方式安装PostgreSQL
  • <七> CentOS 8 安装最新版本Docker
  • 很妙的一道题 Leetcode234. 回文链表
  • 力扣 之 最小覆盖子串(变长滑动窗口,越短越好)
  • 电磁兼容五:仿真技术
  • Mac安装navicat17版本教程mac下载Navicat Premium for Mac v17.1.9【好用】
  • 微算法科技(NASDAQ:MLGO)利用基于区块链的机器学习模型进行交易分类,实现交易数据的匿名化
  • redis数据库的四种取得 shell方法
  • 安宝特案例丨户外通信机房施工革新:AR+作业流技术破解行业难题
  • 免费版酒店收银系统弹窗在押金原路退回流程中的应用价值探究 ——仙盟创梦IDE
  • 设计模式(二十一)行为型:状态模式详解
  • python生成 requirement.txt 文件
  • fchown/fchownat系统调用及示例
  • 技术总结|如何使用提升 strlen 的性能?
  • lesson26-2:使用Tkinter打造简易画图软件优化版
  • 数据链路层 和 ARP协议
  • MQTT的原理
  • 华为Huawei 6730交换机查看接口收发光命令 transceiver
  • 9.c语言常用算法
  • Anaconda创建环境报错:CondaHTTPEFTOT: HTTP 403 FORBIDDEN for url
  • Linux中配置haproxy
  • gitlab 在线合并分支a-分支b,解决冲突后,反向合并分支b-分支a
  • 数据结构——图(二、图的存储和基本操作)
  • 人机交互打字游戏