OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7740|回复: 8

sd卡电压问题,急……

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-9-5
在线时间
0 小时
发表于 2013-9-5 14:54:34 | 显示全部楼层 |阅读模式
      最近用stc单片机做SD卡的读写,用的是SPI通讯,可是一直不能初始化,发送CMD0成功返回01H,可是在发送CMD8、CMD55、ACMD41时返回值都是01H,无法初始化。特别是CMD8命令,参数是00,00,01,aa,返回值应该是5个字节,第一个是R1判断是2.0的协议,后4个字节应该是00,00,01,aa,可是返回值都01,是不是SD还处于IDLE状态?我用万用表测了,SD卡VDD是3.7V,MISO是3.5V,MOSI是3.7V,是不是我的电压不对?我用的是金士顿的4G的SDHC卡。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-5 17:51:59 | 显示全部楼层
供3.3V吧。
另外,这个STC的SD卡例程,应该有人发过啊,znFAT,貌似有很多这个代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-9-5
在线时间
0 小时
 楼主| 发表于 2013-9-7 10:20:32 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,板子是自己做的,电压那里我加了电阻,已经是3.3v了,可是还是不能初始化。都快急死了,原子哥快救命呐。
我的程序使用汇编写的,还是在CMD8那里返回的四个字节不对
CHUSHI:   MOV SPCTL,#0DFH ;低速SPI
          MOV R1,#200
           SETB 5.3
MOV SPSTAT,WCOL|SPIF
          
        D1:   MOV A,#0FFH;延时74个时钟
     LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
 MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
 MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
 MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
 MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
 MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
     MOV A,#0FFH
 LCALL RW_BYTE
 LCALL DEL10
 CLR 5.3 
 NOP
 S1:MOV A,#0FFH
   LCALL RW_BYTE
    MOV A,#40h ;CMD0
    LCALL RW_BYTE
    MOV A,#00H
LCALL RW_BYTE
MOV A,#00H
LCALL RW_BYTE 
MOV A,#00H
LCALL RW_BYTE
MOV A,#00H
LCALL RW_BYTE 
      MOV A,#95h
LCALL RW_BYTE
       
    MOV A,#0DDH
LCALL RW_BYTE
    CJNE A,#01H,SSS1   
JMP SPI_INIT2
   SSS1JNZ R1,S1
JMP CHUSHI

SPI_INIT2: MOV A,#0ffh
             LCALL RW_BYTE
            MOV A,#48h   ;CMD8
LCALL RW_BYTE     
MOV A,#00h
LCALL RW_BYTE
 MOV A,#00h
 LCALL RW_BYTE
MOV A,#01h
LCALL RW_BYTE
MOV A,#0AAh
LCALL RW_BYTE
MOV A,#87h
             LCALL RW_BYTE
  MOV A,#0DDH
LCALL RW_BYTE
    CJNE A,#01H,SPI_INIT2  ;版本2.0返回01
 
MOV A,#0ffh  ; CMD8随后的4个字节
             LCALL RW_BYTE
   MOV A,#0ffh
             LCALL RW_BYTE
   MOV A,#0ffh
             LCALL RW_BYTE
  MOV A,#0ffh
             LCALL RW_BYTE
 
MOV A,#0ffh
             LCALL RW_BYTE
    cjne A,#0AAH,SPI_INIT2
CLR 4.2 
 
 
   
        D22:  MOV A,#0ffh
             LCALL RW_BYTE 
            MOV A,#77h    ;CMD55
LCALL RW_BYTE     
MOV A,#00h
LCALL RW_BYTE
 MOV A,#00h
 LCALL RW_BYTE
MOV A,#00h
LCALL RW_BYTE
MOV A,#00h
LCALL RW_BYTE
MOV A,#0ffh
             LCALL RW_BYTE
  MOV A,#0ffh
             LCALL RW_BYTE

MOV A,#0ffh
             LCALL RW_BYTE  
   MOV A,#69h   ;ACMD41
LCALL RW_BYTE     
MOV A,#40h
LCALL RW_BYTE
 MOV A,#00h
 LCALL RW_BYTE
MOV A,#00h
LCALL RW_BYTE
MOV A,#00h
LCALL RW_BYTE
MOV A,#0ffh
LCALL RW_BYTE

MOV A,#0DDH
LCALL RW_BYTE
    CJNE A,#00H,D11;返回值为什么01H
JMP D2 
D11:JMP D22  
D2:  MOV SPCTL,#0DCH   ;高速SPI
   SETB 5.3
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-7 10:39:41 | 显示全部楼层
回复【3楼】绝缘大湿:
---------------------------------
哇,汇编,我只能膜拜了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-9-5
在线时间
0 小时
 楼主| 发表于 2013-9-7 10:53:01 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,不要抛弃我,纠结死了T-T
为什么CMD8后面返回的字节不对,读字节一直都是01H
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-9-7 15:26:30 | 显示全部楼层
我不懂汇编啊...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-9-5
在线时间
0 小时
 楼主| 发表于 2013-10-11 09:24:54 | 显示全部楼层
还是SD卡的问题,换了一张512M的卡就可以初始化成功了。是不是单片机能力不够,不能发现4G的大容量高速卡,单片机我用的是STC12C5A60S2。
现在就是初始化成功了,写命令也可以写进去,就是在写数据后返回值一直是0FFH,写入数据失败。
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2013-10-18
在线时间
0 小时
发表于 2013-10-22 10:47:59 | 显示全部楼层
回复【7楼】绝缘大湿:
---------------------------------
你好,我现在遇到的问题就是写入CMD41的时候返回值一直是01,不是00,我发送CMD8后返回的都是对的,就是CMD41返回一直是01,不知道怎么改了。。CMD0,CMD8,CMD55都对的,就是不能初始化成功,求大湿指导下!!可以把代码发我邮箱吗?我看看。或者会不会还是硬件的问题,我是用自己搭的硬件,PIC的单片机,SPI通信,然后淘宝的SD卡模块,1G的SD卡。前几步都对,就应该不是硬件问题?
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2013-9-5
在线时间
0 小时
 楼主| 发表于 2013-10-28 09:51:36 | 显示全部楼层
回复【8楼】covanl:
---------------------------------
你确定cmd8的返回值正确??后面还有四个字节的返回值都验证了????
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 17:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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