首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

单片机对SD卡读写系列(二)

单片机对SD卡读写系列(二)

  • //-----------------------------------------------------------------------------------------------
  • 向SD卡中写入命令,并返回回应的第二个字节
  • //-----------------------------------------------------------------------------------------------
  • unsigned char Write_Command_SD(unsigned char *CMD)
  • {
  • unsigned char tmp;
  • unsigned char retry=0;
  • unsigned char i;

  • //禁止SD卡片选
  • SPI_CS=1;
  • //发送8个时钟信号
  • Write_Byte_SD(0xFF);
  • //使能SD卡片选
  • SPI_CS=0;

  • //向SD卡发送6字节命令
  • for (i=0;i<0x06;i++)
  • {
  • Write_Byte_SD(*CMD++);
  • }

  • //获得16位的回应
  • Read_Byte_SD(); //read the first byte,ignore it.
  • do
  • { //读取后8位
  • tmp = Read_Byte_SD();
  • retry++;
  • }
  • while((tmp==0xff)&&(retry<100));
  • return(tmp);
  • }
2) 初始化
SD卡的初始化是非常重要的,只有进行了正确的初始化,才能进行后面的各项操作。在初始化过程中,SPI的时钟不能太快,否则会造初始化失败。在初始化成 功后,应尽量提高SPI的速率。在刚开始要先发送至少74个时钟信号,这是必须的。在很多读者的实验中,很多是因为疏忽了这一点,而使初始化不成功。随后 就是写入两个命令CMD0与CMD1,使SD卡进入SPI模式
初始化时序图:
返回列表