首頁 | 關于我們 |  產品展示新聞動態 | 資料下載 |  技術支持 | 產品知識 | 聯系我們
 
    產品知識庫 > 應用方案 > 正文
 
SD卡讀寫程序設計(一)
 
一、概述
在智林STM32開發板上有采用SPI方式的SD卡接口,我手上有一塊512M的SD卡,所以接下來就開始SD卡的讀寫程序設計,學習完了,就可以開始文件系統的移植學習了#####。
二、程序框架設計
1、在shell里增加兩個命令:sdwr,和sdrd。
2、sdwr在SD卡設定的扇區寫入輸入數據。Sdrd是將剛剛寫入的數據讀出來。
3、sdwr命令輸入后,內部執行uartcmdsdwrite()函數。調用SD_WriteBlock()函數,將緩沖字符數組寫入。而sdrd命令執行UartCmdSDRead()函數,調用SD_ReadBlock()函數,讀入一個扇區,并用十六進制的方式在串口中斷上顯示。
4、SD的驅動分為三層:應用層、命令層、和驅動層。分別用sddrive.c,sdcmd.c,和spi.c三個文件來實現。
 
三、SPI接口的SD卡
1、SPI接口
   SPI是一種全雙工、同步串行通信方式接口,這里用到了四個IO口:分別是時鐘線SCK、輸出口MOSI、輸入口MISO、模式從機選擇線NSS。
2、SPI接口與SD卡
STM32與采用SPI接口的SD卡,就像兩個CPU通信一樣,STM32處理器通過SPI接口發出命令,SD卡執行命令后返回相應的狀態。命令有讀寫命令、也有參數設置命令。
3、SD卡的內部結構:幾個重要寄存器
(1)OCR寄存器:保存著卡的供電允許范圍,位31表示卡上電后的狀態,1表示空閑。
(2)CSD寄存器:總共128位,表示了卡的大部分配置信息。
(3)狀態寄存器:命令響應的狀態。
 
4、常用的SPI模式命令
(1)命令由六個字節組成:01-六位命令號-四個字節的命令參數-7位校驗碼-結束位1。
(2)命令分為10個類:
SPI支持:類0基本控制的(0復位、1激活初始化、9讀CSD寄存器、10讀CID寄存器、12多塊過程中停止傳輸、13讀狀態寄存器),
類2塊讀的(16設置塊長度、17讀一個數據塊、18讀多個數據塊,直到發命令12);
類4塊寫的(24寫塊、25寫多個塊、27寫CSD的可編程為);
類5擦除的(32設置擦除塊的起始地址、33設置終止塊地址、38擦除先前選擇的所有塊);
塊6寫保護的(可選28設置寫保護、29清除寫保護、30讀寫保護狀態);
類7的鎖卡命令(可選42上鎖或者解鎖);
類8的指定應用(55通知SD卡下個是特殊應用命令、56獲取或寫入一個數據塊)。
 
5、SPI命令的響應狀態
(1)有R1(1個字節)、R1B(1個字節)、R2(兩個字節)、R3(五個字節),大部分命令的響應是R1。讀取狀態寄存器響應R2、讀取OCR響應R3、R1B跟R1接近(有些命令只需要0或非0反饋,就用R1B,比如停止傳輸、擦除等命令)
(2)每一個命令都有對應的響應長度,故發送命令函數要經過特殊的處理。
2009-11-4 15:48:13
莹与翁公回乡下同床,三级做爰视频,厕所偷窥撒尿wcpeeingtube,男男互吃大丁视频网站