- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6.SD介绍及SPI模式初始化说明
SD/SDIO 的 SPI 模式
1.SPI 模式的进入
卡处于 IDLE 状态下,接收到 CMD0 +CS=0,卡进入 SPI 模式;
卡在其他状态下,即使接收到 CMD0+CS=0,也不一定进入 SPI 模式;
进入 SPI 模式的两种可能,一是卡上电复位后,二是卡在 SD 模式下接收到复位命令
回到IDLE 状态,在前面两种的任何一种情况下,卡接收到 CMD0+CS=0 即进入 SPI
模式。
卡进入 SPI 模式后,如果再收到 CMD0 那么卡仍回到 IDLE 状态,但仍是 SPI 模式下
的IDLE 状态。如果想要回到 SD 模式,只有进行断电从启。
2 .ACMD41
在 SPI 模式下 ACMD41 和 SD 模式下不再一样,此时 ACMD41 将没有参数,其响应
R1 的最低位(IN IDLE STATE )在初始化后为 1。当CARD 接收到 ACMD41,并且已
经完成其他的初始化操作后,将此位置低。HOST 发现此位为 0 时才继续发新的命令;
否则循环发 ACMD41 ,直至IN IDLE STATE =0 ;
3 .数据校验
在 SPI 模式下默认不进行数据的 CRC 校验;但是命令和响应中的 CRC 位仍然保持,
只是这些位将作为“DON’T CARE BIE ”(不关注位)。
这样做的好处是只支持 SPI 模式的HOST 可以省掉产生CRC 和验证CRC 的电路部分。
唯一例外的是,在卡的初始状态下,卡处于 SD 模式,要将卡置于 SPI 模式下,HOST
需要发固定的数据串0x40, 0x0, 0x0, 0x0, 0x0, 0x95。
卡识别到这个命令后也进入SPI模式,默认情况下也不关注CRC。
如果HOST希望进行CRC保护,那么它可以通过CMD59打开/关闭CRC校验功能。
SD 卡 SPI 模式驱动程序
1.SD卡的官方资料 (我承认这个资料很垃圾,比起民间的技术总结它的内容可谓又臭
又长,但是作为基础也要了解一下,SD协议不用看)
清晰明了的MMC卡时序图 (虽然这个是MMC卡的,但是在初始化的时候CMD0的时序是
2.
一样的)
电路:我用的SD卡的电路其实很简单,参考SD卡的官方资料中的电路链接就可以的。
供电问题:由于SD卡的电压是3.3V,所以你的CPU必须支持3.3V的IO端口输出。
再来说一说细节:
1.为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55
(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。
2.为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨
论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首
先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可
能是MMC卡,再发CMD1确认。
3.正确的回应内容应该是:
CMD0——0x01(SD卡处于in-idle-state)
CMD55——0x01(SD卡处于in-idle-state)
ACMD41——0x00(SD卡跳出in-idle-state,完成初始化准备接受下一条指令)
这里要说的是如果最后的回应内容还是0x01的话,可以循环发送CMD55+ACMD41,
直到回应的内容0x00。
4.在所有的指令中,唯独CMD0特殊,在向SD卡发送以前需要向SD卡发送74+个时钟。
那么为什么要74个CLK呢?因为在上电初期,电压的上升过程据SD卡组织的计算约合
64个CLK周期才能到达SD卡的正常工作电压他们管这个叫做Supply ramp up time,其
后的10个CLK是为了与SD卡同步,之后开始CMD0的操作,严格按照此项操作,一定没
有问题。
5.关于SD卡的SPI总线,在读入数据时SD卡的SPI是CLK的上升沿输入锁存,输出数据
也是在上升沿。
6.向SD卡写入一个CMD或者ACMD指令的过程是这样的:
首先使CS为低电平,SD卡使能;其次在SD卡的Din写入指令;写入指令后还要附加8
个填充时钟,是SD卡完成内部操作;之后在SD卡的Dout上接受回应;回应接受完毕使
CS为低电平,再附加8个填充时钟。
7.在SD卡的Din没有数据写入时,应使Din保持高电平。
SDIO 中的一个寄存器
cccr 中有两位寄存器shs,ehs 。
您可能关注的文档
- EDA上机实验.doc
- 10-11第二学期数学复习题数一(题).doc
- 交变电流第二节习题.ppt
- 密码学5.2对称密码体制.ppt
- 2009年专插本高等数学试题及详细答案.doc
- 两位数减一位数退位减法最终版1.ppt
- 盆花栽培21.ppt
- 五年级数学下册《图形的变换》教案.doc
- 听市信息技术研讨课有感.doc
- 陕西省课改实验区2006中考数学试题(北师大扫描卷,含答案).doc
- 25上半年2期套题班-行政职业能力测验(八).docx
- 公考讲义-2025年1月时政汇总.pdf
- 2025年省考逻辑填空1000 高频实词积累+刷题早读课 讲义.pdf
- 25上半年2期套题班-行政职业能力测验(九).docx
- 2025四川事业编FB综合岗考试-综合能力测试讲义-主观题基础,案例分析题,公文写作及文章写作题.pdf
- 25上半年2期套题班-行政职业能力测验(五).docx
- 2025申论多省联考刷题课真题资料-2025国考执法课程.doc
- 2025申论多省联考刷题课真题资料-2024江西执法课程.doc
- 25上半年2期套题班-行政职业能力测验(十).docx
- 2025申论多省联考刷题课真题资料-2024福建县乡课程.doc
文档评论(0)