<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于AT89C52單片機的SD卡的讀寫設(shè)計

          基于AT89C52單片機的SD卡的讀寫設(shè)計

          作者: 時間:2010-01-14 來源:網(wǎng)絡(luò) 收藏

            { CLK=0;

            DataI=0; // write

            if(val0x80) DataI=1;

            val=1;

            CLK=1;

            if(DataO)val|=1; // read

            }

            CLK=0;

            return val;

            }

            卡的初始化

            對卡進行操作首先要對卡進行初始化,初始化的過程中設(shè)置SD卡工作在SPI模式,其流程圖如圖3所示。

            在復(fù)位成功之后可以通過CMD55和ACMD41判斷當(dāng)前電壓是否在工作范圍內(nèi)。主機還可以繼續(xù)通過CMD10讀取SD卡的CID寄存器,通過CMD16設(shè)置數(shù)據(jù)Block長度,通過CMD9讀取卡的CSD寄存器。從CSD寄存器中,主機可獲知卡容量,支持的命令集等重要參數(shù)。SD卡初始化的C語言程序如下:

            unsigned char SD_Init(void)

            { unsigned char retry,temp;

            unsigned char i;

            for (i=0;i0x0f;i++)

            { SPI_TransferByte(0xff); //延遲74個以上的時鐘

            }

            SD_Enable(); //開片選

            SPI_TransferByte(SD_RESET); //發(fā)送復(fù)位命令

            SPI_TransferByte(0x00);

            SPI_TransferByte(0x00);

            SPI_TransferByte(0x00);

            SPI_TransferByte(0x00);

            SPI_TransferByte(0x95);

            SPI_TransferByte(0xff);

            SPI_TransferByte(0xff);

            retry=0;

            do{ temp=Write_Command_SD(SD_INIT,0);

            //發(fā)送初始化命令

            retry++;

            if(retry==100) //重試100次

            {SD_Disable(); //關(guān)片選

            return(INIT_CMD1_ERROR);

            //如果重試100次失敗返回錯誤號

            }

            }while(temp!=0);

            SD_Disable(); //關(guān)片選

            return(TRUE); //返回成功

            }



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();