2247|3

6628

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

关于msp430驱动sd卡的问题 [复制链接]

网上都说,sd卡的一个扇区是512B,但我通过读csd寄存器,为1024B,是错的吗?
我有一个sd卡的写扇区的程序,但应答信息总为出错,程序如下:
uchar write_sd_sector(unsigned long addr,uchar *Buffer)
{  
   uchar reply,retry=0;
   uint i;
   uchar CMD[]={0x58,0x00,0x00,0x00,0x00,0xFF};
   addr=addr<<10;                         //addr = addr * 512
   CMD[1] = ((addr & 0xFF000000) >>24 );
   CMD[2] = ((addr & 0x00FF0000) >>16 );
   CMD[3] = ((addr & 0x0000FF00) >>8 );
   retry=0;
   do
   {  
      reply=write_cmd(CMD);   //为了可靠写入,写100次
      retry++;
      if(retry==100)
      {
        return(reply);      //send commamd Error!
      }
   }
   while(reply!=0);
   for(i=0;i<20;i++)      //在写之前先产生20个时钟信号
   {
     read_byte();
   }
   write_byte(0xFE);
   for (i=0;i<1024;i++)    //现在可以写入1024个字节
   {
      write_byte(*Buffer++);
   }
   write_byte(0xFF);         //Dummy CRC
   write_byte(0xFF);        //CRC Code
   write_byte(0xFF);
   reply=read_byte();       //read response
   if((reply&0x1F)!=0x05)   // 写入的1024个字节是未被接受
   {
     dis_sd();
     while(read_byte()!=0xff){};
     return(reply);        //Error!
   }
   while(read_byte()!=0xff){};
   dis_sd();         //
   return(3);              //写入成功
}
void write_byte(uchar data)
{
   TXBUF_0=data;         
   while(!(IFG1&UTXIFG0));
}
uchar read_byte(void)
{
   uchar data=0xff;
   TXBUF_0=0xff;
   while(!(IFG1&URXIFG0));
   data=RXBUF_0;
   return(data);
}
uchar write_cmd(uchar *cmd)
{
   uchar data=0xff,retry=0;
   dis_sd();
   write_byte(0xff);
   en_sd();
   for(uchar i=0;i<6;i++)
      write_byte(cmd);
  // data=read_byte();
   do
   {
       data=read_byte();
       if(retry++>=200)
          break;
   }
   while(data==0xff);
   return data;
   
}
请高手指点一下。

最新回复

网上都说,sd卡的一个扇区是512B,但我通过读csd寄存器,为1024B,是错的吗? 好像可以为512的倍数  详情 回复 发表于 2015-10-31 11:19
 
点赞 关注

回复
举报

160

帖子

1

TA的资源

纯净的硅(初级)

沙发
 
楼主有参考TI官方的读写SD卡的例程吗?  官方程序,只需接口匹配一下就可以完美运行。
 
 

回复

6628

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 
cc1989summer 发表于 2015-10-31 09:33
楼主有参考TI官方的读写SD卡的例程吗?  官方程序,只需接口匹配一下就可以完美运行。

找找有空发上来
 
 
 

回复

5276

帖子

5

TA的资源

裸片初长成(中级)

4
 
网上都说,sd卡的一个扇区是512B,但我通过读csd寄存器,为1024B,是错的吗?

好像可以为512的倍数
 
个人签名没工作,没女人老婆,没宽带 ,  没钱
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表