Board logo

标题: 读sd卡的问题 [打印本页]

作者: hihixyj    时间: 2008-7-15 15:42     标题: 读sd卡的问题

de1板子 自带的sd卡程序中有一段读sd的代码

BYTE SD_read_lba(BYTE *buff,UINT32 lba,UINT32 seccnt)
{
BYTE c=0;
UINT32 i,j;
lba+=101; //不明白此处101代表什么意思
for(j=0;j<seccnt;j++)
{
{

cmd_buffer[0] = cmd17[0];
cmd_buffer[1] = (lba>>15)&0xff;
cmd_buffer[2] = (lba>>7)&0xff;
cmd_buffer[3] = (lba<<1)&0xff;
cmd_buffer[4] = 0;
lba++;//此处lba+1有什么用处呢?
send_cmd(cmd_buffer); //调用发送cmd的函数,将cmd17发送出去

}
....读data线上的数据
}

在main()函数里,初始化lba=720,循环调用SD_read_lba()函数

lba代表什么量呢?

谢谢!!

作者: caopengly    时间: 2008-7-16 20:37

这个看一下sd卡的读数据datasheet就知道了,我估计是类似于控制字的东西,将控制字分开写入不同的寄存器:

cmd_buffer[0] = cmd17[0];
cmd_buffer[1] = (lba>>15)&0xff;
cmd_buffer[2] = (lba>>7)&0xff;
cmd_buffer[3] = (lba<<1)&0xff;
cmd_buffer[4] = 0;


作者: nanshi320    时间: 2008-8-7 10:04

难。我也想知道

[em09]
作者: ctqy    时间: 2008-8-27 14:31

lba是扇区号。
作者: gslcugb    时间: 2009-3-5 15:51

是逻辑扇区号还是物理扇区号呢。我的SD卡是一个G的。数据存放的位置OFFSEET是2007040,我想读这里的数据。谢谢!


作者: kyo__022    时间: 2009-10-30 22:18

不是扇区号,SECCNT才是,这个程序是一个扇区,一个扇区的读数据的,lba,是cmd17命令的地址参数,表示读取的开始地址,在SD卡的说明文档里有




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0