7348|13

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于SD卡的High-Speed模式。 [复制链接]

查看SD的Spec可以发现,SD2.0开始支持High-Speed mode,即Clock Src为50MHz,速度可以达到25MB/Sec.
请问大家:
1、是不是所有支持SD2.0的卡都支持High-Speed Mode?使用何种方式判断SD卡是否支持这种模式?
2、High-Speed mode的初始化流程是否与现有的流程有所区别?
3、开发过程中需要注意什么事项?

已经查到的相关帖子:
http://www.eggheadcafe.com/conversation.aspx?messageid=31505012&threadid=31505012

最新回复

学习了。。。  详情 回复 发表于 2009-11-20 14:00
点赞 关注

回复
举报

89

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
下面的资料引自MSDN:
Through the introduction of a new and enhanced SD bus implementation, the operating system now supports up to version 2.0 of the SD Card Physical Layer Specification. The Microsoft SD bus version 2.0 provides support for SD high capacity cards and also provides support for high speed mode. Specifically, the new SD bus supports SD cards greater than 4G and up to 32G as defined by the SD 2.0 protocol. Version 2.0 of the SD bus also allows for a high speed mode with a clock rate up to 50MHz and a Read/Write rate up to 25MB/sec using 4bit mode. Additionally, the new SD bus supports a new switch function command that allows for switching between card command mode and interface/high speed mode. With version 2.0 of the SD bus there is also a block addressing mode, with a fixed block length of 512 bytes for high capacity cards.

Note:  
When you are building a new image you need to set the image flag IMGSDBUS2 equal to 1 in order to use the new bus (sdbus2.dll). When IMGSDBUS2 is set to 1, sdbus2.dll is picked up during the makeimg process and is renamed to sdbus.dll in the generated image.  

Source code for the SD bus can be found in the following directories:

SD 1.1 bus - %_WINCEROOT%\Public\Common\OAK\Drivers\SDCard\SDBusdriver

SD 2.0 bus - %_WINCEROOT%\Public\Common\OAK\Drivers\SDCard\SDBus

An additional change to the SD bus is a new initialization process for SD cards. Version 2.0 of the SD bus checks for high capacity support during the SD memory client initialization. For more information, reference the following code excerpt.

Copy Code
DWORD dwSDHC;
apiStatus = SDCardInfoQuery( pMemCard->hDevice,
                             SD_INFO_HIGH_CAPACITY_SUPPORT,
                             &dwSDHC,
                             sizeof(dwSDHC));

if(!SD_API_SUCCESS(apiStatus)) {
   pMemCard->HighCapacity = FALSE;
}
else {
   pMemCard->HighCapacity = dwSDHC != 0;
}

if( pMemCard->HighCapacity ) {
   //SDMemCardConfig: Card is high capacity (2.0+)
}
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
学习,我用的开发板读写SD卡特别慢,也是想怎么能加快!
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
能否使用High-Speed取决于SD卡本身,具体判断的过程在SDBus层的代码中已经实现。
没有记错的话好像是通过CMD6吧,获得反馈信息判断SD卡是否可以使用High-Speed。
因为在SDBus层实现了,所以说不做修改也是可以支持High-Speed的。
 
 
 

回复

107

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 gsymichael 的回复:
能否使用High-Speed取决于SD卡本身,具体判断的过程在SDBus层的代码中已经实现。
没有记错的话好像是通过CMD6吧,获得反馈信息判断SD卡是否可以使用High-Speed。
因为在SDBus层实现了,所以说不做修改也是可以支持High-Speed的。


是CMD6,但是好像需要在SDHC的驱动中针对这个命令做特别的处理,Spec中如是说:
As a response to CMD6, the SD Memory Card will send R1 response on the CMD line and 512 bits of
status on the DAT lines.
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
刚才看了一下,发现在SDBus中对于这部分没有做判断,都是使用25M。
我这边的代码是三星加过判断的,在SDDevice.cpp中的SelectCardInterface函数中用
CMD6去读取,之后判断是不是支持High-Speed。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
1、是不是所有支持SD2.0的卡都支持High-Speed Mode?使用何种方式判断SD卡是否支持这种模式?
--> 支持SD2.0未必支持High-speed Mode,就像支持USB2.0,未必支持USB2.0的480Mbps HighSpeed一样的道理。
外表无法判断,只能实际读写进行判断。

2、High-Speed mode的初始化流程是否与现有的流程有所区别?
--> 先以低速的通讯判断是否是高速卡,如果是,就得提升时钟加快速度了。否则保持低速卡速度。与现有相比,就多了判断、提速。


3、开发过程中需要注意什么事项?
--> CPU都做掉了,软件只需要读寄存器值就行。硬件注意时钟线、数据线的布线(高速layout)。

btw:你不会是做ASIC的啊?
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 gsymichael 的回复:
刚才看了一下,发现在SDBus中对于这部分没有做判断,都是使用25M。
我这边的代码是三星加过判断的,在SDDevice.cpp中的SelectCardInterface函数中用
CMD6去读取,之后判断是不是支持High-Speed。


一般的SD dirver中都没有对CMD6做处理,不知道是否需要做特别的处理?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 
来学习~
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
[quote]引用楼主 vcleaner 的回复:
查看SD的Spec可以发现,SD2.0开始支持High-Speed mode,即Clock Src为50MHz,速度可以达到25MB/Sec.
请问大家:
1、是不是所有支持SD2.0的卡都支持High-Speed Mode?使用何种方式判断SD卡是否支持这种模式?
2、High-Speed mode的初始化流程是否与现有的流程有所区别?
3、开发过程中需要注意什么事项?


1.支持SD 2.0的卡都支持High-Speed Mode。其实在SD Spec 1.1以及之后的版本,就已经支持default和High-Speen两种模式了。可以通过发送ACMD51获取卡的SCR,并根据SCR中的SD_SPEC位判断其版本号。如果版本号在1.1以上(包括1.1),且Host也支持High-Speed的话,就可以通过CMD6切换到High-Speed模式了。
2.初始化流程多了CMD6进行模式切换,以及需要把Clock提升到50MHz。
3.正确使用High-Speed的前提是SD卡和Host都支持High-Speed模式。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

11
 
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

12
 
应该是CMD8命令,用来判断是否能支持SD2.0。。。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

13
 
SD1.1 通常称之为标准
SD2.0 一般称之为高速
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 9 楼 flyalice 的回复:
[quote]引用楼主 vcleaner 的回复:
查看SD的Spec可以发现,SD2.0开始支持High-Speed mode,即Clock Src为50MHz,速度可以达到25MB/Sec.
请问大家:
1、是不是所有支持SD2.0的卡都支持High-Speed Mode?使用何种方式判断SD卡是否支持这种模式?
2、High-Speed mode的初始化流程是否与现有的流程有所区别?
3、开发过程中需要注意什么事项?


1.支持SD 2.0的卡都支持High-Speed Mode。其实在SD Spec 1.1以及之后的版本,就已经支持default和High-Speen两种模式了。可以通过发送ACMD51获取卡的SCR,并根据SCR中的SD_SPEC位判断其版本号。如果版本号在1.1以上(包括1.1),且Host也支持High-Speed的话,就可以通过CMD6切换到High-Speed模式了。
2.初始化流程多了CMD6进行模式切换,以及需要把Clock提升到50MHz。
3.正确使用High-Speed的前提是SD卡和Host都支持High-Speed模式。

学习了。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表