learningAVR 发表于 2012-11-25 12:38:57

SD卡时钟切换问题

最近在搞fpga的sd卡读写,使用的是SD bus模式,不过在时钟切换方面出了点问题,如下图,sd卡有两种频率,fod(用于初始化),fpp(用于数据传输).

SD模式的初始化流程如下:

如果初始化和数据传输都使用fod的话,一切都没有问题,能够正常读写数据.

但是这样子的话读写速度太慢了,只要400KHz.所以我在使用fod完成初始化即到达cmd3后就切换时钟,使用25MH的.但是,切换时钟后发送读指令cmd17后,虽然有返回r1,,但是data线上却没有数据传过来,一直为高电平.
这是发送cmd17后的时序图,里面我把data0连到了led以便观察:

请问哪位大虾知道哪里出现问题了?

NemoGu 发表于 2012-11-25 12:38:58

learningAVR 发表于 2012-12-23 15:25 static/image/common/back.gif
对了.我在SD卡里面放的数据时"00 01 02 03 04 05 06 07 08 09 0A 0B .......",从波形可以看出,数据时没什么 ...

SD_DAT0是不是连接到FPGA pin上看到的波形?FPGA这边采样AD_DAT0的Timing是不是有问题呢

NemoGu 发表于 2012-11-25 13:52:26

400kHz只是在初始化SD卡时候使用的
fpp在发送Send_CSR(CMD9)后才切换, fpp也并非总是25MHz
CSR寄存器中的TRAN_SPEED会指明SD card支持的speed
SD Host应该通过TRAN_SPEED来确定fpp的频率

learningAVR 发表于 2012-11-25 15:52:59

我试了一下,发送了cmd9后TRAN_SPEED是32H,说明最高支持25M的时钟,于是我增加了cmd4设置DSR,然后才改变时钟,不过还是不行.后来我把时钟频率慢慢降低,发现降到2M的时候才可以,再提高就不行了.哦,对了我的电路里没有增加10pf的去耦电容,这个有没有关系?

NemoGu 发表于 2012-11-25 23:47:14

CMD9之后 SD卡进入Standby mode,尝试使用CMD7

learningAVR 发表于 2012-11-26 11:14:16

CMD7我用了但是,貌似切换时钟后就cmd7就没有打出来了

wangshaosh123 发表于 2012-11-26 12:35:28

围观!
个人感觉25M估计是达不到的2M也太低了估计能高点

NemoGu 发表于 2012-11-26 12:51:10

CMD7发不出来,有确认过SD clk的频率吗?
SD clk应该是FPGA控制切换的, FPGA时钟源是多少Hz?

learningAVR 发表于 2012-11-26 12:59:34

在上面的工程中,FPGA的时钟源是100M,所以提供给sd卡的时钟是10M,用示波器量了SD卡的时钟管脚,的确是10M,只不过波形不是很平整.

learningAVR 发表于 2012-11-26 13:01:29

难道是这种时钟切换方法有问题?

NemoGu 发表于 2012-11-28 00:41:25

SD clk 10MHz不平整是指有glitch,400kHz或2MHz也存在这种不平整吗?
CMD设计应该是与SD clk同步的,因此控制逻辑应该是一致的啊 只要时钟没问题,不至于连CMD都发不出来啊

NemoGu 发表于 2012-11-28 01:02:35

如果此时仍然使用400kHz SD clk,CMD7能否发送

learningAVR 发表于 2012-11-29 16:09:02

NemoGu 发表于 2012-11-28 00:41 static/image/common/back.gif
SD clk 10MHz不平整是指有glitch,400kHz或2MHz也存在这种不平整吗?
CMD设计应该是与SD clk同步的,因此控 ...

不止是边缘有毛刺,就是高低电平不是横线,而是像一个波浪那样子的。400k的时候只是电平切换的时候有毛刺而已。

learningAVR 发表于 2012-11-29 16:10:13

NemoGu 发表于 2012-11-28 01:02 static/image/common/back.gif
如果此时仍然使用400kHz SD clk,CMD7能否发送

使用低频的话是没问题的,我试过初始化和传输数据都用2M也是没问题的。

NemoGu 发表于 2012-11-29 16:31:19

这样看来是SD clk的问题啊
仿真时候 2MHz以上 能看的毛刺吗?
PCB layout有检查吗?

learningAVR 发表于 2012-12-1 14:41:49

本帖最后由 learningAVR 于 2012-12-1 16:18 编辑

NemoGu 发表于 2012-11-29 16:31 static/image/common/back.gif
这样看来是SD clk的问题啊
仿真时候 2MHz以上 能看的毛刺吗?
PCB layout有检查吗? ...

这是2M和10M的时钟管脚的波形,貌似区别很大:



我只负责软件程序的开发,pcb不是我做的,pcb layout这方面我不是很清楚.请问要检查哪方面的东西,去耦电容?布线?

learningAVR 发表于 2012-12-4 11:31:40

千山万水js 发表于 2012-12-3 22:55 static/image/common/back.gif
哇都用vhdl写的。我用的是opencores上的一个ip核,很难调试

很难调试但还是可以弄的,我这个都不知道出了什么问题......

NemoGu 发表于 2012-12-4 17:42:44

learningAVR 发表于 2012-12-1 14:41 static/image/common/back.gif
这是2M和10M的时钟管脚的波形,貌似区别很大:




10M的波形看起来也还可以啊,10MHz时候SD CMD的波形有看过吗?
能否多试验几张其他的SD card, 现在试验中无法切换SD clk的SD card在读卡器上能否正常切换SD clk?

learningAVR 发表于 2012-12-14 21:27:16

NemoGu 发表于 2012-12-4 17:42 static/image/common/back.gif
10M的波形看起来也还可以啊,10MHz时候SD CMD的波形有看过吗?
能否多试验几张其他的SD card, 现在试验中 ...

不好意思,最近忙别的事情去了,好久没弄SD卡,那张卡在电脑上读写是没问题的.

NemoGu 发表于 2012-12-14 22:35:38

learningAVR 发表于 2012-12-14 21:27 static/image/common/back.gif
不好意思,最近忙别的事情去了,好久没弄SD卡,那张卡在电脑上读写是没问题的. ...

SD Specification所说的"The clock rate is also switched from fOD to fPP at that point"中"at that point"应该是指在Data Transfer Mode
所以当CMD7将Stand-by Mode切换到Data Transfer Mode之后, 才能切换SD_CLK时钟频率
这样试试看

learningAVR 发表于 2012-12-15 17:54:45

NemoGu 发表于 2012-12-14 22:35 static/image/common/back.gif
SD Specification所说的"The clock rate is also switched from fOD to fPP at that point"中"at that po ...

貌似还是不行,切换时钟后,发送读一块指令有返回,状态位没错,但是数据线就是没有数据过来.时序图如下,

NemoGu 发表于 2012-12-15 20:57:06

本帖最后由 NemoGu 于 2012-12-15 20:58 编辑

learningAVR 发表于 2012-12-15 17:54 static/image/common/back.gif
貌似还是不行,切换时钟后,发送读一块指令有返回,状态位没错,但是数据线就是没有数据过来.时序图如下,
...

CMD17之后 SD_CLK一直继续toggle吗?如果有应该可以看到DAT0上有数据的,DAT1~DAT3没有也正常(在CMD17之前没有ACMD6,bus width还是default 1-bit)

learningAVR 发表于 2012-12-17 12:40:08

