7849|28

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SD卡驱动的问题 [复制链接]

小弟正在开发WINCE6.0的BSP中的SD卡驱动,CPU中有两个sd controller:一个连接了inand在系统中显示为storeage card并且可以进行正常的读写。另外一个controller连接了外接的sd card卡座(可以对sd card进行插拔)。

问题:现在插拔的sd card初始化过程中,命令回应总是time out! 所以导致sd card在系统中无法被识别!以下是相关调试信息:

[MMC] controller:0, slot:0, level:0
[MMC] 0, slot:0, present:0, ProcessCardInsertion()   //插拔中断检测到了sd card的插入!!
[MMC] controller:0, slot:0, level:0
[MMC] 0, slot:0, present:1, ProcessCardInsertion()
[MMC] Optioan handle pData:0xd2a2fdfc
[MMC] request command:5, arg:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x5
[MMC] request command:5, arg:0x0
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x5
[MMC] request command:5, arg:0x0
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x5
[MMC] request command:5, arg:0x0
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x5
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
[MMC] request command:0, arg:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
[MMC] request command:8, arg:0x15a
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCo    OALIOCtlIPM:  next XL=16, HSS=1
OALIOCtlIPM:  Received SET_OP
    OALIOCtlIPM:  next XL=16, HSS=1
mmandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x8
[MMC] request command:8, arg:0x15a
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x8
[MMC] request command:8, arg:0x15a
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x8
[MMC] request command:8, arg:0x15a
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x8
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
[MMC] request command:1, arg:0x300000
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x1
[MMC] request command:1, arg:0x300000
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x1
[MMC] request command:1, arg:0x300000
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x1
[MMC] request command:1, arg:0x300000
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x1
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
[MMC] request command:55, arg:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x37
[MMC] request command:55, arg:0x0
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x37
[MMC] request command:55, arg:0x0
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x37
[MMC] request command:55, arg:0x0
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0
ISTThread.
[MMC] :0 SDControllerISTHandler+++++++++++++,intr:0x4
[MMC] :0 HandleEndCommandInterrupt+++++++++++++,IMASK:0x1fff
ERROR: E:\WINCE600\PLATFORM\BEIJING2008\SRC\pxa300_mrvl_v1\SDHC\.\sdcontrol.c line 1881: [MMC]: 0, HandleEndCommandInterrupt+++++++++++++ TIMOUT, coomand :0x37
[MMC] :0 SDControllerISTHandler+++one loop end ,intr:0x0

命令到CMD55就没有继续往下发了,卡的初始化也就没有完成。而inand使用的是相同的驱动配置包括(GPIO的状态,电压,时钟),不知道问题出在哪里,希望高手能给点提示!!谢谢!!

最新回复

问题解决,散分  详情 回复 发表于 2008-11-4 10:25
点赞 关注

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
驱动源程序都是很成熟的,一般是你的接口没接对吧,还要注意该上拉的要接上拉电阻。
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
谢谢楼上兄弟提醒,我检查了原理图上拉电阻都拉上去了,用示波器也测量了引脚,电压都是对的。两个host的GPIO口都是相同的配置!所以很郁闷。。。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
1 和zylonite平台的原理图比较一下,注意数据线的上拉电阻也是必要的;
2 你外接的sd card卡座的那个Controller可以工作吗?
3 你inand的SD controller对应的pin脚MFPR pin设置是否正确
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 2 楼 lesho 的回复:
谢谢楼上兄弟提醒,我检查了原理图上拉电阻都拉上去了,用示波器也测量了引脚,电压都是对的。两个host的GPIO口都是相同的配置!所以很郁闷。。。


再认真看看吧,问题一般出现在自认为不会出错的地方。
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 songtitan 的回复:
1 和zylonite平台的原理图比较一下,注意数据线的上拉电阻也是必要的;
2 你外接的sd card卡座的那个Controller可以工作吗?
3 你inand的SD controller对应的pin脚MFPR pin设置是否正确


1. 我手上没有zylonite的原理图,但是比较了其他类似产品的原理图,4条数据线上全部都有100k的上拉电阻!命令线上有4.7k的上拉电阻!

