打印
[ZLG-ARM]

请教:LPC2138的SSP配置成SPI方式初始化SD卡问题

[复制链接]
3030|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
victoryang|  楼主 | 2007-9-5 16:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在LPC2114上用SPI1已经初始化SD卡成功,并可以读写,但在LPC2138上用SSP就不行了(已配置成SPI方式)。
问题出在,用CMD58指令读取SD卡状态:支持的电压信息时,返回值为0x00000000,而应该是0x00FF8000;
在发送CMD58指令之前的CMD0指令操作返回值正确,为0;
请各位大虾赐教!!!也请周公解答一下。
谢谢!

相关帖子

沙发
victoryang|  楼主 | 2007-9-6 08:53 | 只看该作者

有时CMD58指令的返回值为0x12,高人请解!

使用特权

评论回复
板凳
zlgARM| | 2007-9-7 15:21 | 只看该作者

victoryang

您好:    
    根据您的描述,问题可能出在以下两个地方:
    (1)、SSP配置为SPI时的设置
  使用SSP操作SD卡需注意一些协议细节:
    1、帧长度为8位;
    2、在SCK时钟上升沿捕获数据;
    3、数据传输时,MSB(位7)在先。
    (2)、SD卡操作
   CMD0指令是没有返回值的,而您却说:“CMD0的返回值正确,为0”。

  还有,您说:“CMD58指令的返回值为0x12”。使用SPI总线操作SD卡时,CMD58指令的返回值为40位(8位状态位,32位数据位),不知道您指的是哪个值?

使用特权

评论回复
地板
victoryang|  楼主 | 2007-9-10 14:56 | 只看该作者

对不起,我没说清楚!

与SD卡通讯的程序,我是参考周立功关于SD卡的例程,我所说的返回值是函数的返回值,0表示操作成功,0x12表示SD卡回复状态错误。
现在已经确定,之前的操作不成功是SSP时钟时序不对,设置SPHA = 0,SPOL = 0可用。
又遇到的新问题是,初始化完SSP以后,读扇区时错误?好像还是读时序有问题。
我现在在LPC2138下用SSP调SD卡,在LPC2114 SPI下已经调试成功!在LPC2114下SPI设置中,SPHA = 0; SPOL = 1。
谢谢!

使用特权

评论回复
5
USER32768| | 2008-11-8 21:07 | 只看该作者

典型的时钟太高.把时钟调低就没事了.

LPC2148 SSP操作SD卡时钟不要太高,问题在他的IO驱动能力不够,也可以开关时间太长.(我试了3个LPC2148读写在PLD上可以高速操作的SD都这样,后面把时钟降低就没事了)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

48

帖子

0

粉丝