基于A(yíng)T89S52和FAT16的SD卡讀寫(xiě)系統設計

發(fā)布時(shí)間:2010-1-17 08:21    發(fā)布者:李寬
關(guān)鍵詞: SD卡 , 系統設計
引言

長(cháng)期以來(lái),閃存卡(SD卡、MMC卡等)因其體積小、功耗低、容量大和非易失性等特點(diǎn),在嵌入式存儲領(lǐng)域的應用越來(lái)越廣泛。特別是近年來(lái),隨著(zhù)閃存技術(shù)的發(fā)展,閃存卡價(jià)格不斷下降且存儲容量不斷提高。當數據采集系統需要長(cháng)時(shí)間地采集和記錄海量數據時(shí),應用SD卡作為存儲介質(zhì)是很好的選擇,例如電能檢測、溫度濕度檢測、病人心肺數據記錄等。FAT16文件系統是。Microsoft公司在其MS-DOS 操作系統中采用的文件系統,具有出色的文件管理性能,能被當前大多數操作系統識別。因此,將SD卡與FAT16文件系統相結合是嵌入式數據存儲、記錄系統的理想方案,可以將采集記錄的數據直接在PC上讀取和處理。本文研究和設計了基于A(yíng)T89S52單片機和FAT16文件系統的SD卡讀寫(xiě)系統。

1 系統方案介紹

本系統采用MCS-51架構的AT89S52單片機。AT89S52是一種低成本、低功耗、高性能的CMOS 8位微控制器,具有8 KB在系統可編程Flash存儲器。應用AT89S52讀寫(xiě)SD卡,首先要確定它們之間的通信方案。SD卡有2種可選的通信協(xié)議:SD模式和SPI模式。 SD模式是SD卡的標準讀寫(xiě)方式,選用此模式需要選擇帶SD卡控制接口的MCU或者額外的SD卡控制單元;SPI模式通過(guò)SPI總線(xiàn)完成SD卡與主控制器的通信。AT89S52沒(méi)有集成SD卡控制器,為了不增加額外的SD卡控制單元硬件成本,本設計方案采用SD卡的SPI通信模式。雖然AT89S52也沒(méi)有集成SPI接口模塊,但可以用軟件的方式模擬SPI接口時(shí)序。

另外一個(gè)要解決的問(wèn)題是SD卡與AT89S52的電平匹配。SD卡的邏輯電平相當于3.3 V的TTL電平標準,AT89S52的邏輯電平為5 V CMOS電平。

解決電平匹配問(wèn)題的原則有2條:一為輸出電平器件輸出的高電平的最小值,應該大于接收電平器件識別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應該小于接收電平器件識別為低電平的最高電壓值。

考慮到SsD卡在SPI工作模式下,數據的傳輸都是單向的,這樣可以在單片機向SD卡傳輸數據時(shí)采用晶體管加下拉電阻的方法,基本電路如圖1所示。而在 SD卡向單片機傳輸數據時(shí)可以采用直接連接,因為它們之間的電平剛好滿(mǎn)足上述的電平兼容原則,既經(jīng)濟又實(shí)用。這個(gè)方案需要雙電源供電,1個(gè)5 V電源,1個(gè)3.3 V電源。



2 AT89S52與SD卡接口電路設計

2.1 SD卡接口規范

SD卡工作在2.7~3.6 V電壓下,圖2是普通SD卡的結構示意圖和引腳排列圖,表1列出了各引腳在SPI模式下的定義和功能描述。主機與SD卡之間通過(guò)指令來(lái)實(shí)現交互。





2.2 接口電路設計

AT89S52內有256字節的RAM,由于SD卡數據的讀出與寫(xiě)入是以塊為單位的,而每塊為512字節,所以需要在單片機的最小系統上擴展1片RAM。本系統選用的RAM芯片為HM62256,容量32KB。系統硬件電路如圖3所示。



3 軟件設計

3.1 FAT16文件系統

FAT16文件系統的存儲結構如圖4所示。



主引導記錄區(Main BootRecord,MBR)位于物理磁盤(pán)第零扇區。MBR中有硬盤(pán)分區記錄表(Disk Partition Table,DPT),DPT記錄了各邏輯分區的相對偏移。SD卡不支持多分區,在1個(gè)SD卡中只有1個(gè)分區,因此在SD卡上的DPT只有1個(gè)分區表項被占用。系統引導記錄區(DOS Boot Record,DBR)位于磁盤(pán)邏輯分區的第0扇區,是操作系統可以訪(fǎng)問(wèn)的第1個(gè)扇區,它其中包含1個(gè)稱(chēng)為BPB(Bios Parameter Block)的本分區參數記錄表。BPB記錄著(zhù)本分區的根目錄大小、FAT、個(gè)數、磁盤(pán)介質(zhì)描述、分配單元大小等重要參數。

