专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
求大神支招,SD卡可以初始化但是无法读写
2019-03-24 18:06
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
7397
8
1162
初始化是成功的,但是发送读命令一直返回0x7f,写命令一
void SEND_BYTE(uchar DATA)
{
uchar i,temp;
temp=DATA;
CS=0;
for(i=0;i<8;i++)
{
CLK=0;
if(temp&0x80)
MOSI=1;
else
MOSI=0;
temp<<=1;
CLK=1;
}
}
uchar READ_BYTE()
{
uchar i,temp=0;
CS=1;
SEND_BYTE(0xff);
CS=0;
for(i=0;i<8;i++)
{
temp<<=1;
CLK=0;
CLK=1;
if(MISO==1)
temp|=1;
else
temp|=0;
}
return temp;
}
/***********发送命令*************/
uchar SEND_COM(uchar CMD[])
{
uchar i,temp;
CS=1;
SEND_BYTE(0xff);
CS=0;
for(i=0;i<6;i++)
{
SEND_BYTE(CMD[i]);
}
i=0;
do
{
temp=READ_BYTE();
i++;
}while((temp==0xff)&&(i<200));
CS=1;
SEND_BYTE(0xff);
return temp;
}
/*************初始化函数***************/
uchar SD_INIT()
{
uchar i,j=0,res;
for(i=0;i<=10;i++)
{
SEND_BYTE(0xff);
}
CS=0;
do
{
res=SEND_COM(CMD0);
j++;
if(j==200)
{
return 0xff;
}
}while(res!=0x01);
i=0;
CS=1;
SEND_BYTE(0xff);
CS=0;
do
{
res=SEND_COM(CMD8);
j++;
if(j==200)
{
return 0xff;
}
}while(res!=0x01);
do
{
SEND_COM(CMD55);
res=SEND_COM(CMD41);
i++;
if(i==200)
{
return 0xff;
}
}while(res!=0x00);
i=0;
CS=1;
SEND_BYTE(0xff);
CS=0;
do
{
res=SEND_COM(CMD16);
i++;
if(i==200)
{
return 0xff;
}
}while(res!=0x00);
return res;
}
复制代码
直返回0xff,怎么回事??我把初始化跟读写函数贴出来给大家看看。。。
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
chunyang
2019-03-25 04:17
列出详细的程序流程,再跟SD卡的读写时序比较,这样更容易发现问题。直接贴代码,简单是简单了,结果呢?
加载中...
查看其它8个回答
一周热门
更多
>
相关问题
相关文章
基于51单片机的计算器设计
0个评论
51单片机300个proteus仿真实例下载
0个评论
51单片机 蜂鸣器
0个评论
51单片机驱动RC522模块
0个评论
基于51单片机的指纹密码锁
0个评论
AT89C51单片机制作简易密码锁
0个评论
51单片机汇编语言计数器
0个评论
51单片机精确延时设计
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>