📄 avr的sd卡接口程序.htm
字号:
<SCRIPT src="AVR的SD卡接口程序.files/show_ads.js" type=text/javascript>
</SCRIPT>
</TD></TR></TBODY></TABLE>
<P>SD卡接口程序/************************************************************/<BR>/*
SD Code for
M32L
*/<BR>/* By
pasyong
*/<BR>/*
2006-4
*/<BR>/* Base
ICC6.31A
*/<BR>/************************************************************/<BR>#include
<iom32v.h><BR>#include <macros.h><BR>#include
"1011.h"<BR>#define uchar unsigned char<BR>#define uint unsigned
int<BR>#define MMC_CS_PIN BIT(4)
//PORTB.4 <BR>#define MMC_PORT
PORTB </P>
<P> uchar reading=0,a=0,pointer=0;<BR>void
sd_port_init()<BR>{<BR>MMC_PORT|=MMC_CS_PIN;<BR>}<BR>uchar
BUFFER[512];
//扇区缓冲区<BR>uint i=0;<BR>void delay_nus(uint
n)<BR> {<BR> unsigned char b;<BR> for (b = 1;
b<n; b++)<BR> ;<BR> }
<BR>//****************************************************************************<BR>//Send
a Command to MMC/SD-Card<BR>//Return: the second byte of response register
of
MMC/SD-Card<BR>//****************************************************************************<BR>uchar
SD_Write_Command(uchar cmd,unsigned long arg)<BR>{<BR> uchar
tmp;<BR> uchar retry=0;<BR> <BR>
//MMC_PORT|=MMC_CS_PIN;
//SD卡关闭 <BR> //send 8 Clock
Impulse<BR> Write_Byte_SPI(0xFF);<BR>
<BR> //set MMC_Chip_Select to low (MMC/SD-Card
active)<BR>
MMC_PORT&=~MMC_CS_PIN; //SD卡使能</P>
<P> Write_Byte_SPI(cmd|0x40);
//送头命令<BR> Write_Byte_SPI(arg>>24);<BR>
Write_Byte_SPI(arg>>16); //send 6 Byte
Command to MMC/SD-Card<BR>
Write_Byte_SPI(arg>>8);<BR>
Write_Byte_SPI(arg&0xff);<BR>
Write_Byte_SPI(0x95);
//仅仅对RESET有效的CRC效验码<BR> <BR> //get 8 bit
response<BR> //Read_Byte_MMC(); //read the first byte,ignore
it. <BR> do <BR> { //Only last 8 bit is used
here.Read it out. <BR> tmp =
Read_Byte_SPI();<BR>
retry++;<BR> }<BR>
while((tmp==0xff)&&(retry<100));
//当没有收到有效的命令的时候<BR> <BR>
if(reading==0)<BR>
MMC_PORT|=MMC_CS_PIN;
//MMC_CS_PIN=1;<BR> else
MMC_PORT&=~MMC_CS_PIN;
//MMC_CS_PIN=0; <BR>
return(tmp);<BR>}<BR>//****************************************************************************<BR>//SD卡初始化(SPI-MODE)<BR>//****************************************************************************<BR>uchar
SD_Init(void)<BR>{ <BR> uchar
retry,temp;<BR> uchar i;<BR>
MMC_PORT&=~MMC_CS_PIN; //SD卡使能<BR>
<BR> delay_nus(250); //Wait MMC/SD ready...<BR>
for (i=0;i<0x0f;i++) <BR>
{<BR> Write_Byte_SPI(0xff); //send 74 clock
at least!!!<BR> }<BR> //Send Command CMD0 to
MMC/SD Card<BR> retry=0;<BR> <BR>
do<BR> { //retry 200 times to send CMD0 command
<BR>
temp=SD_Write_Command(0,0);<BR>
retry++;<BR> if(retry==100)
<BR> { <BR> ;//CMD0
Error!<BR> }<BR> } <BR>
while(temp!=1); <BR> <BR> //Send Command
CMD1 to MMC/SD-Card<BR> retry=0;<BR>
do<BR> { //retry 100 times to send CMD1 command
<BR>
temp=SD_Write_Command(1,0);<BR>
retry++;<BR> if(retry==100)
<BR> { <BR>
;<BR> }<BR> } <BR>
while(temp!=0); <BR> retry=0; <BR>
SD_Write_Command(16,512);
//设置一次读写BLOCK的长度为512个字节<BR> <BR>
MMC_PORT|=MMC_CS_PIN; //MMC_CS_PIN=1; //set
MMC_Chip_Select to high <BR> return(0); //All commands have
been taken.<BR>}
<BR>//****************************************************************************<BR>//从SD卡读一个扇区
Return 0 if no
Error.<BR>//****************************************************************************<BR>uchar
SD_Read_Block(unsigned long address)<BR>{ <BR> uchar
temp=0;uint i=0;<BR> reading=1; <BR>
temp=SD_Write_Command(17,address);
//读出RESPONSE <BR> while
(Read_Byte_SPI()!= 0xfe)<BR> {;}
//直到读取到了数据的开始头0XFE,才继续<BR> for(i=0; i<512;
i++)<BR> {<BR> BUFFER[i]=Read_Byte_SPI();<BR> }<BR>
Read_Byte_SPI();//CRC - Byte <BR> Read_Byte_SPI();//CRC -
Byte<BR> reading=0; <BR>
MMC_PORT|=MMC_CS_PIN;
//关闭SD卡<BR> return(temp);<BR>}</P><FONT color=#ff0000>欢迎进入<A
href="http://www.mcu123.net/bbs/" _target="_blank">超前MCU技术论坛</A>对
AVR的SD卡接口程序进行讨论! <BR><BR><INPUT title=点击复制标题和地址到剪贴版,直接在POPO/MSN上粘贴即可. onclick=copyToClipBoard() type=button value=点击复制本网址,发给POPO/QQ/MSN好友共享>
</FONT>
<CENTER></CENTER></TD></TR>
<TR>
<TD class=Article_tdbgall align=right
colSpan=2>文章录入:armopen 责任编辑:armopen </TD></TR>
<TR>
<TD width=5></TD>
<TD width=752>
<LI>上一篇文章: <A class=LinkPrevArticle
title="文章标题:USB-232转换(FT232BM)完整PCB文件和说明文件。(有实物照片) 作 者:佚名 更新时间:2006-8-16 11:49:39"
href="http://www.mcu123.com/news/Article/Design/200608/204.html">USB-232转换(FT232BM)完整PCB文件和说明文件。(有实物照片)</A><BR>
<LI>下一篇文章: 没有了</LI></TD></TR>
<TR class=Article_tdbgall align=right>
<TD colSpan=2>【<A
href="http://www.mcu123.com/news/Article/Comment.asp?ArticleID=226"
target=_blank>发表评论</A>】【<A
href="http://www.mcu123.com/news/User/User_Favorite.asp?Action=Add&ChannelID=1&InfoID=226"
target=_blank>加入收藏</A>】【<A
href="http://www.mcu123.com/news/Article/SendMail.asp?ArticleID=226"
target=_blank>告诉好友</A>】【<A
href="http://www.mcu123.com/news/Article/Print.asp?ArticleID=226"
target=_blank>打印此文</A>】【<A
href="javascript:window.close();">关闭窗口</A>】</TD></TR></TBODY></TABLE>
<TABLE class=center_tdbgall cellSpacing=0 cellPadding=0 width=760 align=center
border=0>
<TBODY>
<TR>
<TD class=main_shadow></TD></TR><!--插入广告JS代码--><!--第二个广告-->
<TR>
<TD>
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-7844362911365004";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_color_border = "FFFFFF";
google_color_bg = "FFFFFF";
google_color_link = "000033";
google_color_text = "000000";
google_color_url = "0066CC";
//--></SCRIPT>
<SCRIPT src="AVR的SD卡接口程序.files/show_ads.js" type=text/javascript>
</SCRIPT>
</TD></TR></TBODY></TABLE><!--文章显示代码结束--><!--最新热点、最新推荐、相关文章代码开始-->
<TABLE class=center_tdbgall style="WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width=760 align=center border=0>
<TBODY>
<TR>
<TD class=main_title_282 width="33%"><B>最新热点</B></TD>
<TD width=5 rowSpan=2></TD>
<TD class=main_title_282 width="33%"><B>最新推荐</B></TD>
<TD width=5 rowSpan=2></TD>
<TD class=main_title_282 width="33%"><B>相关文章</B></TD></TR>
<TR>
<TD class=main_tdbg_760 vAlign=top height=100>
<SCRIPT language=javascript
src="AVR的SD卡接口程序.files/Article_Hot3.js"></SCRIPT>
</TD>
<TD class=main_tdbg_760 vAlign=top width="33%">
<SCRIPT language=javascript
src="AVR的SD卡接口程序.files/Article_Elite3.js"></SCRIPT>
</TD>
<TD class=main_tdbg_760 vAlign=top width="33%"><A
class=LinkArticleCorrelative
title="文章标题:CSD在GSM-R手持终端的实现 作 者:刘刚 戴未央 更新时间:2006-10-11 10:26:30"
href="http://www.mcu123.com/news/Article/uc/uc8051/200610/2331.html"
target=_self>CSD在GSM-R手持终端的实现</A><BR><A class=LinkArticleCorrelative
title="文章标题:结构化的平板电视OSD界面设计 作 者:飞利浦公司显示事业部 陈金荣 更新时间:2006-10-11 10:25:03"
href="http://www.mcu123.com/news/Article/uc/uc8051/200610/2319.html"
target=_self>结构化的平板电视OSD界面设计</A><BR><A class=LinkArticleCorrelative
title="文章标题:LSD-2C智能开口闪点测定仪 作 者:长春工业大学计算机学院 阎智义 陈戈珩 更新时间:2006-9-15 12:54:09"
href="http://www.mcu123.com/news/Article/all/dc/200609/2215.html"
target=_self>LSD-2C智能开口闪点测定仪</A><BR><A class=LinkArticleCorrelative
title="文章标题:基于uPSD3200的人机对话设计 作 者:田育民 刘思伟 更新时间:2006-9-15 12:00:35"
href="http://www.mcu123.com/news/Article/uc/uc8051/200609/2000.html"
target=_self>基于uPSD3200的人机对话设计</A><BR><A class=LinkArticleCorrelative
title="文章标题:高精度时钟芯片SD2001E及其应用 作 者:黑龙江八一农垦大学 李 敏 孟 臣 更新时间:2006-9-15 11:46:10"
href="http://www.mcu123.com/news/Article/uc/uc8051/200609/1860.html"
target=_self>高精度时钟芯片SD2001E及其应</A><BR><A class=LinkArticleCorrelative
title="文章标题:基于PSD3XX与ADMC401接口设计的无功发生器系统 作 者:刘 建 朱约章 吴春芳 程汉湘 更新时间:2006-9-15 11:44:37"
href="http://www.mcu123.com/news/Article/uc/uc8051/200609/1839.html"
target=_self>基于PSD3XX与ADMC401接口设计</A><BR><A class=LinkArticleCorrelative
title="文章标题:基于SDA80D51的以太电话机的设计 作 者:刘红云 更新时间:2006-9-15 10:49:04"
href="http://www.mcu123.com/news/Article/all/TX/200609/1676.html"
target=_self>基于SDA80D51的以太电话机的</A><BR><A class=LinkArticleCorrelative
title="文章标题:实现Ethernet over SDH的嵌入式系统研究 作 者:雷 肖 殷小贡 更新时间:2006-9-15 10:46:55"
href="http://www.mcu123.com/news/Article/all/TX/200609/1659.html"
target=_self>实现Ethernet over SDH的嵌入</A><BR><A
class=LinkArticleCorrelative
title="文章标题:为适应未来而设计 的SONET/SDH 作 者:PMC-Serria 更新时间:2006-9-15 10:30:53"
href="http://www.mcu123.com/news/Article/all/TX/200609/1507.html"
target=_self>为适应未来而设计 的SONET/S</A><BR><A class=LinkArticleCorrelative
title="文章标题:SDH净荷提取/定位处理芯片PM5313及其应用 作 者:郑春晖 刘兴春 李 铮 丛 凯 更新时间:2006-9-15 10:29:34"
href="http://www.mcu123.com/news/Article/all/TX/200609/1493.html"
target=_self>SDH净荷提取/定位处理芯片PM</A><BR></TD></TR></TBODY></TABLE>
<TABLE class=center_tdbgall cellSpacing=0 cellPadding=0 width=760 align=center
border=0>
<TBODY>
<TR>
<TD class=main_shadow></TD></TR></TBODY></TABLE><!--最新热点、最新推荐、相关文章代码结束--><!--网友评论代码开始-->
<TABLE class=center_tdbgall style="WORD-BREAK: break-all" cellSpacing=0
cellPadding=0 width=760 align=center border=0>
<TBODY>
<TR class=main_title_760>
<TD height=25> <STRONG>网友评论:</STRONG><SPAN
style="COLOR: #ff0000">(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) </SPAN></TD></TR>
<TR>
<TD class=main_tdbg_760>
<SCRIPT language=javascript src="AVR的SD卡接口程序.files/Comment.htm"></SCRIPT>
</TD></TR></TBODY></TABLE>
<TABLE class=center_tdbgall cellSpacing=0 cellPadding=0 width=760 align=center
border=0>
<TBODY>
<TR>
<TD class=main_shadow></TD></TR></TBODY></TABLE><!--网友评论代码结束--><!-- ********网页中部代码结束******** --><!-- ********网页底部代码开始******** -->
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD class=menu_bottombg align=middle>| <A class=Bottom
onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.mcu123.com');"
href="http://www.mcu123.com/news/$">设为首页</A> | <A class=Bottom
href="javascript:window.external.addFavorite('http://www.mcu123.com','超前科技开发网');">加入收藏</A>
| <A class=Bottom href="http://www.mcu123.com/www/fukuan.asp">联系我们</A> |
<A class=Bottom href="http://www.mcu123.com/link" target=_blank>友情链接</A> |
<A class=Bottom href="http://www.mcu123.com/news/Copyright.asp"
target=_blank>版权申明</A> | <A class=Bottom
href="http://www.mcu123.com/news/Announcelist.asp" target=_blank>网站公告</A>
</TD></TR>
<TR>
<TD class=bottom_bg height=80>
<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><IMG height=80 src="AVR的SD卡接口程序.files/bottom_left.gif"
width=9></TD>
<TD align=middle width="80%">Copyright 2003-2006 <A
href="http://www.mcu123.com/"><FONT
color=#ff0000>www.mcu123.com</FONT></A>© All Rights Reserved<BR>版权所有
© 超前科技开发网 <BR><A href="http://www.miibeian.gov.cn/"
target=_blank>粤ICP备05005262号</A> <BR>
<SCRIPT src="AVR的SD卡接口程序.files/count.htm"></SCRIPT>
<SCRIPT src="AVR的SD卡接口程序.files/urchin.js" type=text/javascript>
</SCRIPT>
<SCRIPT type=text/javascript>
_uacct = "UA-465386-3";
urchinTracker();
</SCRIPT>
</TD>
<TD align=right><IMG height=80 src="AVR的SD卡接口程序.files/bottom_r.gif"
width=9></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- ********网页底部代码结束******** --><NOSCRIPT><IFRAME
src="AVR的SD卡接口程序.files/CAI3CXQJ.htm" width=0
height=0></IFRAME></IFRAME></NOSCRIPT></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -