⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avr的sd卡接口程序.htm

📁 SD卡接口的完整规范和AVR的SD卡接口程序
💻 HTM
📖 第 1 页 / 共 2 页
字号:
            <SCRIPT src="AVR的SD卡接口程序.files/show_ads.js" type=text/javascript>
</SCRIPT>
          </TD></TR></TBODY></TABLE>
      <P>SD卡接口程序/************************************************************/<BR>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      SD Code for&nbsp;&nbsp; 
      M32L&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      */<BR>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; By&nbsp;&nbsp; 
      pasyong&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      */<BR>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      2006-4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      */<BR>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Base 
      ICC6.31A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      */<BR>/************************************************************/<BR>#include 
      &lt;iom32v.h&gt;<BR>#include &lt;macros.h&gt;<BR>#include 
      "1011.h"<BR>#define uchar unsigned char<BR>#define uint unsigned 
      int<BR>#define MMC_CS_PIN&nbsp;&nbsp;&nbsp;&nbsp; BIT(4)&nbsp;&nbsp;&nbsp; 
      //PORTB.4 <BR>#define MMC_PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      PORTB&nbsp;&nbsp;&nbsp; </P>
      <P>&nbsp;uchar reading=0,a=0,pointer=0;<BR>void 
      sd_port_init()<BR>{<BR>MMC_PORT|=MMC_CS_PIN;<BR>}<BR>uchar 
      BUFFER[512];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //扇区缓冲区<BR>uint i=0;<BR>void delay_nus(uint 
      n)<BR>&nbsp;{<BR>&nbsp;unsigned char&nbsp; b;<BR>&nbsp; for (b = 1; 
      b&lt;n; b++)<BR>&nbsp;&nbsp; ;<BR>&nbsp;} 
      <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>&nbsp;&nbsp; uchar 
      tmp;<BR>&nbsp;&nbsp; uchar retry=0;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
      //MMC_PORT|=MMC_CS_PIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //SD卡关闭&nbsp;&nbsp; <BR>&nbsp;&nbsp; //send 8 Clock 
      Impulse<BR>&nbsp;&nbsp; Write_Byte_SPI(0xFF);<BR>&nbsp;&nbsp; 
      <BR>&nbsp;&nbsp; //set MMC_Chip_Select to low (MMC/SD-Card 
      active)<BR>&nbsp; 
      MMC_PORT&amp;=~MMC_CS_PIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //SD卡使能</P>
      <P>&nbsp;&nbsp; Write_Byte_SPI(cmd|0x40);&nbsp;&nbsp; 
      //送头命令<BR>&nbsp;&nbsp; Write_Byte_SPI(arg&gt;&gt;24);<BR>&nbsp;&nbsp; 
      Write_Byte_SPI(arg&gt;&gt;16);&nbsp;&nbsp;&nbsp;&nbsp; //send 6 Byte 
      Command to MMC/SD-Card<BR>&nbsp;&nbsp; 
      Write_Byte_SPI(arg&gt;&gt;8);<BR>&nbsp;&nbsp; 
      Write_Byte_SPI(arg&amp;0xff);<BR>&nbsp;&nbsp; 
      Write_Byte_SPI(0x95);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //仅仅对RESET有效的CRC效验码<BR>&nbsp; <BR>&nbsp;&nbsp; //get 8 bit 
      response<BR>&nbsp;&nbsp; //Read_Byte_MMC(); //read the first byte,ignore 
      it. <BR>&nbsp;&nbsp; do <BR>&nbsp;&nbsp; {&nbsp; //Only last 8 bit is used 
      here.Read it out. <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tmp = 
      Read_Byte_SPI();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      retry++;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; 
      while((tmp==0xff)&amp;&amp;(retry&lt;100));&nbsp; 
      //当没有收到有效的命令的时候<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
      if(reading==0)<BR>&nbsp;&nbsp; 
      MMC_PORT|=MMC_CS_PIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //MMC_CS_PIN=1;<BR>&nbsp;&nbsp; else 
      MMC_PORT&amp;=~MMC_CS_PIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //MMC_CS_PIN=0;&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
      return(tmp);<BR>}<BR>//****************************************************************************<BR>//SD卡初始化(SPI-MODE)<BR>//****************************************************************************<BR>uchar 
      SD_Init(void)<BR>{&nbsp; <BR>&nbsp;&nbsp; uchar 
      retry,temp;<BR>&nbsp;&nbsp; uchar i;<BR>&nbsp;&nbsp; 
      MMC_PORT&amp;=~MMC_CS_PIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //SD卡使能<BR>&nbsp; 
      <BR>&nbsp; delay_nus(250);&nbsp; //Wait MMC/SD ready...<BR>&nbsp;&nbsp; 
      for (i=0;i&lt;0x0f;i++) <BR>&nbsp;&nbsp; 
      {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Write_Byte_SPI(0xff); //send 74 clock 
      at least!!!<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp; //Send Command CMD0 to 
      MMC/SD Card<BR>&nbsp;&nbsp; retry=0;<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; 
      do<BR>&nbsp;&nbsp; { //retry 200 times to send CMD0 command 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      temp=SD_Write_Command(0,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      retry++;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(retry==100) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;//CMD0 
      Error!<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; 
      while(temp!=1);&nbsp; <BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; //Send Command 
      CMD1 to MMC/SD-Card<BR>&nbsp;&nbsp; retry=0;<BR>&nbsp;&nbsp; 
      do<BR>&nbsp;&nbsp; { //retry 100 times to send CMD1 command 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      temp=SD_Write_Command(1,0);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      retry++;<BR>&nbsp;&nbsp;&nbsp;&nbsp; if(retry==100) 
      <BR>&nbsp;&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp; 
      ;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp; } <BR>&nbsp;&nbsp; 
      while(temp!=0); <BR>&nbsp;&nbsp; retry=0; <BR>&nbsp;&nbsp;&nbsp; 
      SD_Write_Command(16,512);&nbsp;&nbsp;&nbsp;&nbsp; 
      //设置一次读写BLOCK的长度为512个字节<BR>&nbsp; <BR>&nbsp;&nbsp; 
      MMC_PORT|=MMC_CS_PIN;&nbsp;&nbsp; //MMC_CS_PIN=1;&nbsp; //set 
      MMC_Chip_Select to high <BR>&nbsp;&nbsp; return(0); //All commands have 
      been taken.<BR>} 
      <BR>//****************************************************************************<BR>//从SD卡读一个扇区&nbsp; 
      Return 0 if no 
      Error.<BR>//****************************************************************************<BR>uchar 
      SD_Read_Block(unsigned long address)<BR>{&nbsp; <BR>&nbsp;&nbsp; uchar 
      temp=0;uint i=0;<BR>&nbsp;&nbsp; reading=1; <BR>&nbsp;&nbsp; 
      temp=SD_Write_Command(17,address);&nbsp;&nbsp;&nbsp;&nbsp; 
      //读出RESPONSE&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; while 
      (Read_Byte_SPI()!= 0xfe)<BR>&nbsp;&nbsp; {;}&nbsp; 
      //直到读取到了数据的开始头0XFE,才继续<BR>&nbsp;&nbsp; for(i=0; i&lt;512; 
      i++)<BR>&nbsp;{<BR>&nbsp;BUFFER[i]=Read_Byte_SPI();<BR>&nbsp;}<BR>&nbsp;&nbsp; 
      Read_Byte_SPI();//CRC - Byte <BR>&nbsp;&nbsp; Read_Byte_SPI();//CRC - 
      Byte<BR>&nbsp;&nbsp; reading=0; <BR>&nbsp;&nbsp; 
      MMC_PORT|=MMC_CS_PIN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      //关闭SD卡<BR>&nbsp;&nbsp; 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&nbsp;&nbsp;&nbsp;&nbsp;责任编辑:armopen&nbsp;</TD></TR>
  <TR>
    <TD width=5></TD>
    <TD width=752>
      <LI>上一篇文章: <A class=LinkPrevArticle 
      title="文章标题:USB-232转换(FT232BM)完整PCB文件和说明文件。(有实物照片)&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:佚名&#13;&#10;更新时间: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&amp;ChannelID=1&amp;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手持终端的实现&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:刘刚 戴未央&#13;&#10;更新时间: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界面设计&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:飞利浦公司显示事业部 陈金荣&#13;&#10;更新时间: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智能开口闪点测定仪&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:长春工业大学计算机学院 阎智义 陈戈珩&#13;&#10;更新时间: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的人机对话设计&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:田育民 刘思伟&#13;&#10;更新时间: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及其应用&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:黑龙江八一农垦大学 李 敏 孟 臣&#13;&#10;更新时间: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接口设计的无功发生器系统&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:刘 建 朱约章 吴春芳 程汉湘&#13;&#10;更新时间: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的以太电话机的设计&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:刘红云&#13;&#10;更新时间: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的嵌入式系统研究&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:雷 肖  殷小贡&#13;&#10;更新时间:2006-9-15 10:46:55" 
      href="http://www.mcu123.com/news/Article/all/TX/200609/1659.html" 
      target=_self>实现Ethernet&nbsp;over&nbsp;SDH的嵌入</A><BR><A 
      class=LinkArticleCorrelative 
      title="文章标题:为适应未来而设计 的SONET/SDH&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:PMC-Serria&#13;&#10;更新时间:2006-9-15 10:30:53" 
      href="http://www.mcu123.com/news/Article/all/TX/200609/1507.html" 
      target=_self>为适应未来而设计&nbsp;的SONET/S</A><BR><A class=LinkArticleCorrelative 
      title="文章标题:SDH净荷提取/定位处理芯片PM5313及其应用&#13;&#10;作&nbsp;&nbsp;&nbsp;&nbsp;者:郑春晖 刘兴春 李 铮 丛 凯&#13;&#10;更新时间: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>&copy; All Rights Reserved<BR>版权所有 
            &copy; 超前科技开发网 <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 + -