找回密码
 立即注册
楼主: zrl

sdio2.0学习心得个人记录贴|附波形文件

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 13:29:45 | 显示全部楼层
本帖最后由 zrl 于 2024-11-16 22:14 编辑

卡工作状态
SD卡工作时像一个状态机,不同的工作状态处理不同的命令,处理不同的命令后跳转到不同的工作状态
比如向总线发送CMD0后,总线所有卡(除了ina状态)进入idle状态。我们想要读取SD卡数据,必须使SD进入tran状态,发送CMD17(单块读)进入data状态。
配置SD卡并进入tran状态的过程,称为卡的初始化
SD卡有10种状态,idle(空闲状态),ready,ident,stby,tran,data,rcv,prg,dis,ina(禁用状态)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 13:31:53 | 显示全部楼层
本帖最后由 zrl 于 2024-11-17 00:17 编辑

具体哪个工作状态跳转到哪个工作状态,哪些工作状态处理哪些命令,就需要查看简化规范中的卡状态转换表
比如CMD2只在ready状态处理,其他状态不处理,处理后进入到ident,卡的状态可以发送带R1响应或R1b响应的命令获取,比如CMD55
截图202411161331514451.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 14:53:33 | 显示全部楼层
本帖最后由 zrl 于 2024-11-17 11:24 编辑

SD卡寄存器
SD卡有六个寄存器OCR(32位卡运行条件寄存器),CID(128位卡唯一ID寄存器),CSD(128位卡特殊数据寄存器),RCA(16位卡临时通信地址寄存器),
DSR(16位驱动能力寄存器),SCR(64位SD卡配置寄存器)
一般用到的寄存器有OCR,CID,RCA。
CID和CSD的分别通过发送CMD10和CMD9读取响应R2获取,OCR寄存器通过发送CMD8读取响应R3获取,RCA寄存器通过发送CMD3读取响应R6获取
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 15:08:13 | 显示全部楼层
本帖最后由 zrl 于 2024-11-16 19:38 编辑

响应R1
R1标明当前卡的运行状态
截图202411161508445469.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 15:10:28 | 显示全部楼层
本帖最后由 zrl 于 2024-11-17 11:15 编辑

响应R1的39:8数据对应功能,其中读清除可以理解为阅后即焚,发送完响应就清除,表中12:9位为SD卡当前工作状态
截图202411161510276552.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 15:35:26 | 显示全部楼层
R1b比R1多一个忙信号在DAT0上
比如发送CMD20,设置SD卡的速度等级
DAT0会被拉低
截图202411161535089189.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 15:48:17 | 显示全部楼层
响应R2和CSD
一般CSD寄存器里的数据不怎么会用到,每个位段数据的使用都需要查看规范,比如挂载SD卡时一般都需要计算容量,计算的公式就在规范里。

截图202411161547539574.jpg
截图202411161548113617.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 16:01:03 | 显示全部楼层
本帖最后由 zrl 于 2024-11-16 16:09 编辑

响应R3和OCR寄存器

OCR寄存器可以配置SD卡的工作电压,里面还记录了SD卡的工作电压和工作状态
其中第31位指示了SD卡的上电状态,必须等待卡将其置1才能发送后续的命令
卡的初始过程,大部分时间都是发送ACMD41等待其第31位置1
第30位指示其是否为SDHC(high capacity 大容量SD卡),是就为1.
第24位SDIO2.0不支持默认写0
可以使用ACMD41来获取R3响应以读取OCR寄存器



截图202411161552098786.jpg
截图202411161600509497.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:198
  • 最近打卡:2025-05-01 00:16:05
已绑定手机

24

主题

345

回帖

1629

积分

金牌会员

积分
1629
发表于 2024-11-16 16:03:14 | 显示全部楼层
跟着学习
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:165
  • 最近打卡:2025-04-30 08:22:37

14

主题

87

回帖

732

积分

高级会员

积分
732
发表于 2024-11-16 16:12:23 | 显示全部楼层
响应R6和RCA
R6响应的高16位就是RCA寄存器的内容
后面16位是R1响应的部分内容
截图202411161610213222.jpg
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-1 22:11 , Processed in 0.120778 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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