打印

请教SD的操作。

[复制链接]
1680|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
colinluan|  楼主 | 2009-9-20 19:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 colinluan 于 2009-9-20 19:51 编辑

void SD_Write_Block(DWORD addr)
{
INT8U temp;
int i,retry=0;
// SD_CS=0;
//
do
{
temp=SD_Write_Command(0x18,addr<<9);  //写命令
    }while(temp!=0);
   
    SPISendByte(0xff);    //穿插时序
    SPISendByte(0xff);
SPISendByte(0xff);

SPISendByte(0xfe);    //开始

for(i=0;i<512;i++)
SPISendByte(0x4e);   //写一个扇区r的0x4e

SPISendByte(0xff);    //crc
SPISendByte(0xff);

temp=SPIReceiveByte();   //响应,这个地方会出问题,每次收到的都是0

if((temp&0x1f)!=0x05)
{
  SD_CS=1;
  SPISendByte(0xff);
  return;
}
while(SPIReceiveByte()!=0xff);
//while(SPISendByte(0xff)!=0xff);
SPISendByte(0xff);
SD_CS=1;
}

今天调试SD卡的写操作,现在数据已经可以正常写进去的,但是郁闷的是读取响应的时候总读0,按理说应该是0x05才是,不知道什么原因,参考了很多程序,也看了资料,就是找不到错在哪里,还请各位大虾帮忙看看。
CPU用的是LPC2148,SPI初始化时工作频率大概为180K,正常工作时1.5M,读可以正常读,数据也能写进去,就是收到的写响应是错的。

相关帖子

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

本版积分规则

43

主题

83

帖子

0

粉丝