OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9480|回复: 2

SD卡命令CMD18连续读

[复制链接]

27

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2012-7-17
在线时间
0 小时
发表于 2012-8-30 09:40:04 | 显示全部楼层 |阅读模式
u8 SD_ReadDisk(u8*buf,u32 sector,u8 cnt)
{
 u8 r1;
 if(SD_Type!=SD_TYPE_V2HC)sector <<= 9;//转换为字节地址
 if(cnt==1)
 {
  r1=SD_SendCmd(CMD17,sector,0X01);//读命令
  if(r1==0)//指令发送成功
  {
   r1=SD_RecvData(buf,512);//接收512个字节   
  }
 }else
 {
  r1=SD_SendCmd(CMD18,sector,0X01);//连续读命令
  do
  {
   r1=SD_RecvData(buf,512);//接收512个字节 
   buf+=512; 
  }while(--cnt && r1==0);  
  SD_SendCmd(CMD12,0,0X01); //发送停止命令
 }  
 SD_DisSelect();//取消片选
 return r1;//
}
关于CMD18命令的命令参数sector,如果我现在想连续读2个扇区,那在cnt设置为2,sector设置多少,还是0吗,这个命令参数就表示从0扇区开始读,读到1扇区吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2012-8-30 09:54:05 | 显示全部楼层
sector还是那个sector。
读几个扇区是由cnt控制的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

27

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2012-7-17
在线时间
0 小时
 楼主| 发表于 2012-8-30 10:41:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
while(1)
 {
  if(t==30)//每6s钟执行一次
  {
   if(SD_ReadDisk(buf,0,2)==0)//读取MBR扇区
   { 
    LCD_ShowString(60,170,"USART1 Sending Data...");
    printf("SECTOR 0 DATA:\n");
    for(sd_size=0;sd_size<1024;sd_size++)printf("%x ",buf[sd_size]);//打印MBR扇区数据        
    printf("\nDATA ENDED\n");
    LCD_ShowString(60,170,"USART1 Send Data Over!");
   }
   t=0;
  }   
  t++;
  delay_ms(200);
  LED0=!LED0;
 }
主函数修改cnt=2,sd_size<1024,想连续读2个扇区,但是在串口调试助手上显示的怎么和cnt=1 sd_size=512时一样呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 13:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表