新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AT89C52單片機的SD卡的讀寫設計

        基于AT89C52單片機的SD卡的讀寫設計

        作者: 時間:2010-01-14 來源:網絡 收藏

          { CLK=0;

          DataI=0; // write

          if(val0x80) DataI=1;

          val=1;

          CLK=1;

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

          }

          CLK=0;

          return val;

          }

          卡的初始化

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

          在復位成功之后可以通過CMD55和ACMD41判斷當前電壓是否在工作范圍內。主機還可以繼續通過CMD10讀取SD卡的CID寄存器,通過CMD16設置數據Block長度,通過CMD9讀取卡的CSD寄存器。從CSD寄存器中,主機可獲知卡容量,支持的命令集等重要參數。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); //發送復位命令

          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);

          //發送初始化命令

          retry++;

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

          {SD_Disable(); //關片選

          return(INIT_CMD1_ERROR);

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

          }

          }while(temp!=0);

          SD_Disable(); //關片選

          return(TRUE); //返回成功

          }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 卓尼县| 洛南县| 禄丰县| 泊头市| 嘉祥县| 仁怀市| 天全县| 昔阳县| 新建县| 静安区| 洛阳市| 泸定县| 丰原市| 博野县| 延津县| 芦溪县| 景德镇市| 泸溪县| 光山县| 沾益县| 黔江区| 麻栗坡县| 西贡区| 仁怀市| 通河县| 鄯善县| 雅安市| 黑山县| 湟源县| 金门县| 德令哈市| 启东市| 东莞市| 营口市| 芦溪县| 武隆县| 都匀市| 布尔津县| 依兰县| 和林格尔县| 青川县|