標題: 第20章 單片機驅動SD卡與znFAT文件系統(tǒng) [打印本頁]
作者: wul 時間: 2016-3-29 01:58
標題: 第20章 單片機驅動SD卡與znFAT文件系統(tǒng)
第20章 SD卡與znFAT文件系統(tǒng)
1 電路圖
2 程序移植
3 znFAT文件系統(tǒng)介紹
7.jpg (3.7 KB, 下載次數: 200)
下載附件
2016-3-29 01:59 上傳
8.jpg (3.33 KB, 下載次數: 165)
下載附件
2016-3-29 01:59 上傳
9.jpg (13.02 KB, 下載次數: 167)
下載附件
2016-3-29 01:59 上傳
10.jpg (8.99 KB, 下載次數: 175)
下載附件
2016-3-29 01:59 上傳
1.jpg (11.22 KB, 下載次數: 168)
下載附件
2016-3-29 01:59 上傳
5.jpg (8.61 KB, 下載次數: 201)
下載附件
2016-3-29 01:59 上傳
6.jpg (7.35 KB, 下載次數: 151)
下載附件
2016-3-29 01:59 上傳
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卡如下圖左所示
11.jpg (18.48 KB, 下載次數: 178)
下載附件
2016-3-29 01:59 上傳
(class4是市場上用得最普遍的速度等級),另外,SD協會規(guī)定SDHC必須采用FAT32 文 件系統(tǒng),這是因為之前在SD卡中使用的FAT16文件系統(tǒng)所支持的最大容量為2GB,并不能 滿足SDHC的要求。
2.jpg (11.84 KB, 下載次數: 169)
下載附件
2016-3-29 01:59 上傳
1 電路圖
0.png (65.75 KB, 下載次數: 187)
下載附件
2016-3-29 01:42 上傳
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.jpg (41.75 KB, 下載次數: 241)
下載附件
2016-3-29 01:59 上傳
3 znFAT文件系統(tǒng)介紹
有了前面的驅動程序,我們已經可以使用SD卡來存儲程序運行過程中的重要數據 了,由于SD卡存儲容量很大,即使每次使用1個不同的扇區(qū)(512字節(jié)),也有足 夠的空間來存儲數據,但有一個問題,通過前面的驅動程序直接寫入到SD卡的數 據無法直接在計算機上顯示,在計算機上寫入到SD卡中的數據也無法使用前面的 驅動程序直接讀取出來,為解決這個問題,需要在前面驅動程序的基礎上加入文 件系統(tǒng),讓單片機對文件的操作與計算機對文件的操作相兼容,在8位單片機上 方便使用的文件系統(tǒng)是znFAT,znFAT與存儲設備的關系如圖所示。
4.jpg (40.68 KB, 下載次數: 162)
下載附件
2016-3-29 01:59 上傳
0.png (28.38 KB, 下載次數: 186)
下載附件
2016-3-29 01:49 上傳
51單片機驅動sd卡上面壓縮包所有程序下載:
第20章 SD卡.rar
(11.3 MB, 下載次數: 374)
2016-3-29 01:54 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: 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
可以去B站搜索一下這本書 有對應視頻 里面有某一個寶鏈接 在詳情頁可以下載
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |