第20章 SD卡與znFAT文件系統(tǒng) 1 電路圖 2 程序移植 3 znFAT文件系統(tǒng)介紹
7.jpg (3.7 KB, 下載次數(shù): 200)
下載附件
2016-3-29 01:59 上傳
8.jpg (3.33 KB, 下載次數(shù): 165)
下載附件
2016-3-29 01:59 上傳
9.jpg (13.02 KB, 下載次數(shù): 167)
下載附件
2016-3-29 01:59 上傳
10.jpg (8.99 KB, 下載次數(shù): 175)
下載附件
2016-3-29 01:59 上傳
1.jpg (11.22 KB, 下載次數(shù): 168)
下載附件
2016-3-29 01:59 上傳
5.jpg (8.61 KB, 下載次數(shù): 201)
下載附件
2016-3-29 01:59 上傳
6.jpg (7.35 KB, 下載次數(shù): 151)
下載附件
2016-3-29 01:59 上傳
SD卡廣泛運(yùn)用在手機(jī)、數(shù)碼相機(jī)中,本章帶領(lǐng)大家入門。
TF卡比標(biāo)準(zhǔn)SD卡(如數(shù)碼相機(jī)上使用的SD卡)在外形上更加小巧,通過SD轉(zhuǎn)接卡也可當(dāng) 作標(biāo)準(zhǔn)SD卡使用,TF卡主要用在手機(jī)上,其容量從128MB到32GB各種規(guī)格齊全, TF卡與 標(biāo)準(zhǔn)SD卡僅僅是封裝上的不同,它們的傳輸協(xié)議是完全相同的。 SDHC是表示“高容量SD存儲卡”,SD 2.0系統(tǒng)規(guī)定SDHC是容量大于2GB小于等于32GB的SD 卡,傳輸速度被定義為Class2(2MB/sec)、Class4(4MB/sec)、Class6(6MB/sec)等級別, 并且在卡片上必須有SDHC標(biāo)志和速度等級標(biāo)志,符合SDHC標(biāo)準(zhǔn)的TF卡如下圖左所示
11.jpg (18.48 KB, 下載次數(shù): 178)
下載附件
2016-3-29 01:59 上傳
(class4是市場上用得最普遍的速度等級),另外,SD協(xié)會規(guī)定SDHC必須采用FAT32 文 件系統(tǒng),這是因?yàn)橹霸赟D卡中使用的FAT16文件系統(tǒng)所支持的最大容量為2GB,并不能 滿足SDHC的要求。
2.jpg (11.84 KB, 下載次數(shù): 169)
下載附件
2016-3-29 01:59 上傳
1 電路圖
0.png (65.75 KB, 下載次數(shù): 187)
下載附件
2016-3-29 01:42 上傳
SD卡的讀寫程序可直接使用成熟的程序包,一般不需要對程序包進(jìn)行修改。 例20.1 SD卡扇區(qū)讀寫驅(qū)動測試,要求單片機(jī)上電后讀取SD卡總?cè)萘坎⒔Y(jié)果通過串口發(fā)送 到計(jì)算機(jī),R/C時(shí)鐘:22.1184MHz,波特率9600,計(jì)算機(jī)串口助手使用字符格式顯示,單片 機(jī)讀取SD卡總?cè)萘亢髮σ粋(gè)程序指定的扇區(qū)地址進(jìn)行數(shù)據(jù)寫入與讀出,并驗(yàn)證寫入與讀出數(shù) 據(jù)是否完全相符,同時(shí)把驗(yàn)證結(jié)果發(fā)送給計(jì)算機(jī)串口助手進(jìn)行顯示。 主程序代碼如下: // SD卡的扇區(qū)讀寫測試,可以支持MMC+SD1.0+SD2.0(SD與SDHC)。 #include "sd.h" #include "uart.h" void main() { int i=0,res=0; // res 用于存放函數(shù)返回值 unsigned long sec=0; // sec 用于存放函數(shù)返回的扇區(qū)總數(shù) port_mode(); // 所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。 UART_Init(); // 波特率:9600 /22.1184MHZ UART_Send_Str("串口設(shè)置完畢"); res=SD_Init(); UART_Send_StrNum("SD卡初始化完畢:",res); sec=SD_GetTotalSec(); UART_Send_StrNum("總扇區(qū):",sec); // 總?cè)萘?總扇區(qū)*512字節(jié) UART_Send_StrNum("總?cè)萘?M):",sec>>11); // sec>>11表示:總?cè)萘浚ㄗ止?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卡讀寫有錯(cuò)"); else UART_Send_Str("SD卡OK"); while(1); } 程序運(yùn)行結(jié)果如下圖所示。
3.jpg (41.75 KB, 下載次數(shù): 241)
下載附件
2016-3-29 01:59 上傳
3 znFAT文件系統(tǒng)介紹 有了前面的驅(qū)動程序,我們已經(jīng)可以使用SD卡來存儲程序運(yùn)行過程中的重要數(shù)據(jù) 了,由于SD卡存儲容量很大,即使每次使用1個(gè)不同的扇區(qū)(512字節(jié)),也有足 夠的空間來存儲數(shù)據(jù),但有一個(gè)問題,通過前面的驅(qū)動程序直接寫入到SD卡的數(shù) 據(jù)無法直接在計(jì)算機(jī)上顯示,在計(jì)算機(jī)上寫入到SD卡中的數(shù)據(jù)也無法使用前面的 驅(qū)動程序直接讀取出來,為解決這個(gè)問題,需要在前面驅(qū)動程序的基礎(chǔ)上加入文 件系統(tǒng),讓單片機(jī)對文件的操作與計(jì)算機(jī)對文件的操作相兼容,在8位單片機(jī)上 方便使用的文件系統(tǒng)是znFAT,znFAT與存儲設(shè)備的關(guān)系如圖所示。
4.jpg (40.68 KB, 下載次數(shù): 162)
下載附件
2016-3-29 01:59 上傳
0.png (28.38 KB, 下載次數(shù): 186)
下載附件
2016-3-29 01:49 上傳
51單片機(jī)驅(qū)動sd卡上面壓縮包所有程序下載:
第20章 SD卡.rar
(11.3 MB, 下載次數(shù): 374)
2016-3-29 01:54 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|