4233|11

51

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求版主帮忙,复位成功,初始化收不到00. [复制链接]

初来咋到,前两天把帖子贴嵌入式了!

 

大致代码如下,用的是Znfat的代码,复位成功了,初始化不行。请大家帮忙看看。比较急

#include "STC12C5A32S2.H"
#define DELAY_TIME 10
#define TRY_TIME 200
void SD_spi_write(unsigned char x)
{   
_dat=x; 
SD_SI=_dat7;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat6;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat5;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat4;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat3;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat2;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat1;
SD_SCL=0;
if(is_init) delay(DELAY_TIME);
SD_SCL=1;
if(is_init) delay(DELAY_TIME);

SD_SI=_dat0;
SD_SCL=0;
if(is_init) delay(DELAY_TIME); 
SD_SCL=1;
if(is_init) delay(DELAY_TIME);
}
读字节和这个函数刚好相反,字数有限就不贴了。
unsigned char SD_Write_Cmd(unsigned char *pcmd) //向SD卡写命令,pcmd是命令字节序列的首地址
{
unsigned char temp,time=0;

SD_CS=1;
SD_spi_write(0xff); //提高兼容性,如果没有这里,有些SD卡可能不支持  
SD_CS=0;

SD_spi_write(pcmd[0]);
SD_spi_write(pcmd[1]);
SD_spi_write(pcmd[2]);
SD_spi_write(pcmd[3]);
SD_spi_write(pcmd[4]);
SD_spi_write(pcmd[5]);

do

  temp = SD_spi_read();//一直读,直到读到的不是0xff或超时
   //senddata(temp);
  time++;
}while((temp==0xff)&&(time<TRY_TIME));

return(temp);
}
unsigned char SD_Init() //初始化,使用CMD1(命令1)

unsigned char time,temp;
unsigned char pcmd[] = {0x41,0x00,0x00,0x00,0x00,0xff}; //命令1的字节序列

SD_CS=0; //打开片选

time=0;
do
{
  temp=SD_Write_Cmd(pcmd);
  time++;
  if(time==TRY_TIME)
  {
   SD_CS=1; //关闭片选
   return(INIT_CMD1_ERROR);//CMD1写入失败
  }
}while(temp!=0);
  
is_init=0; //初始化完毕,将is_init设置为0,为了提高以后的数据传输速度
  
SD_CS=1;  //关闭片选

SD_spi_write(0xff); //按照SD卡的操作时序在这里补8个时钟
return(0); //返回0,说明初始化操作成功
}
unsigned char SD_Reset()
{
unsigned char time,temp,i;
unsigned char pcmd[] = {0x40,0x00,0x00,0x00,0x00,0x95};

is_init=1; //is_init置为1,让SPI速度慢下来

SD_CS=1;
for(i=0;i<0x0f;i++) //初始时,首先要发送最少74个时钟信号,这是必须的!!!
{
  SD_spi_write(0xff); //120个时钟
}

SD_CS=0;
time=0;
do
{
  temp=SD_Write_Cmd(pcmd);//写入CMD0
  time++;
  if(time==TRY_TIME)
  {
   return(INIT_CMD0_ERROR);//CMD0写入失败
  }
}while(temp!=0x01);

SD_CS=1;
SD_spi_write(0xff); //按照SD卡的操作时序在这里补8个时钟
return 0;//返回0,说明复位操作成功
}
void main()
{
   int i,j;
   i=1;
   serialinit();
   j=SD_Reset();//SD卡复位
   i=SD_Init(); //SD卡初始化
   senddata(j);
   //senddata(i);
while(1) {}
}

 

 

 

下面附件是原理图,现在搞不清楚是硬件问题还是软件问题了。

1.png (47.22 KB, 下载次数: 0)

1.png
此帖出自51单片机论坛

最新回复

解决就好  详情 回复 发表于 2014-8-6 16:04
点赞 关注
 

回复
举报

547

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
巨长。。。。
此帖出自51单片机论坛
 
个人签名嵌入式培训www.51great.org
 
 

回复

535

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 
对不起没玩过……
此帖出自51单片机论坛
 
 
 

回复

28

帖子

1

TA的资源

一粒金砂(中级)

4
 
wp拉高了,你还想写进去?
此帖出自51单片机论坛
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(高级)

5
 

_Justin

你是仿真?要是仿真应该是mmc(当然只是需要自己设置设置),你要是自己的实物,那就另说了~~~~~~
此帖出自51单片机论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 4楼 lhlonng 的帖子

跟WP有关系 ?SPI模式不是只用到四个脚吗 ?求解
此帖出自51单片机论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 板凳 小小白 的帖子

噢  谢谢
此帖出自51单片机论坛
 
 
 

回复

4005

帖子

0

TA的资源

版主

8
 
建议你网上找个能用的改改吧,这样是问不出什么来的.
此帖出自51单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

9
 
单片机上有SPI接口,我不是说程序写的不好,而是既然有接口,为什么还要模拟呢?

此帖出自51单片机论坛
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(中级)

10
 
解决了  SD卡与SDHC卡 初始化不一样。
此帖出自51单片机论坛
 
 
 

回复

348

帖子

0

TA的资源

纯净的硅(初级)

11
 

wp拉高了,写不进去了!!!
此帖出自51单片机论坛
 
个人签名为了方便大家交流,建了两个QQ群:QQ群3号:198387118  【1000人群】QQ群5号: 239316959【2000人群】群内已有成员3000余人!
更多内容关注微信公众号:单片机精讲吴鉴鹰
 
 

回复

164

帖子

0

TA的资源

一粒金砂(中级)

12
 
解决就好
此帖出自51单片机论坛
 
个人签名专业电子方案/zigbee方案设计,毕业设计。QQ:1397905781
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表