微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > SD卡CMD17命令

SD卡CMD17命令

时间:10-02 整理:3721RD 点击:
sd卡发送cmd17 命令之后,没有开始数据传输。数据线一直为高,返回卡的状态是在Transfer state.有人遇到过这样的问题么,求解答,跪谢!

你仔细看看SD的协议,SD控制器发送CMD17后,SD卡应该从Trans 状态转到Data状态,所以你的情况SD卡返回的响应有问题,我记得返回的响应状态应该是十六进制900,不知道对不对?



    你的响应900也是在transfer state,数据传输过程中应该是data state,传输完成之后就应该返回transfer state,所以应该是对的,现在我的响应是0x00000920,不知道对不对,关键是没有开始数据传输,不知道为什么呀。那个cmd17的参数设置(也就是sd卡的地址)应该怎么设置,我直接设置成0x000000了,也就是读取第一个扇区的值。不知道地址设置的对不对呢?

1, 如果你是做embeded 开发,那么我默认你的sd host是可以正常工作的,
a. cmd17的参数设置应该是os给的,即从卡的什么地址开始读取数据.
b. 检查是否有cmd complete interrupt。
c. 从cmd line读回的32-bit response是否有错(看spec),如果response不对,说明card没有接受你的cmd17,请检查你的软件流程是否符合spec。
2. 如果你是做硬件设计,请保证这个时候clock是工作的,否则卡不会返回数据给你。

你返回的response 0x0920不对,你在cmd17之前是不是发了cmd55?那么这就表示你这个个cmd17是acmd17.请仔细看看spec



    现在我发送的cmd17的响应是0x0900,应该是对的了。但是还是没有开始数据传输. 我用fpga调的,是做的硬件设计,用的opencores上面的sd卡控制器的ip核,整个控制器由硬件实现。你说的保证这时clock是工作的,是什么意思?sd卡的时钟是系统时钟分频给它的,我一直没动过,还要怎么保证clock是工作的?谢谢!

response应该是正确的,请用示波器或者逻辑分析仪检查发送sd interface status after issuing cmd17。
如果发送命令之后sd interface clock stop,表明host禁止card 送数据出来。

还有两个方向:
1, 你收到cmd complete interrupt 没有,如果没有,你收到什么error interrrupt?
2, 你的SD host的timeout是多少(忍受多长时间没有数据送过来)。
3, 实在不行,用modelsim做模拟你的firmware流程,这样可以同时check 硬件逻辑 和软件流程,当然很耗时间了。



    sd interface clock stop,是sd卡自动停止clock时钟,也就是sd卡不接受时钟了?为什么会出现这种情况呢

sd clock是host驱动的,当然只有host能开或停clock。
不存在sd card不接受clock的问题,整个sd card都是靠这个clock工作。
当host里面的fifo full的时候,它不能接受更多的数据,那么它会停下时钟阻止card送数据过来。



1、 恩,但是我这个主机里面好像里面没有不给sd卡时钟的命令。
2、数据都没有开始进行传输,fifo应该是空的,也就不会出现你说的那种情况!

1, host stop clock是一个硬件行为,不需要软件介入。
2,如果clock和card没有问题,请检查你的software flow,是否正确的执行了handshake 流程。
3,你是学生还是engineer? engineer 是不用 “好像” “应该”之类的措辞。



    我是学生呢,刚开始学这个,还不懂,所以要多向你们学习。

呵呵,学生到这一步很错了。

你好,我的CMD17命令返回值错误,无法读取数据,你的问题解决了吗?怎么解决的?

我的CMD17的返回值已经是0xB00了,card状态处于data状态,但是在传输过程失败了,在状态机中的某一状态 卡住了,提示FIFO已经满了,可是我做FPGA验证之前的RTL都仿真没问题了啊,真奇怪。



   你是大神啊。



   返回值不对说明SD卡的状态不对,你之前的初始化肯定有问题。

哈哈,看到你们回复的真好。我也正准备用FPGA控制SD卡FAT32.主要是读取SD卡里的数据。我准备用SD卡的4线模式,毕竟我在做毕业设计,要求传输速度。网上很少有SD模式的资料。基本都是SPI形式的,SPI的话有现成的控制模块。不知道诸位能提一点什么建议吗?特别是SD模式的使用方面。非常感谢。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top