OpenEdv-开源电子网

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

SD卡读写字节的问题

[复制链接]

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
发表于 2015-8-11 11:39:33 | 显示全部楼层 |阅读模式
5金钱


我看原子例程中读写子程序中
[mw_shl_code=c,true]//写SD卡 //buf:数据缓存区 //sector:起始扇区 //cnt:扇区数 //返回值:0,ok;其他,失败. u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt) { u8 r1; if(SD_Type!=SD_TYPE_V2HC)sector *= 512;//转换为字节地址 if(cnt==1) { r1=SD_SendCmd(CMD24,sector,0X01);//读命令 if(r1==0)//指令发送成功 { r1=SD_SendBlock(buf,0xFE);//写512个字节 } }else { if(SD_Type!=SD_TYPE_MMC) { SD_SendCmd(CMD55,0,0X01); SD_SendCmd(CMD23,cnt,0X01);//发送指令 } r1=SD_SendCmd(CMD25,sector,0X01);//连续读命令 if(r1==0) { do { r1=SD_SendBlock(buf,0xFC);//接收512个字节 buf+=512; }while(--cnt && r1==0); r1=SD_SendBlock(0,0xFD);//接收512个字节 } } SD_DisSelect();//取消片选 return r1;// } [/mw_shl_code]


把sector定义为扇区,手册中说是一个扇区里有很多块(block)(不知道多少个块),上面的英文说块长度对于读为1-512字节,对于写固定为512字节,if(SD_Type!=SD_TYPE_V2HC)sector *= 512;//转换为字节地址       这句为什么SD卡类型不是大容量的就要把sector转换为字节地址?

最佳答案

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

回复【3楼】wodezpyzz: --------------------------------- 1,是的,不过1楼的回答有误。 不能去掉!!!!对于SDHC卡,必须不能乘以512. 2, 扇区是最小单位,块一般比扇区大。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-11 11:39:34 | 显示全部楼层
回复【3楼】wodezpyzz:
---------------------------------
1,是的,不过1楼的回答有误。
不能去掉!!!!对于SDHC卡,必须不能乘以512.

2,
扇区是最小单位,块一般比扇区大。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-11 23:05:56 | 显示全部楼层
这里可以去掉,所有的卡,都*512。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
 楼主| 发表于 2015-8-12 09:50:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
1:
if(SD_Type!=SD_TYPE_V2HC)sector *= 512;这个如果不去掉是不是对于SD_TYPE_V2HC的就不会乘以512?那不就不能对此类型的进行下面的操作了吗?但这里这样写的意义是什么呢?

2:
//获取SD卡的总扇区数(扇区数)   
//返回值:0: 取容量出错 
//       其他:SD卡的容量(扇区数/512字节)
//每扇区的字节数必为512,因为如果不是512,则初始化不能通过.   
u32 SD_GetSectorCount(void)

对这里我有一个疑问:每扇区的字节数必为512,手册里说块长度最大为512啊?扇区包含很多块的,扇区应该比块大啊?
回复

使用道具 举报

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
 楼主| 发表于 2015-8-14 10:12:32 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
手册原文里说分很多group,每个group有很多sector,每个sector有很多block的啊,就是sector比block大的啊!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-16 22:50:30 | 显示全部楼层
回复【5楼】wodezpyzz:
---------------------------------
不好意思,确实是sector大于block,我搞错了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-16 22:51:27 | 显示全部楼层
见此图:

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
 楼主| 发表于 2015-8-30 10:07:19 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
那这样说的话,一个block有多少字节,一个sector有多少块呢?我看手册里没有说明。
还有在程序里读写512字节上面写的扇区操作,那既然错了,是不是就是块操作?也就是一个块固定为512字节?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-8-30 22:55:44 | 显示全部楼层
回复【8楼】wodezpyzz:
---------------------------------
这个要你自己继续看手册了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

36

主题

94

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2015-3-29
在线时间
3 小时
 楼主| 发表于 2015-9-1 10:12:15 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
多少给点提示嘛!至少点拨一下啊!!!!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-1 21:46:36 | 显示全部楼层
回复【10楼】wodezpyzz:
---------------------------------
提示就是看资料。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 22:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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