在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: dabenzhong

[求助] SD卡的初始化过程

[复制链接]
 楼主| 发表于 2012-5-15 14:45:10 | 显示全部楼层
什么白说了,我试过了,先发送CMD55和ACMD41(所有ACMD41里面的电压参数为0),然后再发送CMD55、ACMD41(正常设置里面的电压参数),然后在发送询问类的ACMD41。不是这样么?
结果一样,没区别
发表于 2012-5-15 15:02:36 | 显示全部楼层
先解決dabenzhong的問題
1. 先確定你手上的SD卡在其它的SD HOST有沒有相容性問題,比方拿一台SD CARD READER來試試看,看看能不能正常辨識到這張SD 卡,或是換卡來測試
(1)如果別的SD HOST也辨識不到這張卡,就表示這張卡有問題,請換張正常的卡
(2)如果你換了別張卡(在其他SD HOST是可以正常認到卡的)來測試你自己的SD HOST, 卻還是認不到,請利用Logical analyzor或是SD protocol analyzor來查問題,模仿別的SD HOST來發送Command (不只command argument內容,還有SD clock的頻率)
=====================================================

在SD Version 2.0
只有特別提到SD CARD會在第一個ACMD41中,去檢查OCR的HCS bit.
並沒有特別提到所謂的第二個ACMD41 第三個ACMD41 .....的差別. SD HOST原則上都是送出ACMD41,都是帶著一樣的Command argument.

規格中,針對Initialization and Identification Flow,這是用來示意,表示某功能的flag的判斷順序,給SD CARD的Designer參考,並非真的就是照它畫的去區分1st ACMD41 -- 2nd ACMD41 -- 3rd ACMD41.....

我知道TestMetrix在測試SD compliance的時候,在power-up之後,會送多個ACMD41
1st ACMD41 with argument = 0
2nd ACMD41 with argument = work voltage
3rd ACMD41 with argument = work voltage
...
... 直到SD CARD回READY

這是TestMetrix它自己的測法,但不表示SD SPEC裡 ACMD41有第二第三的差別
每個ACMD41的間隔時間也很長,內部處理速度快的CARD可以在第二或是第三個ACMD41就可以讓CARD變成 Ready

以上是我的經驗和認知
當然也有SD HOST就模仿TestMetrix的測試方式去發送Command,它們的想法是...既然SD CARD可以測試過TestMetrix,那麼設計SD HOST的時候,也照著一樣的方式去發送Command,應該也不會出什麼錯誤
 楼主| 发表于 2012-5-16 09:56:15 | 显示全部楼层
回pcbass
      我现在所有的结构都是通过逻辑分析仪观察所得,在测试当中发现了个奇怪的问题。
     首先,我用的是2G以上的Sd卡。发送第一个ACMD41的时候,所有参数为0,然后之后的ACMD41命令的时候都正常设置。然后,我通过逻辑分析仪观察到,如果SD卡的response响应了HCS位,那么再发送ACMD41后,SD卡无response。而如果SD卡的response没响应HCS位,那么就会一直busy。
     关于第二点我可以理解,因为协议上也说明了,如果是HCS卡而没有将相应的位设置为1的话,那么就会在初始化的过程当中一直维持busy状态。但是我不明白为什么当SD卡响应了HCS位之后,为什么再发送ACMD41命令后会没有response的呢?
 楼主| 发表于 2012-5-16 10:01:15 | 显示全部楼层
而且,我想问一下,在第一次发送ACMD41的时候,并且所有argument都为0的情况下,SD卡的response当中的HCS位会拉高么?也就是OCR寄存器当中的第30位——CCS
发表于 2012-5-16 10:55:56 | 显示全部楼层
LZ用的是标准SD卡,还是SDHC卡??
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SD 卡卡的初始化开始于接收到ACMD41指令之后,ACMD指令的 HCS(Host Capacity
Support)位如果设定为1的话,表明控制器支持SDHC 卡,否则表示不支持。
在 CMD8 命令发送之后的ACMD41指令其功能有所扩展,在参数里多了HCS 部分,在响应
里面多了 CCS(Card Capacity Status)部分。HCS参数会被不响应CMD8 命令的SD卡所抛
弃。控制器向不响应CMD8的卡发送 ACMD41指令时,HCS位应该设置为零0。如果向 SDHC
卡发送 HCS位为 0的ACMD41命令,SDHC卡返回的响应,其busy 标识位永远为0,代表忙状
态。HCS标识位用来表明SD 卡是否已经完成初始化,如果未完成,HCS为零,否则为1,如
果 HCS为 0,控制器会重复发送ACMD41指令,SD卡只检查首次接收到的ACMD41指令的HCS
位。
发表于 2012-5-16 11:01:31 | 显示全部楼层
响应CMD8的 SD卡发送的对于ACMD41指令响应会包含CCS部分,控制器只检查HCS标
志位为 1 的响应所包含的CCS 位。CCS=1表明其为SDHC 卡,否则为标准SD卡
~~~~~~~~~~~~~~
刚开始研究SD协议,希望能一起讨论
发表于 2012-5-16 11:37:05 | 显示全部楼层
wangyingwei提供的資料沒錯
SD CARD只有在第一個ACMD41會去檢查CARD是否是高容量的卡(4G以上),所以dabenzhong要是第一個ACMD41沒有把OCR register的BIT[30]設成1, 這張高容量的SD CARD就會認為,它所對應的到SD HOST並不支援 High capacity (只支援Standard capacity),所以後續就不回response.

如果SD HOST一開始有送CMD8, 再加上第一個ACMD41的HCS=0, SD CARD就會認為對方是一個符合SD v2_00 但是只支援Standard capacity 的SD HOST

可以去看SD v2_00 Spec的 Chapter 3.3 Card Capacity, 這邊有一張圖,就會看到 Host supporting Standard capacity 不能用於High capacity SD Memory Card (那條連線是虛線,不是實線)

所以只要把第一個ACMD41的HCS設成1,SD CARD依該就有RESPONSE了.....先這樣試試看!



(好久沒複習SD Spec了.....)
发表于 2012-5-16 11:39:38 | 显示全部楼层
回复 24# dabenzhong


   如果是Standard capacity的card就不會 (CCS=0)   如果是High capacity的card (大於等於4GB)才會CCS=1
 楼主| 发表于 2012-5-16 13:43:08 | 显示全部楼层
根据我所看到的结果,CMD8的相应没问题,试过很多张卡,响应都是一致的,而且没有错误。但是到后面的ACMD41就很奇怪,要不就是没有CCS的response,要不就是busy位总是0,不明白是为什么。
 楼主| 发表于 2012-5-16 14:41:54 | 显示全部楼层
我用的SDHC高容量卡,协议是2.0的(CMD8的response证实了这点)。然后时钟是200KHz的,电压为3.5V(ACMD41当中的相应位和SD卡两端的电压匹配),第一次ACMD41设置HCS和相应的Voltage值,之后的ACMD41的Voltage值都为0。
    但是目前SD卡对ACMD41的response中的busy响应始终为0。试过kinston的2G卡、8G卡、16G卡以及sandec的SDHC卡,结果一样,还有什么地方是我忽略了的?
    CMD0的那边是有个等待80个时钟周期的过程是吧,是指在给SD卡供电之后,在提供了SD卡时钟之后,至少维持CMD线高电平80个时钟周期再发送命令是吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-19 05:25 , Processed in 0.021082 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表