2. 外接的controller怎么判断是否工作?通过调试信息我可以判断两个controller的初始化都是正确完成了,并且可以发送cmd.

3. 我inand的controller对应的pin脚设置如下(可以正常的工作!外接卡座pin脚我采用了相同的配置但是cmd就是没有response):

PXA_MFP_ACTIVE_MODE_SETTING_T gaulMMC2MFPTable[] =
{
#ifdef SDMMC2_DATA0
#if SDMMC2_DATA0==9  //GPIO 9
{SDMMC2_DATA0,  PXA_MFP_ALT_FN_4, PXA_MFP_DS_08X, PXA_MFP_CFG_PULL, PXA_MFP_NOT_DEFINED_VALUE, PXA_MFP_PULL_UP, PXA_OFF, PXA_MFP_NEITHER_EDGE, PXA_OFF}, // pull up to support SDIO
#else
#error The value of "SDMMC2_DATA0" is not supported!
#endif
#endif

#ifdef SDMMC2_DATA1
#if SDMMC2_DATA1==10  //GPIO 10
{SDMMC2_DATA1,  PXA_MFP_ALT_FN_4, PXA_MFP_DS_08X, PXA_MFP_CFG_NONE, PXA_MFP_NOT_DEFINED_VALUE, PXA_MFP_PULL_NEITHER, PXA_OFF, PXA_MFP_NEITHER_EDGE, PXA_OFF},
#else
#error The value of "SDMMC2_DATA1" is not supported!
#endif
#endif

#ifdef SDMMC2_DATA2
#if SDMMC2_DATA2==11  //GPIO 11
{SDMMC2_DATA2,  PXA_MFP_ALT_FN_4, PXA_MFP_DS_08X, PXA_MFP_CFG_NONE, PXA_MFP_NOT_DEFINED_VALUE, PXA_MFP_PULL_NEITHER, PXA_OFF, PXA_MFP_NEITHER_EDGE, PXA_OFF},
#else
#error The value of "SDMMC2_DATA2" is not supported!
#endif
#endif

#ifdef SDMMC2_DATA3
#if SDMMC2_DATA3==12  //GPIO 12
{SDMMC2_DATA3,  PXA_MFP_ALT_FN_4, PXA_MFP_DS_08X, PXA_MFP_CFG_NONE, PXA_MFP_NOT_DEFINED_VALUE, PXA_MFP_PULL_NEITHER, PXA_OFF, PXA_MFP_NEITHER_EDGE, PXA_OFF},
#else
#error The value of "SDMMC2_DATA3" is not supported!
#endif
#endif

#ifdef SDMMC2_CMD
#if SDMMC2_CMD==14  //命令pin脚
{SDMMC2_CMD,  PXA_MFP_ALT_FN_4, PXA_MFP_DS_08X, PXA_MFP_CFG_NONE, PXA_MFP_NOT_DEFINED_VALUE, PXA_MFP_PULL_NEITHER, PXA_OFF, PXA_MFP_NEITHER_EDGE, PXA_OFF},
#else
#error The value of "SDMMC2_CMD" is not supported!
#endif
#endif

#ifdef SDMMC2_CLK
#if SDMMC2_CLK==13  //时钟pin脚
{SDMMC2_CLK,  PXA_MFP_ALT_FN_4, PXA_MFP_DS_08X, PXA_MFP_CFG_NONE, PXA_MFP_NOT_DEFINED_VALUE, PXA_MFP_PULL_NEITHER, PXA_OFF, PXA_MFP_NEITHER_EDGE, PXA_OFF},
#else
#error The value of "SDMMC2_CLK" is not supported!
#endif
#endif
};
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 91program 的回复:
引用 2 楼 lesho 的回复:
谢谢楼上兄弟提醒,我检查了原理图上拉电阻都拉上去了,用示波器也测量了引脚,电压都是对的。两个host的GPIO口都是相同的配置!所以很郁闷。。。


再认真看看吧,问题一般出现在自认为不会出错的地方。


谢谢,驱动和硬件相关,真是说不准问题出在什么地方!
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 lesho 的回复:
引用 3 楼 songtitan 的回复:
1 和zylonite平台的原理图比较一下,注意数据线的上拉电阻也是必要的;
2 你外接的sd card卡座的那个Controller可以工作吗?
3 你inand的SD controller对应的pin脚MFPR pin设置是否正确


1. 我手上没有zylonite的原理图,但是比较了其他类似产品的原理图,4条数据线上全部都有100k的上拉电阻!命令线上有4.7k的上拉电阻!

2. 外接的controller怎么判断是否工作?通过调试信息我可以判…

不好意思,我看错了,原来你是inand可以工作,但是卡槽无法工作。
你接卡槽的controller不能完全用同样的mfpr pin吧,应该是另外一套pin脚。不过这些原本的BSP应该有线程的代码配置,估计不会出错。

[MMC] controller:0, slot:0, level:0
[MMC] 0, slot:0, present:0, ProcessCardInsertion()  //插拔中断检测到了sd card的插入!!
[MMC] controller:0, slot:0, level:0
[MMC] 0, slot:0, present:1, ProcessCardInsertion()
这里为什么会2次call ProcessCardInsertion?
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

9
 
原来也碰到过类似的问题,但是不一定原因相同。只是提供一个方向。
当时是通过降低频率后发现可以正常的工作,后来硬件改了一个电容就好了。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 songtitan 的回复:
不好意思,我看错了,原来你是inand可以工作,但是卡槽无法工作。
你接卡槽的controller不能完全用同样的mfpr pin吧,应该是另外一套pin脚。不过这些原本的BSP应该有线程的代码配置,估计不会出错。
[/quote]

我的两个controller用的是两套pin脚,都是标准配置,bsp中已经配置好了

至于那两个card inserted检测,我后来尝试都变成了一次了,奇怪!!

[quote]引用 8 楼 gsymichael 的回复:
原来也碰到过类似的问题,但是不一定原因相同。只是提供一个方向。
当时是通过降低频率后发现可以正常的工作,后来硬件改了一个电容就好了。


能不能讲具体一点呢,在哪个地方去修改频率阿!!谢谢
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

11
 
原来也碰到过类似的问题,但是不一定原因相同。只是提供一个方向。
当时是通过降低频率后发现可以正常的工作,后来硬件改了一个电容就好了。



能不能讲具体一点呢,在哪个地方去修改频率阿!!谢谢
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

12
 
我看三星官网的电路图是这样加电容的。
gsymichae前辈,你看看是否是这样。我的问题是在检测忙信号的时候一直跳不出来。
[img=http://img.blog.163.com/photo/W9GbgzIU0qjCkFnyIqM3FA==/4834051250029428397.jpg]三星SD卡电路[/img]
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

13
 
gsymichae前辈----------SD卡的驱动是微软提供的,没有代码,我们怎么样才能降低频率?
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

14
 
学习一下
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

15
 
SD Host Controller有个相关的寄存器可以通过它来分频,也可以直接改EPLL
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 gsymichael 的回复:
SD Host Controller有个相关的寄存器可以通过它来分频,也可以直接改EPLL


gsymichael大仙,SD host controller驱动里面有个MMCSD_SetClock函数用来设置时钟频率,我跟了一下,它已经设置为最小的312500了(最大是26000000)。

昨天拜读了您的几篇SD Driver的文章很有启发,提几个问题:
1。 我现在的镜像中在控制面板中没有storage manager这个组件,请问是否在定制os的时候能够加入这个组件?

2。 没有storage manager这个组件,是否会影响到最后sd 图标的显示?我现在SD卡没有被识别是否与此有关?

3。 我现在板子上的inand能够被识别并且使用,是否说明storage manager 存在与否对inand没有影响,或者说inand和SD card的机制不同?

万分感谢!!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 14 楼 gsymichael 的回复:
SD Host Controller有个相关的寄存器可以通过它来分频,也可以直接改EPLL


在2440下有个
SDI Baud Rate Prescaler Register (SDIPRE)-----------------
Register Address R/W Description Reset Value 0x01

Prescaler Value [7:0] Determines SDI clock(SDCLK) rate as above equation.
Baud rate = PCLK / (Prescaler value + 1)
NOTE: Prescaler Value should be greater than zero.

不过昨天我用裸机测试SD卡可以了。我是焊接了个大的SD卡座,经理用小卡座在wince下面不行。这份代码是朋友给的。它的也是个MICORSD卡,弄个卡槽插在打卡坐上,完全没有问题,但是我们直接用小的卡座就不行了。俺和经理检查了好几遍,都发现没有作物。
真是神了。

我现在正在看SD卡的协议,希望早日搞定。到时候发些心得上来。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 15 楼 lesho 的回复:
gsymichael大仙,SD host controller驱动里面有个MMCSD_SetClock函数用来设置时钟频率,我跟了一下,它已经设置为最小的312500了(最大是26000000)。

昨天拜读了您的几篇SD Driver的文章很有启发,提几个问题:
1。 我现在的镜像中在控制面板中没有storage manager这个组件,请问是否在定制os的时候能够加入…

大仙都出来了,你就饶了我吧。
一般在SD的识别过程中,开始的时钟要求在100K~400K之间,代码中设的是固定的100K。但是实际的频率
并不是100K,通过Controller的寄存器分频会把给SD的时钟设置在100K~400K之间。从代码看是100K左右
是最好的,但是我也碰到在100多K时识别不到,调到375K反而能行的情况。你的时钟是300K左右,应该是没有
问题,你也可以再分一次设置到150K左右看看。如果还是不行就考虑其他的方向吧。我前面也说过不一定就是
这个原因引起的。

我所说的StorageManager是Filesys的一部分功能,并没有特别指什么组件。这部分是Private下的代码,实现对
块设备和文件系统的管理。
你现在SD卡没法识别和这部分没有关系,应该还是在Sd驱动方面或是硬件上存在问题。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

19
 
大仙?有趣
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

20
 
我也遇到了相同的问题,但我总结一般为以下问题:
1、硬件
上拉电阻
     SD卡接口一般有不同的接法 有的有上啦10K 或者100K  或者CMD上有4.7K(这个我没有见过,没有注意过),没有留意这个对卡的影响。
  匹配电阻
      一般都会有对CMD上有一个22ohm\ 33ohm 的匹配电阻,有的是两个(CPU端一个,卡座端一个), 通过实验,同一个板同一个程序,改变这个数字对卡的识别有一定的关系,对不同的卡反映也不同。 建议参考CPU的建议来设计电路,这里需要注意。
  
  电容
       有些在SD卡的VCC会接4.7uF 或者10UF 47Uf的电容,通过实验,这个电容对卡的识别也是有一定的影响,关键在于硬件工程师的设计。

  防短路、静电IC
      一般都会接,这个也是比较重要的一个,对信号有一些影响

2、软件
    系统插入卡后,SDHC会检测到, 完成上电操作,这可能要一点延迟。
    卡上电后,一般处于Idle模式,需要进行设置简单的通讯模式,SPI或者是SD模式, 有100K时钟或者其他设置,这样才可以使用一些CMD命令。也许上述的一些CMD可能不会发生超时问题。在上述没有看到相关的设置初始时钟的反馈。
    一些特别的命令发送后,出现Timeout是正常的,表明不同的卡有不同的反应(纵然SD协议是一样的,但存在兼容性问题)
    所以这里有一些是卡识别的过程,SDIO卡、SD卡 MMC卡 高速卡  SDHC2.0卡 Class6 Class4 卡等等。反馈可能都不一样。这些都需要通过读取卡信息(OCR等。。。)来完成。
     通过识别完是什么样的卡后, 才对寄存器进行相关的设置,比如模式转换、时钟(需要根据CPU支持情况设置兼容模式),再读取卡的相关信息。再就是加载对应的驱动程序了。。。。。。


    我的机器就是对不同的卡,在加载驱动这里有的成功了,有的失败了, 有的驱动加载成功了,文件系统不能加载。。有的直接都看不到SDMMC 文件夹。。。。有的 不能读取卡内容,有的随机格式化卡内容,有的读取卡的内容为乱码、有的将卡搞的在电脑都不能使用也不能格式化。。。。各种问题。。。 挺烦。

    期望在这里探讨一些关于 SD如何调试、、如何才能保证SD卡驱动的兼容性(SD1.1  2.0  SDHC等)    。。。。
   

欢迎讨论。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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