搜索
bottom↓
回复: 35

SD卡时钟切换问题

[复制链接]

出0入0汤圆

发表于 2012-11-25 12:38:57 | 显示全部楼层 |阅读模式
最近在搞fpga的sd卡读写,使用的是SD bus模式,不过在时钟切换方面出了点问题,如下图,sd卡有两种频率,fod(用于初始化),fpp(用于数据传输).

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

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

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-11-25 12:38:58 | 显示全部楼层
learningAVR 发表于 2012-12-23 15:25
对了.我在SD卡里面放的数据时"00 01 02 03 04 05 06 07 08 09 0A 0B .......",从波形可以看出,数据时没什么 ...

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

出0入0汤圆

发表于 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的频率

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

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

出0入0汤圆

发表于 2012-11-25 23:47:14 | 显示全部楼层
CMD9之后 SD卡进入Standby mode,尝试使用CMD7

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-11-26 11:14:16 | 显示全部楼层
CMD7我用了但是,貌似切换时钟后就cmd7就没有打出来了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-11-26 12:35:28 | 显示全部楼层
围观!
个人感觉25M估计是达不到的  2M也太低了估计能高点

出0入0汤圆

发表于 2012-11-26 12:51:10 | 显示全部楼层
CMD7发不出来,有确认过SD clk的频率吗?
SD clk应该是FPGA控制切换的, FPGA时钟源是多少Hz?

出0入0汤圆

 楼主| 发表于 2012-11-26 12:59:34 | 显示全部楼层
在上面的工程中,FPGA的时钟源是100M,所以提供给sd卡的时钟是10M,用示波器量了SD卡的时钟管脚,的确是10M,只不过波形不是很平整.

出0入0汤圆

 楼主| 发表于 2012-11-26 13:01:29 | 显示全部楼层
难道是这种时钟切换方法有问题?

出0入0汤圆

发表于 2012-11-28 00:41:25 | 显示全部楼层
SD clk 10MHz不平整是指有glitch,400kHz或2MHz也存在这种不平整吗?
CMD设计应该是与SD clk同步的,因此控制逻辑应该是一致的啊 只要时钟没问题,不至于连CMD都发不出来啊

出0入0汤圆

发表于 2012-11-28 01:02:35 | 显示全部楼层
如果此时仍然使用400kHz SD clk,CMD7能否发送

出0入0汤圆

 楼主| 发表于 2012-11-29 16:09:02 | 显示全部楼层
NemoGu 发表于 2012-11-28 00:41
SD clk 10MHz不平整是指有glitch,400kHz或2MHz也存在这种不平整吗?
CMD设计应该是与SD clk同步的,因此控 ...

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

出0入0汤圆

 楼主| 发表于 2012-11-29 16:10:13 | 显示全部楼层
NemoGu 发表于 2012-11-28 01:02
如果此时仍然使用400kHz SD clk,CMD7能否发送

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

出0入0汤圆

发表于 2012-11-29 16:31:19 | 显示全部楼层
这样看来是SD clk的问题啊
仿真时候 2MHz以上 能看的毛刺吗?
PCB layout有检查吗?

出0入0汤圆

 楼主| 发表于 2012-12-1 14:41:49 | 显示全部楼层
本帖最后由 learningAVR 于 2012-12-1 16:18 编辑
NemoGu 发表于 2012-11-29 16:31
这样看来是SD clk的问题啊
仿真时候 2MHz以上 能看的毛刺吗?
PCB layout有检查吗? ...


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



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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-12-4 11:31:40 | 显示全部楼层
千山万水js 发表于 2012-12-3 22:55
哇都用vhdl写的。我用的是opencores上的一个ip核,很难调试

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

出0入0汤圆

发表于 2012-12-4 17:42:44 | 显示全部楼层
learningAVR 发表于 2012-12-1 14:41
这是2M和10M的时钟管脚的波形,貌似区别很大:

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

出0入0汤圆

 楼主| 发表于 2012-12-14 21:27:16 | 显示全部楼层