DBR之后是FAT(File Allocation Table,文件分配記錄表),記錄文件在磁盤(pán)上的存儲位置。在Windows系統中,文件存儲的單位是簇而不是字節,1個(gè)文件不是連續地存放于磁盤(pán)的某一區域,而往往分成若干段,像鏈子一樣存放。FAT表記錄了每個(gè)文件的起始簇號、后繼簇號和終止簇號。FAT表中的每個(gè)表項對應數據存儲區中的1個(gè)簇,由于FAT表對文件管理的重要性,FAT表有1個(gè)備份。

DIR是根目錄區,緊接著(zhù)第2個(gè)FAT表(FAT2)之后,記錄著(zhù)根目錄下每個(gè)文件的起始簇號、大小等屬性。操作系統根據DIR中文件的起始簇號和大小,結合FAT表來(lái)定位文件。FAT16文件系統中1個(gè)文件的存儲示意圖如圖5所示。



3.2 SD卡指令規范

單片機通過(guò)相應指令與SD卡進(jìn)行交互。SD卡有特定的指令格式,都是6字節長(cháng),最高有效位(MSB)傳輸優(yōu)先,如圖6所示



SD卡指令的最高2位“01”是SD卡指令的開(kāi)始標志,最后1位“1”是結束標志。6位的指令是SD卡的指令序號,例如CMD17的6位指令即17的二進(jìn)制表示010001。指令參數占4字節,具體內容參照SD卡規范。7位CRC校檢的生成多項式為G(x)=x7+x3+1。事實(shí)上SD卡在進(jìn)入SPI模式后,不再通過(guò)CRC碼來(lái)確認指令的傳輸正確與否,指令中的7為CRC校檢,只在SD模式下起作用。因此僅SD卡上電后的第1條切換SPI模式指令CMd0 需要校檢碼,而此校檢碼是固定的0x95,其他指令的CRC均置1即可。SD卡響應有4種格式,不同指令對應不同響應,具體內容可參看SD卡規范。

3.3 SD卡讀寫(xiě)驅動(dòng)

3.3.1 SPI時(shí)序模擬

用軟件來(lái)模擬SPI總線(xiàn)的具體方法是:將SCK的初始狀態(tài)置0,允許接收后(即CS置0)將SCK置1,這樣單片機由DI線(xiàn)輸出1位數據到SD 卡;接著(zhù)再將SCK置0,單片機由DO線(xiàn)從SD卡讀1位數據。至此,模擬1位數據輸入輸出完成。此后再將SCK置1,依次循環(huán)8次,完成SPI總線(xiàn)1字節數據的輸入輸出。

以下是本系統軟件模擬SPI時(shí)序的匯編代碼。以通用寄存器A作為函數參數,實(shí)現將寄存器A中的數據通過(guò)SPI總線(xiàn)發(fā)送出去,并將從SPI總線(xiàn)讀到的數據存到寄存器A中。

3.3.2 SD卡的初始化

SD卡的初始化流程如圖7所示。SD卡上電延時(shí)74個(gè)時(shí)鐘周期后,單片機向SD卡發(fā)送復位命令CMDO,使SD卡進(jìn)入SPI模式。之后循環(huán)發(fā)送激活SD卡指令CMD1,直到接收到SD卡響應的第0位為0。



3.3.3 SD卡數據塊的讀寫(xiě)

完成SD卡的初始化后,就可以對SD卡進(jìn)行讀寫(xiě)操作。讀寫(xiě)操作都是通過(guò)指令來(lái)完成的:?jiǎn)螇K寫(xiě)命令CMD24,多塊寫(xiě)命令CMD25;單塊讀命令 CMD17,多塊讀命令CMD18。單塊讀寫(xiě)時(shí),數據塊的長(cháng)度為512字節,多塊讀寫(xiě)時(shí)SD卡收到1個(gè)停止命令CMD12后停止讀寫(xiě)。圖8、圖9分別是單塊讀、寫(xiě)SD卡的軟件流程。





3.4 FAT16文件讀寫(xiě)

按照FAT16文件系統的文件組織規范,編寫(xiě)讀文件函數和寫(xiě)文件函數。FAT16文件讀寫(xiě)的軟件流程如圖10所示。



結語(yǔ)

通過(guò)串口將本系統連接到PC進(jìn)行測試,結果表明本系統完成了對FAT16文件系統下文件的讀寫(xiě)。當采用11.059 2 MHz晶振時(shí),讀寫(xiě)速度和質(zhì)量都令人滿(mǎn)意。本系統采用51架構的AT89S52單片機,實(shí)現了基于FAT16文件系統的讀寫(xiě)SD卡設計,整套系統成本較低,在嵌入式數據記錄和存儲中有廣泛應用前景。

參考文獻

1. SanDisk Corporation.Secure Digital Card Product Manual Revision 1.7,2003.
2. 關(guān)碩,關(guān)濟實(shí).FAT16文件系統在單片機存儲系統上的實(shí)現[J].科技信息:科學(xué)教研,2008(13).
3. Microsoft Corporation.FAT:General Overview of On Disk Format Version 1.03,2000.
4. Microsoft Corporation.How FAT Works:Local File Systems[OL].http://technet.microsoft.com.

作者:山東大學(xué) 張恒  來(lái)源:《單片機與嵌入式系統應用》 2009(8)
本文地址:http://selenalain.com/thread-7748-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页