QianFan 发表于 2015-3-28 15:31:10

SPI操作SD卡,CMD0无响应

使用STM32的SPI模式0操作SD卡,但是发送CMD0没有响应,一直回应0XFF。有人遇到过这种情况吗?

操作过程:

1. 设置SPI时钟分频256.
2.CS引脚置1.
3.发送10个0xFF。

4.CS引脚拉低。
5.发送0X40,0X00,0X00,0X00,0X00,0X95
6.读取MISO引脚数值,发现一直是0XFF。
7.CS置1.


QianFan 发表于 2015-3-28 17:06:31

本帖最后由 QianFan 于 2015-3-28 17:07 编辑

折腾了一天,终于明白是怎么回事了。之前玩arduino的时候,买了一个网口的扩展版,上面自带一个SD小卡的卡槽,看板子上写着兼容MEGE,一开始没怎么注意,后来发现这些没注意的细节浪费了整整一下午的时间。


以为是时序的问题,但是用逻辑分析仪分析确实没有什么问题,但是CMD0一直没有应答。无心插柳,访问Arduino官网,看到了mege的引脚之后才恍然大悟。请看图。图是我从淘宝上扒的,把图片上商家的广告擦去了,有点难看,大家就将就吧。



这一张是正面图,Arduino一般来说13,12,11是SPI的引脚,我想当然的以为SD卡也是使用了这三个引脚。当插入Nucleo之后也是使用13,12,11三个引脚来操作。万恶的bug正是从这里出来的。其实SD SPI的接口并不是这三个,而是下图那奇葩的地方。


下面这一张是背面图。

图中圈出的地方是SD卡的接口部分,也是mege2560 SPI的默认引脚。当然,这个引脚在Nucleo上面是没有的。所以不管时序对还是不对,肯定是没有结果的。




虽然Nucleo兼容了Arduino的硬件接口,但是希望大家之后再为Nucleo挑选Arduino扩展版的时候注意一下,不要像我这样劳民伤财。


好了,不说了,我先去哭会。。。




nocoyou 发表于 2015-3-28 19:22:44

................

wambob 发表于 2015-3-28 20:05:52

哭吧,泪干了 ,还得继续

拼命三郎 发表于 2015-3-28 21:51:35

zfz0122 发表于 2015-3-29 10:42:24

学习了啊

QianFan 发表于 2015-3-29 10:42:28

wambob 发表于 2015-3-28 20:05
哭吧,泪干了 ,还得继续

人生总是这么精彩。。。

MouseCat 发表于 2015-3-30 08:49:25

贱人就是矫情;P

xieyixieyi81093 发表于 2015-3-30 09:00:07

男人哭吧哭吧,不是罪。:'(

chaplin1999-262 发表于 2015-3-30 09:59:47

有时候就是大意了!
页: [1] 2
查看完整版本: SPI操作SD卡,CMD0无响应