NemoGu 发表于 2012-12-4 17:42
10M的波形看起来也还可以啊,10MHz时候SD CMD的波形有看过吗?
能否多试验几张其他的SD card, 现在试验中 ...

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

出0入0汤圆

发表于 2012-12-14 22:35:38 | 显示全部楼层
learningAVR 发表于 2012-12-14 21:27
不好意思,最近忙别的事情去了,好久没弄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时钟频率
这样试试看

出0入0汤圆

 楼主| 发表于 2012-12-15 17:54:45 | 显示全部楼层
NemoGu 发表于 2012-12-14 22:35
SD Specification所说的"The clock rate is also switched from fOD to fPP at that point"中"at that po ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-12-15 20:57:06 | 显示全部楼层
本帖最后由 NemoGu 于 2012-12-15 20:58 编辑
learningAVR 发表于 2012-12-15 17:54
貌似还是不行,切换时钟后,发送读一块指令有返回,状态位没错,但是数据线就是没有数据过来.时序图如下,
...


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

出0入0汤圆

 楼主| 发表于 2012-12-17 12:40:08 | 显示全部楼层
NemoGu 发表于 2012-12-15 20:57
CMD17之后 SD_CLK一直继续toggle吗?如果有应该可以看到DAT0上有数据的,DAT1~DAT3没有也正常(在CMD17之 ...

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

出0入0汤圆

发表于 2012-12-17 12:57:58 | 显示全部楼层
learningAVR 发表于 2012-12-17 12:40
如上上楼,为了方便查看,我把DATA的四条线连到了led了,其中led0对应的就是data0,可以看到那是没有数据的,t ...

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

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

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

出0入0汤圆

发表于 2012-12-17 13:41:12 | 显示全部楼层
luhuo

出0入0汤圆

 楼主| 发表于 2012-12-19 18:12:09 | 显示全部楼层
NemoGu 发表于 2012-12-17 12:57
CMD17的状态正常是不是指CMD线上看到的Response正常?
10MHz是指SD的CLK信号?

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

出0入0汤圆

发表于 2012-12-19 23:09:24 | 显示全部楼层
learningAVR 发表于 2012-12-19 18:12
是的,CMD17的状态正常是指CMD线上看到的Response正常,显示处于transfer转态.
10Mhz就是指SD的CLK信号;
上 ...

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

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

出0入0汤圆

 楼主| 发表于 2012-12-23 15:24:07 | 显示全部楼层
NemoGu 发表于 2012-12-19 23:09
如果CMD17的Response都是正常的话 SD_CLK也一直存在的话,DAT0应该是有数据出来的
更换CMD17的地址参数, ...

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2012-12-23 15:25:44 | 显示全部楼层
对了.我在SD卡里面放的数据时"00 01 02 03 04 05 06 07 08 09 0A 0B .......",从波形可以看出,数据时没什么问题的.但是,FPGA这边就是收不到....

出0入0汤圆

 楼主| 发表于 2012-12-24 23:47:37 | 显示全部楼层
NemoGu 发表于 2012-12-23 18:02
SD_DAT0是不是连接到FPGA pin上看到的波形?FPGA这边采样AD_DAT0的Timing是不是有问题呢 ...

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

出0入0汤圆

 楼主| 发表于 2012-12-27 14:11:02 | 显示全部楼层
NemoGu 发表于 2012-12-23 18:02
SD_DAT0是不是连接到FPGA pin上看到的波形?FPGA这边采样AD_DAT0的Timing是不是有问题呢 ...

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-12-27 14:17:26 | 显示全部楼层
learningAVR 发表于 2012-12-27 14:11
问题终于解决了,原来一直都是有数据过来的,只不过是要等一段时间,我在chipscope的采样窗口设置得太小了, ...

一起学习 共同进步

出0入0汤圆

发表于 2013-5-23 15:08:25 | 显示全部楼层

出0入0汤圆

发表于 2013-8-23 16:06:20 | 显示全部楼层
顶一下这个帖子的楼主和NemoGu,感谢你们的执着。

出0入0汤圆

发表于 2013-8-26 10:54:58 | 显示全部楼层
学习了!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-24 07:19

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

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