NemoGu 发表于 2012-12-15 20:57 static/image/common/back.gif
CMD17之后 SD_CLK一直继续toggle吗?如果有应该可以看到DAT0上有数据的,DAT1~DAT3没有也正常(在CMD17之 ...

如上上楼,为了方便查看,我把DATA的四条线连到了led了,其中led0对应的就是data0,可以看到那是没有数据的,toggle是指一直有时钟振荡吗?切换到10M以后,我的时钟就是一直提供10M的,没有停下来.

NemoGu 发表于 2012-12-17 12:57:58

learningAVR 发表于 2012-12-17 12:40 static/image/common/back.gif
如上上楼,为了方便查看,我把DATA的四条线连到了led了,其中led0对应的就是data0,可以看到那是没有数据的,t ...

CMD17的状态正常是不是指CMD线上看到的Response正常?
10MHz是指SD的CLK信号?

以上截图逻辑分析仪抓取到的SD Card Pin上面的波形吗?

DAT0有没有一直被FPGA drive?还是高阻上拉?

sunbingbing 发表于 2012-12-17 13:41:12

luhuo{:smile:}

learningAVR 发表于 2012-12-19 18:12:09

NemoGu 发表于 2012-12-17 12:57 static/image/common/back.gif
CMD17的状态正常是不是指CMD线上看到的Response正常?
10MHz是指SD的CLK信号?



是的,CMD17的状态正常是指CMD线上看到的Response正常,显示处于transfer转态.
10Mhz就是指SD的CLK信号;
上面的截图用的是xilinx那个chipscope捕获的,类似逻辑分析仪吧.
data线没有设置上拉,端口类型为inout,也没有赋给默认值.

NemoGu 发表于 2012-12-19 23:09:24

learningAVR 发表于 2012-12-19 18:12 static/image/common/back.gif
是的,CMD17的状态正常是指CMD线上看到的Response正常,显示处于transfer转态.
10Mhz就是指SD的CLK信号;
上 ...

如果CMD17的Response都是正常的话 SD_CLK也一直存在的话,DAT0应该是有数据出来的
更换CMD17的地址参数,DAT0也是没有数据处理?

可以尝试只连接SD_CLK和SD_CMD, DAT0~DAT3悬空,在测试下SD Card的DAT0信号是不是一直没有数据出来

learningAVR 发表于 2012-12-23 15:24:07

NemoGu 发表于 2012-12-19 23:09 static/image/common/back.gif
如果CMD17的Response都是正常的话 SD_CLK也一直存在的话,DAT0应该是有数据出来的
更换CMD17的地址参数, ...

我今天用示波器量了半天SDDATA0,终于看到数据了,果然是有数据过来的,而且没有错误:

但是,那个chipscope捕捉到的波形中SDdata0还是没有数据.奇怪了,我检查了管脚约束,也没有错误.

learningAVR 发表于 2012-12-23 15:25:44

对了.我在SD卡里面放的数据时"00 01 02 03 04 05 06 07 08 09 0A 0B .......",从波形可以看出,数据时没什么问题的.但是,FPGA这边就是收不到....{:mad:}

learningAVR 发表于 2012-12-24 23:47:37

NemoGu 发表于 2012-12-23 18:02 static/image/common/back.gif
SD_DAT0是不是连接到FPGA pin上看到的波形?FPGA这边采样AD_DAT0的Timing是不是有问题呢 ...

不是的,data0的数据,我是直接用示波器在sd卡的管脚上量到的,我也觉得很可能是FPGA的采样问题,难道是时钟切换后还是用原来的200k时钟进行采样,我再看看。

learningAVR 发表于 2012-12-27 14:11:02

NemoGu 发表于 2012-12-23 18:02 static/image/common/back.gif
SD_DAT0是不是连接到FPGA pin上看到的波形?FPGA这边采样AD_DAT0的Timing是不是有问题呢 ...

问题终于解决了,原来一直都是有数据过来的,只不过是要等一段时间,我在chipscope的采样窗口设置得太小了,并且在代码里面有一个等待数据过来的时间也设定得太小了,所以一直看不到数据,加大以后就有了.多谢NemoGu的帮助{:lol:}

NemoGu 发表于 2012-12-27 14:17:26

learningAVR 发表于 2012-12-27 14:11 static/image/common/back.gif
问题终于解决了,原来一直都是有数据过来的,只不过是要等一段时间,我在chipscope的采样窗口设置得太小了, ...

一起学习 共同进步

835392444 发表于 2013-5-23 15:08:25

{:victory:}

winterw 发表于 2013-8-23 16:06:20

顶一下这个帖子的楼主和NemoGu,感谢你们的执着。

cortesx 发表于 2013-8-26 10:54:58

学习了!

du520xi 发表于 2013-9-27 13:42:00

{:smile:}{:smile:}{:smile:}学习了
页: [1]
查看完整版本: SD卡时钟切换问题