搜索
bottom↓
回复: 20

金士顿SD卡和其他SD卡不一样吗?怎么ACMD41命令通不过?

[复制链接]

出0入0汤圆

发表于 2011-4-15 11:27:14 | 显示全部楼层 |阅读模式
RT 我写了一段初始化SD卡并读写的驱动,发现奇怪的问题是:手里面有三张SD卡,两张三星的 512MB 、1G的 ,检测出是V2.0的卡,另外一张是金士顿的4G卡,三星的两张卡初始化 读写都没有问题的!但是4G金士顿的SD卡初始化的时候,一直卡在发送ACMD41后没有0x00返回,一直返回的是0x01....
我的初始化顺序是:CMD0---CMD8-----CMD55+ACMD41....
请大侠赐教......
PS:金士顿的卡检测出也是V2.0的协议..

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2011-4-15 13:43:38 | 显示全部楼层
自己顶一下

出0入0汤圆

 楼主| 发表于 2011-4-15 17:09:42 | 显示全部楼层
另外,碰到一个新问题:我误将512MB的SD卡的0扇区擦除了,写入了其他的内容,结果我读SD卡的容量啊 、CID等都是错误的,难道这些信息保存在扇区0?不是吧,按理说,用户应该删不了出厂的信息啊 ?为什么呢?我读另外两张卡就可以读到正确的CID CSD..不知道大家有没有碰到类似的问题?

出0入0汤圆

 楼主| 发表于 2011-4-16 09:14:38 | 显示全部楼层
有人点击 就是没有人回

出0入0汤圆

发表于 2011-7-9 20:47:30 | 显示全部楼层
你好,我也碰到这个问题了,CMD55+ACMD41一直返回1,请问你解决了吗?我邮箱:xuyibinaix@163.com

出0入0汤圆

发表于 2011-7-9 21:19:15 | 显示全部楼层
这个兼容性问题,多半是由于时序保证的不够,尤其是,CS无效之后,要额外的发送一个0xFF的冗余dummy字节;甚至为求可靠,在CS有效之前,也要发送一次。
上电后低速率发送80个clk的1,也要做。
CSD/CID不放在sector0的,单独的寄存器存放的。读的不正确,还是没有完全兼容所有的卡的要求。
某些V1的卡CMD8会有返回误检成V2,所以,最准确的是靠check CCS in OCR when SDHC的。
我们之前的SD卡SPI程序,修修补补到后来,再没有碰见过不兼容的卡了。

出0入0汤圆

发表于 2011-9-25 00:02:56 | 显示全部楼层
5555555....我也是啊

出0入0汤圆

发表于 2011-10-9 01:43:10 | 显示全部楼层
回复【4楼】xuyibinaix
-----------------------------------------------------------------------

这位哥能否把代码共享下,我还是没搞定金士顿的4GSDHC卡

出0入0汤圆

发表于 2011-10-9 05:23:35 | 显示全部楼层
4G的卡与2G及以下的卡,协议不一样。

出0入0汤圆

发表于 2011-10-9 05:55:39 | 显示全部楼层
回复【5楼】huatuizh  
这个兼容性问题,多半是由于时序保证的不够,尤其是,cs无效之后,要额外的发送一个0xff的冗余dummy字节;甚至为求可靠,在cs有效之前,也要发送一次。
上电后低速率发送80个clk的1,也要做。
csd/cid不放在sector0的,单独的寄存器存放的。读的不正确,还是没有完全兼容所有的卡的要求。
某些v1的卡cmd8会有返回误检成v2,所以,最准确的是靠check ccs in ocr when sdhc的。
我们之前的sd卡spi程序,修修补补到后来,再没有碰见过不兼容的卡了。
-----------------------------------------------------------------------

我也是,现在init也是自己写的,没有遇到什么不兼容的卡了。

出0入0汤圆

发表于 2011-10-9 07:29:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-8 13:41:20 | 显示全部楼层
很不错的经验。

出0入0汤圆

发表于 2011-11-8 14:01:05 | 显示全部楼层
回复【5楼】huatuizh  
-----------------------------------------------------------------------

对的,某些sd卡不用多余的clk,某些一定要。某些卡特别慢,等待超时的时间要非常长。

出0入0汤圆

发表于 2011-11-8 16:12:18 | 显示全部楼层
最近用了金士顿的2GSDHC卡,靠接口都和SD卡不一个样,少了个管脚,请问代码难开发吗?

出0入0汤圆

发表于 2011-11-8 22:21:46 | 显示全部楼层
硬件上也是很重要的,
我以前调的时候,
同一份代码,
在我的开发板上(5V单片机的引脚直接串电阻连SD卡)只能调通一张1G SD卡,调不通金士顿的4G SDHC卡, ACMD41那里怎么也调不过
但是后来另外去买了一个SD读写模块以后,两张卡都没问题了

出0入0汤圆

发表于 2011-11-8 22:26:22 | 显示全部楼层
4G的是SDHC吧。和SD不一样

出0入0汤圆

发表于 2011-11-9 00:19:42 | 显示全部楼层
sdhc的资料谁有请上传,让大家学习一下!

出0入0汤圆

发表于 2011-12-16 23:24:37 | 显示全部楼层
回复【5楼】huatuizh   
这个兼容性问题,多半是由于时序保证的不够,尤其是,cs无效之后,要额外的发送一个0xff的冗余dummy字节;甚至为求可靠,在cs有效之前,也要发送一次。
上电后低速率发送80个clk的1,也要做。
csd/cid不放在sector0的,单独的寄存器存放的。读的不正确,还是没有完全兼容所有的卡的要求。
某些v1的卡cmd8会有返回误检成v2,所以,最准确的是靠check ccs in ocr when sdhc的。
我们之前的sd卡spi程序,修修补补到后来,再没有碰见过不兼容的卡了。
-----------------------------------------------------------------------

我也是,现在init也是自己写的,没有遇到什么不兼容的卡了。
回复【9楼】90999
-----------------------------------------------------------------------


应该补充:
    1> SD卡可以用SPI或是SDIO控制模块两种方式驱动
    2> 2G以下的与4G以上的协议不同
    3> 4G以上的是高度卡,需要用SDIO模块才能驱动

出0入0汤圆

发表于 2012-7-28 12:30:40 | 显示全部楼层
我的总是返回一个0x01,发送acmd41,解决的吗?不知道问题在哪?应该是sdv1的协议检测

出0入0汤圆

发表于 2013-7-12 23:18:48 | 显示全部楼层
我说呢 我直接买了个16G的 怎么调都跳不过ACMD41

出0入0汤圆

发表于 2013-7-19 10:15:26 | 显示全部楼层
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:26

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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