OpenEdv-开源电子网

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

关于原子哥SD卡的例程读写问题(sdio协议)

[复制链接]

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-11-16
在线时间
2 小时
发表于 2015-12-24 16:51:04 | 显示全部楼层 |阅读模式
5金钱


1.看SD卡的数据手册上介绍,一个block为512字节(也可自己设定),一个sector由多个block组成,按道理一个sector大小应该远大于512字节。例程里边有:
u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt)
{
u8 sta=SD_OK;
u8 n;
long long lsector=sector;
lsector<<=9;
sector地址左移9位不就是乘512吗?为什么sector的大小也变成了512字节?
2.如果我想把一个20kb的buf写进SD卡,利用SD_WriteDisk,假如一个sector就是512个字节,那么cnt的值也是我们计算出来的吧,应该等于40对吗?

下面是例程里面的
SD_WriteDisk函数。
[mw_shl_code=c,true]u8 SD_WriteDisk(u8*buf,u32 sector,u8 cnt) { u8 sta=SD_OK; u8 n; long long lsector=sector; lsector<<=9; if((u32)buf%4!=0) { for(n=0;n<cnt;n++) { memcpy(SDIO_DATA_BUFFER,buf,512); sta=SD_WriteBlock(SDIO_DATA_BUFFER,lsector+512*n,512);//????sector??????×÷ buf+=512; } }else { if(cnt==1)sta=SD_WriteBlock(buf,lsector,512); //????sector??????×÷ else sta=SD_WriteMultiBlocks(buf,lsector,512,cnt); //?à??sector } return sta; }[/mw_shl_code]


最佳答案

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

1,SD卡这个大小是可以设置的。我们一般来说的sector,结合文件系统使用,使用512比较好(占用内存少)。如果你要用大的sector,也是可以,fatfs可以设置,同时设置SD卡对应的大小即可。 2,是的。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-12-24 16:51:05 | 显示全部楼层
1,SD卡这个大小是可以设置的。我们一般来说的sector,结合文件系统使用,使用512比较好(占用内存少)。如果你要用大的sector,也是可以,fatfs可以设置,同时设置SD卡对应的大小即可。
2,是的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

176

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-27
在线时间
206 小时
发表于 2015-12-24 17:34:04 | 显示全部楼层
我用的是for循环给里面写。
回复

使用道具 举报

7

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2015-11-16
在线时间
2 小时
 楼主| 发表于 2015-12-25 09:48:18 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
嗯嗯,了解了,谢谢原子哥
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 16:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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