为了使SD卡初始化进入SPI形式,咱们需求运用的指令有3个:CMD0,ACMD41,CMD55(运用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类指令的效果)。
为什么在运用CMD0今后不运用CMD1?CMD1是MMC卡运用的指令,尽管本文并不想评论MMC卡的问题,可是我仍是要说:为了完结兼容性,上电或许发送CMD0后,应该首要发送CMD55+ACMD41承认是否有回应,假如有回应则为SD卡,假如等回应超时,则可能是MMC卡,再发CMD1承认。
正确的回应内容应该是:
CMD0——0x01(SD卡处于in-idle-state)
CMD55——0x01(SD卡处于in-idle-state)
ACMD41——0x00(SD卡跳出in-idle-state,完结初始化预备承受下一条指令)
这儿要说的是假如最终的回应内容仍是0x01的话,能够循环发送CMD55+ACMD41,直到回应的内容0x00。
在所有的指令中,唯一CMD0特别,在向SD卡发送曾经需求向SD卡发送74+个时钟。那么为什么要74个CLK呢?由于在上电初期,电压的上升进程据SD卡安排的核算约合64个CLK周期才干抵达SD卡的正常作业电压他们管这个叫做Supply ramp up time,这以后的10个CLK是为了与SD卡同步,之后开端CMD0的操作,严厉依照此项操作,必定没有问题。
关于SD卡的SPI总线,在读入数据时SD卡的SPI是CLK的上升沿输入锁存,输出数据也是在上升沿。
向SD卡写入一个CMD或许ACMD指令的进程是这样的:
首要使CS为低电平,SD卡使能;其次在SD卡的Din写入指令;写入指令后还要附加8个填充时钟,是SD卡完结内部操作;之后在SD卡的Dout上承受回应;回应承受结束使CS为低电平,再附加8个填充时钟。
在SD卡的Din没有数据写入时,应使Din坚持高电平。
SD卡的SPI形式的初始化次序
为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类…
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/275965.html