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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7317|回复: 24

[求助] SD模式读Sd卡数据周期错误,求高手,求前辈

[复制链接]
发表于 2015-8-22 15:36:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 fkl523 于 2015-8-22 15:38 编辑

signaltap图

signaltap图


根据SD模式时序的协议,FPGA应该在上升沿锁存卡返回的数据,图中reg_clk_sd是我提供给卡的时钟,但signaltap采到的数据表明,卡并没有按照我提供的时钟一个周期发4位数据,如图的F8数据,这就造成程序中保存不到这个数据,并造成后续字节错位,

signaltap是没问题的,因为我直接通过串口发到PC上看过了,F8就是没采到,

现在有以下几个问题:

1.发CMD17能读出数据证明我前边的初始化是没问题的吧?
   难道是我读数据的时钟有问题?

2.请问出现这种情况的可能原因是什么呢?
跪谢。
发表于 2015-8-22 23:30:52 | 显示全部楼层
您好,是否可以麻煩您說明一下你所發出的SD command flow呢?
您是預期發CMD17之後 SD card會給你4 bit mode的data對嗎?
 楼主| 发表于 2015-8-24 17:44:00 | 显示全部楼层
回复 2# kka


  前辈你好,我是以400kHZ,CMD0,CMD8,ACMD41,CMD2,CMD3完成初始化,
然后以25MHz,CMD7,ACMD6,CMD17开始读数据,应该没错吧?
发表于 2015-8-24 22:07:50 | 显示全部楼层
嗨,你好。请教一下,我现在也在用FPGA调试SD卡,SD模式。初始化成功,发送完ACMD6后,发送CMD17,CMD17响应是0X900,CMD17的参数我设为的全0,就是想读取第一扇区的参数。现在的问题是数据线一直是F。不知为啥。我在ACMD6后用ACMD42把data3上的上拉电阻取消的。
发表于 2015-8-24 22:09:50 | 显示全部楼层
不过,我在协议中看到一句话大概的意思是data3上有个上拉电阻,在数据传输时要把它取消掉。唉,我也不知道我的问题在哪里,woz现在用的是ISE调的改天也用Quaruts试试。希望我们能交流一下,谢谢。
 楼主| 发表于 2015-8-26 22:26:46 | 显示全部楼层
回复 5# enjoylife2017


   嗨,你收到的应答应该是没问题的,你检查下你的sd_data方向控制的对不,也即,保证CMD17后sd_data是作为输入端口用的。
发表于 2015-9-2 09:52:23 | 显示全部楼层
fkl523大大..你發的cmd flow 是對的...請問你是否有檢查過所有的 SD card 回的 response 呢?
是否有CRC error  或是  回的 status是不對的呢?
发表于 2015-9-4 10:09:17 | 显示全部楼层
回复 1# fkl523

你好,我现在也在调试SD卡,用的是SD4线模式,FPGA。你的初始化成功吗?我把给SD卡的时钟取反给SD卡的,我的意图是保证SD卡和FPGA程序的时序上差半个时钟,这样让他们相互的数据都准备充分了在处理。不知你是怎么处理的。CMD17相应0x00400900.前面的响应都是对的,CMD3响应是0x700.请问诸位大侠是怎么回事啊?他关键是CMD17的响应有个4,代表着当前卡不接受的命令。哎,我就不懂了。能交流一下吗?
发表于 2015-9-4 10:20:11 | 显示全部楼层
回复 6# fkl523


   我在发送CMD17的时候,SD_data是输出F,之后的读响应是SD_data是输出Z,读开始为‘0’,接着是度响应,但现在的问题是,CMD17的响应是0x00400900,意思就是说卡当前状态不支持的命令。我就相当的不懂了。之前的初始化CMD8响应位0x1AA,ACMD41响应是0xC0FF8000,CMD2响应正常,CMD3第一次响应是0x520,第二次是0x700,我就是在CMD3的响应是为0x700后再接着发送CMD17,然而CMD17的响应就奇怪了。还特意向您请教一下,问题是出在哪里?
0.jpg
 楼主| 发表于 2015-9-6 21:51:52 | 显示全部楼层
本帖最后由 fkl523 于 2015-9-6 21:59 编辑

回复 9# enjoylife2017

Hi,你CMD3为啥发两次呢?
发一次卡就回返回RCA了,然后用RCA作为参数发送CMD7选中卡(没看到你发CMD7),你试试可以不,

另外,SD卡是分物理地址和逻辑地址的,有的卡物理地址和逻辑地址是一样的,所以用WinHex之类的软件观察时要注意这个区别。

你只要能收到返回数据块的起始位,4个“0”就ok,接下来肯定是连续的数据了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-19 15:27 , Processed in 0.024193 second(s), 10 queries , Gzip On, Redis On.

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