標題: 第20章 單片機驅動SD卡與znFAT文件系統(tǒng) [打印本頁]

作者: wul    時間: 2016-3-29 01:58
標題: 第20章 單片機驅動SD卡與znFAT文件系統(tǒng)
51單片機輕松入門—基于STC15W4K系列(C語言版)
李友全
編著 詳見:http://www.torrancerestoration.com/bbs/dpj-37954-1.html

20SD卡與znFAT文件系統(tǒng)
1 電路圖
2 程序移植
3 znFAT文件系統(tǒng)介紹

SD卡廣泛運用在手機、數碼相機中,本章帶領大家入門。

TF卡比標準SD卡(如數碼相機上使用的SD卡)在外形上更加小巧,通過SD轉接卡也可當

作標準SD卡使用,TF卡主要用在手機上,其容量從128MB到32GB各種規(guī)格齊全, TF卡與 標準SD卡僅僅是封裝上的不同,它們的傳輸協議是完全相同的。 SDHC是表示“高容量SD存儲卡”,SD 2.0系統(tǒng)規(guī)定SDHC是容量大于2GB小于等于32GB的SD 卡,傳輸速度被定義為Class2(2MB/sec)、Class4(4MB/sec)、Class6(6MB/sec)等級別, 并且在卡片上必須有SDHC標志和速度等級標志,符合SDHC標準的TF卡如下圖左所示

(class4是市場上用得最普遍的速度等級),另外,SD協會規(guī)定SDHC必須采用FAT32 文 件系統(tǒng),這是因為之前在SD卡中使用的FAT16文件系統(tǒng)所支持的最大容量為2GB,并不能 滿足SDHC的要求。

1 電路圖


2 程序移植

SD卡的讀寫程序可直接使用成熟的程序包,一般不需要對程序包進行修改。

例20.1 SD卡扇區(qū)讀寫驅動測試,要求單片機上電后讀取SD卡總容量并將結果通過串口發(fā)送 到計算機,R/C時鐘:22.1184MHz,波特率9600,計算機串口助手使用字符格式顯示,單片 機讀取SD卡總容量后對一個程序指定的扇區(qū)地址進行數據寫入與讀出,并驗證寫入與讀出數 據是否完全相符,同時把驗證結果發(fā)送給計算機串口助手進行顯示。

主程序代碼如下:

// SD卡的扇區(qū)讀寫測試,可以支持MMC+SD1.0+SD2.0(SD與SDHC)。
#include "sd.h"
#include "uart.h" void main()
{
int i=0,res=0; // res 用于存放函數返回值
unsigned long sec=0; // sec 用于存放函數返回的扇區(qū)總數 port_mode(); // 所有IO口設為準雙向弱上拉方式。 UART_Init(); // 波特率:9600 /22.1184MHZ
UART_Send_Str("串口設置完畢");
res=SD_Init(); UART_Send_StrNum("SD卡初始化完畢:",res);
sec=SD_GetTotalSec();
UART_Send_StrNum("總扇區(qū):",sec); // 總容量=總扇區(qū)*512字節(jié) UART_Send_StrNum("總容量(M):",sec>>11);
// sec>>11表示:總容量(字節(jié))/1024/1024=兆字節(jié)

for(i=0;i<512;i++) pbuf[ i]=i; // 清空測試緩沖區(qū)

res=SD_Write_Sector(1000,pbuf);

// 512*1000=512千字節(jié),表明可測試小至1M的卡 UART_Send_StrNum("SD卡寫扇區(qū)完成:",res);

for(i=0;i<512;i++) pbuf[ i]=0; // 清空測試緩沖區(qū)

res=SD_Read_Sector(1000,pbuf); UART_Send_StrNum("SD卡讀扇區(qū)完成:",res);

res=0;

for(i=0;i<512;i++) if(pbuf[ i]!=((unsigned char)i)) res=1;
if(res) UART_Send_Str("SD卡讀寫有錯");
else UART_Send_Str("SD卡OK");
while(1);
}
程序運行結果如下圖所示。

3 znFAT文件系統(tǒng)介紹

有了前面的驅動程序,我們已經可以使用SD卡來存儲程序運行過程中的重要數據 了,由于SD卡存儲容量很大,即使每次使用1個不同的扇區(qū)(512字節(jié)),也有足 夠的空間來存儲數據,但有一個問題,通過前面的驅動程序直接寫入到SD卡的數 據無法直接在計算機上顯示,在計算機上寫入到SD卡中的數據也無法使用前面的 驅動程序直接讀取出來,為解決這個問題,需要在前面驅動程序的基礎上加入文 件系統(tǒng),讓單片機對文件的操作與計算機對文件的操作相兼容,在8位單片機上 方便使用的文件系統(tǒng)是znFAT,znFAT與存儲設備的關系如圖所示。



51單片機驅動sd卡上面壓縮包所有程序下載: 第20章 SD卡.rar (11.3 MB, 下載次數: 374)


作者: narutolq    時間: 2016-5-21 19:54
感謝分享
作者: zqy1818    時間: 2016-10-12 15:52
感謝分享,支持下
作者: zhangjiantao    時間: 2016-10-27 10:30
學習中 真是對文件系統(tǒng)不了解
作者: gyttza    時間: 2017-3-3 10:49
謝謝分享
作者: mmm12345    時間: 2017-3-18 20:44
感謝分享,支持下
作者: philip    時間: 2017-5-14 00:37
謝謝分享!不夠錢下載
作者: xqandwn    時間: 2017-11-17 11:39
謝謝分享
作者: cpfmly    時間: 2017-12-19 17:32
謝謝分享,先行收藏
作者: pyq208    時間: 2017-12-23 10:52
謝謝分享,先行收藏
作者: xieyejia0    時間: 2018-1-18 16:42
好東西啊,謝謝分享
作者: starbing    時間: 2018-5-14 11:29
感謝分享
作者: radio2222    時間: 2018-10-23 23:48

感謝分享,支持下,辛苦了樓主
作者: 劍圣之道    時間: 2018-11-4 22:13
感謝分享
作者: 15172592551    時間: 2019-1-21 16:39
好東西
作者: liu198601    時間: 2019-12-14 22:01
好東西
作者: liu198601    時間: 2020-4-12 12:29
支持,太有用了
作者: liu198601    時間: 2020-4-19 14:10
感謝分享,正在學習
作者: saint_lee1986    時間: 2021-11-22 00:37
好東西,現在正在調試這個程序,8G的卡,SPI模式,一直不成功,下載這個試試看
作者: 白白李    時間: 2024-7-11 17:53
philip 發(fā)表于 2017-5-14 00:37
謝謝分享!不夠錢下載

可以去B站搜索一下這本書 有對應視頻 里面有某一個寶鏈接 在詳情頁可以下載




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1