您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> sd卡怎么写入数据
本帖共有451个阅读者
发表帖子 发表投票 回复主题
sd卡怎么写入数据
OG(论坛新手)
OG
头衔:社区公民
帮派:无帮无派
帖数:21
金钱:350
积分:40
注册时间:2014/3/16
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
sd卡怎么写入数据
/****************************************************************************
* 名称 : MMC_Write_sector
* 功能 : 写MMC卡扇区,将BUF的数据写入扇区号sector
* 入口参数 :sector,buf
* 出口参数 :0
****************************************************************************/
unsigned char MMC_Write_sector(unsigned int sector, unsigned char *buf)
{
unsigned char *p, by;
unsigned int i,flag;
unsigned int startadr;
p = buf;
startadr = sector*(unsigned int)BYTE_PER_SEC;
Write_Command_MMC (MMC_WRITE_BLOCK,startadr);
SPI_TransferByte(0xFF);
SPI_TransferByte(0xFF);
SPI_TransferByte(0xFE);
for(i=0; i<BYTE_PER_SEC; i++)
{
   SPI_TransferByte(*p++);
   }
SPI_TransferByte(0xFF);
SPI_TransferByte(0xFF);
   do
{
flag = SPI_TransferByte(0xFF);
by=flag & 0x1F;
}while(by != 0x05);
do
   {
   flag = SPI_TransferByte(0xFF);
   }while(flag !=0xFF);
  
return 0;
}

Write_Command_MMC (MMC_WRITE_BLOCK,startadr);这句话怎么理解,写入了什么数据SPI_TransferByte(0xFF);
SPI_TransferByte(0xFF);
SPI_TransferByte(0xFE); 这3个又是什么,代表什么含义


我是og,学到的都会用来帮助大家
等级:论坛新手 参考IP地址:*.*.*.*
2014/3/24 8:26:58
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
MMC_WRITE_BLOCK 是SD卡写
BLOCK的命令字,告知Sd卡,需要写
BLOCK,
startadr是需要写的起始地址,SD卡中地址是字节地址寻址,所以这个地址是
sector*(unsigned int)BYTE_PER_SEC  ,即每个扇区字节数乘以扇区数。
SPI_TransferByte(0xFF);
SPI_TransferByte(0xFF);
SPI_TransferByte(0xFE);
这三个是送入命令的格式,写完命令后必须执行这三句。这个你可以在SD卡的一些传输协议标准中找到。
执行完后,开始写入数据,数据完成后再传2个FF,最后校验是否写入正确。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/3/25 22:10:04
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159292 Call, 1 Queries, Processed in 0.015991 second(s),