OpenEdv-开源电子网

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

SD卡扇区数据擦除问题请教???????????

[复制链接]

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-10-22
在线时间
1 小时
发表于 2014-11-20 23:59:33 | 显示全部楼层 |阅读模式
5金钱
1、SD卡数据擦除的问题,如果我的SD卡内存使用完的话,我是不是需要进行擦除?还是不需要擦除,数据会自动覆盖?PS:我是直接操作SD卡的扇区,没有文件系统。

2、SD卡每个扇区定义为512b字节,如果我只写入200b数据,剩余的字节是被赋值为0,还是保存原来写入的数据?

3、SD卡的扇区擦除命令怎样使用? ps:

u8 SD_EraseDisk(u32 cnt,u32 sector)
{
  u8 r1;
cnt *=512;
sector *= 512;

r1=SD_SendCmd(CMD32,cnt,0X01);
  if(r1==0){
  r1=SD_SendCmd(CMD33,sector,0X01);
  }
  if(r1==0){
  r1=SD_SendCmd(CMD38,0,0X01);
  }
  return r1;
  }
这是我根据SD卡擦除命令编写的扇区擦除函数,CMD32--设置起始地址、CMD33--设置终止地址、CMD38--擦除所选中的扇区。有资料上说擦除命令是按 “位”地址操作的,故转换扇区地址为字节地址。


原子哥,请指教。

最佳答案

查看完整内容[请看2#楼]

1,自动的,不需要人工擦除 2,可以写200b,剩下的还是原来的值,或者你写入的新值。 3,擦除命令我没用过。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-20 23:59:34 | 显示全部楼层
1,自动的,不需要人工擦除
2,可以写200b,剩下的还是原来的值,或者你写入的新值。
3,擦除命令我没用过。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-11-21 12:48:25 | 显示全部楼层
发送命令设置起始地址和结束地址,然后启动擦除即可,很简单
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-10-22
在线时间
1 小时
 楼主| 发表于 2014-11-21 21:38:29 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
是扇区地址,还是需要转换为字节地址?

u8 SD_EraseDisk(u32 cnt,u32 sector)
{
  u8 r1;
cnt *=512;
sector *= 512;

r1=SD_SendCmd(CMD32,cnt,0X01);
  if(r1==0){
  r1=SD_SendCmd(CMD33,sector,0X01);
  }
  if(r1==0){
  r1=SD_SendCmd(CMD38,0,0X01);
  }
  return r1;
  }

指令这样使用时正确的吗?
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-11-21 23:05:40 | 显示全部楼层
回复【4楼】laopei008:
---------------------------------
逻辑是对的,但是这样不行
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-10-22
在线时间
1 小时
 楼主| 发表于 2014-11-22 10:48:25 | 显示全部楼层
回复【5楼】Badu_Space:
--------------------------
您说说,是我发送指令的格式不对?还是说SD_SendCmd(CMD32,cnt,0X01);这个发送指令的函数使用的不正确?
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-11-22 11:17:20 | 显示全部楼层
你固定一种卡不变可以这么写
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-10-22
在线时间
1 小时
 楼主| 发表于 2014-11-22 12:36:05 | 显示全部楼层
回复【7楼】Badu_Space:
--------------------------------
卡的种类是不会变的,我用的是16G的SD卡。这种直接操作SD卡扇区的指令,是不是对SD卡的要求很高,SD卡不能有坏扇区之类的问题?
回复

使用道具 举报

7

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2014-10-22
在线时间
1 小时
 楼主| 发表于 2014-11-22 23:26:34 | 显示全部楼层
回复【7楼】Badu_Space:
---------------------------------
SD_SendCmd(CMD32,cnt,0X01); 这个函数中第三个参数是crc的校验值,我搞不懂应该怎样设置?希望你给指点指点。
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-11-23 11:02:53 | 显示全部楼层
回复【9楼】laopei008:
---------------------------------
协议里面不是说有CRC么,照抄
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 23:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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