专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
大神们有MSP430跟SD卡进行SPI通信的例子吗??
2019-03-24 10:34
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
8151
11
1640
我初始化SD卡那步就失败了。。。。,代码如下,求大神帮忙看看
/**************SD卡控制端定义*******************/
#define SD_CS_0 P4OUT&=~BIT5
#define SD_CS_1 P4OUT|=BIT5
/******SD_DI-->P3.1,SD_DO-->P3.2,SD_CLK-->P3.3****/
复制代码
此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
jianping-sun
2019-03-24 23:08
/**********发送命令到SD卡************/
uchar SDSEND_COM(uchar CMD[])
{
uchar res;
SD_CS_0;
SPISEND_BYTE(CMD[0]);
SPISEND_BYTE(CMD[1]);
SPISEND_BYTE(CMD[2]);
SPISEND_BYTE(CMD[3]);
SPISEND_BYTE(CMD[4]);
SPISEND_BYTE(CMD[5]);
res=SPIREAD_BYTE();
SD_CS_1;
return res;
}
/*************************************/
/*********初始化SD卡*****************/
uchar SD_INIT()
{
uchar i ,res;
for(i=0;i<=12;i++)
{
SPISEND_BYTE(0xff);
}
SD_CS_0;
delayus(10);
do
{
res=SDSEND_COM(CMD0);
i++;
}while(i<100);
if(res!=0x01)
{
return 0;
}
else
{
i=0;
SD_CS_1;
SPISEND_BYTE(0xff);
SD_CS_0;
do
{
res=SDSEND_COM(CMD1);
i++;
}while(i<100);
i=0;
if(res!=0x01)
{
SD_CS_1;
return 0;
}
else
{
SD_CS_1;
SPISEND_BYTE(0xff);
SD_CS_0;
do
{
res=SDSEND_COM(CMD16);
i++;
}while(i<100);
if(res!=0x00)
return 0;
else
{
SD_CS_1;
return 1;
}
}
}
}
/************************************/
/*********往SD卡写数据***************/
uchar SDWRITE_BLOCK(uchar* BLOCK,int32 add)
{
uint i,res;
add<<=9;
CMD24[1]=((add&0xff000000)>>24);
CMD24[2]=((add&0x00ff0000)>>16);
CMD24[3]=((add&0x0000ff00)>>8);
CMD24[4]=add;
SD_CS_0;
do
{
res=SDSEND_COM(CMD24);
i++;
}while(i<100);
if(res!=0x05)
{
SD_CS_1;
return res;
}
else
{
for(i=0;i<=12;i++)
{
SPISEND_BYTE(0xff);
}
SPISEND_BYTE(0xfe);
for(i=0;i<512;i++)
{
SPISEND_BYTE(*BLOCK++);
}
SPISEND_BYTE(0xff);
SPISEND_BYTE(0xff);
res=SPIREAD_BYTE();
if(res!=0x05)
return 0;
else
{
delayus(10);
SD_CS_1;
return 1;
}
}
}
/**********SD卡读数据*****************/
uchar SDREAD_BLOCK(uchar* BLOCK,int32 add)
{
uint i,res;
add<<=9;
CMD17[1]=((add&0xff000000)>>24);
CMD17[2]=((add&0x00ff0000)>>16);
CMD17[3]=((add&0x0000ff00)>>8);
CMD17[4]=add;
SD_CS_0;
do
{
res=SDSEND_COM(CMD17);
i++;
}while(i<100);
if(res!=0xfe)
{
SD_CS_1;
return res;
}
else
{
for(i=0;i<512;i++)
{
*BLOCK++=SPIREAD_BYTE();
}
SPIREAD_BYTE();
SPIREAD_BYTE();
SD_CS_1;
return 1;
}
}
复制代码
加载中...
查看其它11个回答
一周热门
更多
>
相关问题
相关文章
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
- /**********发送命令到SD卡************/
- uchar SDSEND_COM(uchar CMD[])
- {
- uchar res;
- SD_CS_0;
- SPISEND_BYTE(CMD[0]);
- SPISEND_BYTE(CMD[1]);
- SPISEND_BYTE(CMD[2]);
- SPISEND_BYTE(CMD[3]);
- SPISEND_BYTE(CMD[4]);
- SPISEND_BYTE(CMD[5]);
- res=SPIREAD_BYTE();
- SD_CS_1;
- return res;
- }
- /*************************************/
- /*********初始化SD卡*****************/
- uchar SD_INIT()
- {
- uchar i ,res;
- for(i=0;i<=12;i++)
- {
- SPISEND_BYTE(0xff);
- }
- SD_CS_0;
- delayus(10);
- do
- {
- res=SDSEND_COM(CMD0);
- i++;
- }while(i<100);
- if(res!=0x01)
- {
- return 0;
- }
- else
- {
- i=0;
- SD_CS_1;
- SPISEND_BYTE(0xff);
- SD_CS_0;
- do
- {
- res=SDSEND_COM(CMD1);
- i++;
- }while(i<100);
- i=0;
- if(res!=0x01)
- {
- SD_CS_1;
- return 0;
- }
- else
- {
- SD_CS_1;
- SPISEND_BYTE(0xff);
- SD_CS_0;
- do
- {
- res=SDSEND_COM(CMD16);
- i++;
- }while(i<100);
- if(res!=0x00)
- return 0;
- else
- {
- SD_CS_1;
- return 1;
- }
- }
- }
- }
- /************************************/
- /*********往SD卡写数据***************/
- uchar SDWRITE_BLOCK(uchar* BLOCK,int32 add)
- {
- uint i,res;
- add<<=9;
- CMD24[1]=((add&0xff000000)>>24);
- CMD24[2]=((add&0x00ff0000)>>16);
- CMD24[3]=((add&0x0000ff00)>>8);
- CMD24[4]=add;
- SD_CS_0;
- do
- {
- res=SDSEND_COM(CMD24);
- i++;
- }while(i<100);
- if(res!=0x05)
- {
- SD_CS_1;
- return res;
- }
- else
- {
- for(i=0;i<=12;i++)
- {
- SPISEND_BYTE(0xff);
- }
- SPISEND_BYTE(0xfe);
- for(i=0;i<512;i++)
- {
- SPISEND_BYTE(*BLOCK++);
- }
- SPISEND_BYTE(0xff);
- SPISEND_BYTE(0xff);
- res=SPIREAD_BYTE();
- if(res!=0x05)
- return 0;
- else
- {
- delayus(10);
- SD_CS_1;
- return 1;
- }
-
- }
- }
- /**********SD卡读数据*****************/
- uchar SDREAD_BLOCK(uchar* BLOCK,int32 add)
- {
- uint i,res;
- add<<=9;
- CMD17[1]=((add&0xff000000)>>24);
- CMD17[2]=((add&0x00ff0000)>>16);
- CMD17[3]=((add&0x0000ff00)>>8);
- CMD17[4]=add;
- SD_CS_0;
- do
- {
- res=SDSEND_COM(CMD17);
- i++;
- }while(i<100);
- if(res!=0xfe)
- {
- SD_CS_1;
- return res;
- }
- else
- {
- for(i=0;i<512;i++)
- {
- *BLOCK++=SPIREAD_BYTE();
- }
- SPIREAD_BYTE();
- SPIREAD_BYTE();
- SD_CS_1;
- return 1;
-
- }
- }
复制代码一周热门 更多>