當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于AT89S52和FAT16的SD卡讀寫系統(tǒng)設(shè)計

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

1 系統(tǒng)方案介紹
    本系統(tǒng)采用MCS-51架構(gòu)的AT89S52單片機(jī)。AT89S52是一種低成本、低功耗、高性能的CMOS 8位微控制器,具有8 KB在系統(tǒng)可編程Flash存儲器。應(yīng)用AT89S52讀寫SD卡,首先要確定它們之間的通信方案。SD卡有2種可選的通信協(xié)議:SD模式和SPI模式。 SD模式是SD卡的標(biāo)準(zhǔn)讀寫方式,選用此模式需要選擇帶SD卡控制接口的MCU或者額外的SD卡控制單元;SPI模式通過SPI總線完成SD卡與主控制器的通信。AT89S52沒有集成SD卡控制器,為了不增加額外的SD卡控制單元硬件成本,本設(shè)計方案采用SD卡的SPI通信模式。雖然AT89S52也沒有集成SPI接口模塊,但可以用軟件的方式模擬SPI接口時序。
    另外一個要解決的問題是SD卡與AT89S52的電平匹配。SD卡的邏輯電平相當(dāng)于3.3 V的TTL電平標(biāo)準(zhǔn),AT89S52的邏輯電平為5 V CMOS電平。
    解決電平匹配問題的原則有2條:一為輸出電平器件輸出的高電平的最小值,應(yīng)該大于接收電平器件識別為高電平的最低電壓值;另一條為輸出電平器件輸出低電平的最大電壓值,應(yīng)該小于接收電平器件識別為低電平的最高電壓值。
    考慮到SsD卡在SPI工作模式下,數(shù)據(jù)的傳輸都是單向的,這樣可以在單片機(jī)向SD卡傳輸數(shù)據(jù)時采用晶體管加下拉電阻的方法,基本電路如圖1所示。而在 SD卡向單片機(jī)傳輸數(shù)據(jù)時可以采用直接連接,因為它們之間的電平剛好滿足上述的電平兼容原則,既經(jīng)濟(jì)又實用。這個方案需要雙電源供電,1個5 V電源,1個3.3 V電源。

[!--empirenews.page--]
2 AT89S52與SD卡接口電路設(shè)計
2.1 SD卡接口規(guī)范
    SD卡工作在2.7~3.6 V電壓下,圖2是普通SD卡的結(jié)構(gòu)示意圖和引腳排列圖,表1列出了各引腳在SPI模式下的定義和功能描述。主機(jī)與SD卡之間通過指令來實現(xiàn)交互。

2.2 接口電路設(shè)計
    AT89S52內(nèi)有256字節(jié)的RAM,由于SD卡數(shù)據(jù)的讀出與寫入是以塊為單位的,而每塊為512字節(jié),所以需要在單片機(jī)的最小系統(tǒng)上擴(kuò)展1片RAM。本系統(tǒng)選用的RAM芯片為HM62256,容量32KB。系統(tǒng)硬件電路如圖3所示。

3 軟件設(shè)計
3.1 FAT16文件系統(tǒng)
    FAT16文件系統(tǒng)的存儲結(jié)構(gòu)如圖4所示。

 [!--empirenews.page--]

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

    DBR之后是FAT(File Allocation Table,文件分配記錄表),記錄文件在磁盤上的存儲位置。在Windows系統(tǒng)中,文件存儲的單位是簇而不是字節(jié),1個文件不是連續(xù)地存放于磁盤的某一區(qū)域,而往往分成若干段,像鏈子一樣存放。FAT表記錄了每個文件的起始簇號、后繼簇號和終止簇號。FAT表中的每個表項對應(yīng)數(shù)據(jù)存儲區(qū)中的1個簇,由于FAT表對文件管理的重要性,F(xiàn)AT表有1個備份。
    DIR是根目錄區(qū),緊接著第2個FAT表(FAT2)之后,記錄著根目錄下每個文件的起始簇號、大小等屬性。操作系統(tǒng)根據(jù)DIR中文件的起始簇號和大小,結(jié)合FAT表來定位文件。FAT16文件系統(tǒng)中1個文件的存儲示意圖如圖5所示。

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

    SD卡指令的最高2位“01”是SD卡指令的開始標(biāo)志,最后1位“1”是結(jié)束標(biāo)志。6位的指令是SD卡的指令序號,例如CMD17的6位指令即17的二進(jìn)制表示010001。指令參數(shù)占4字節(jié),具體內(nèi)容參照SD卡規(guī)范。7位CRC校檢的生成多項式為G(x)=x7+x3+1。事實上SD卡在進(jìn)入SPI模式后,不再通過CRC碼來確認(rèn)指令的傳輸正確與否,指令中的7為CRC校檢,只在SD模式下起作用。因此僅SD卡上電后的第1條切換SPI模式指令CMd0 需要校檢碼,而此校檢碼是固定的0x95,其他指令的CRC均置1即可。SD卡響應(yīng)有4種格式,不同指令對應(yīng)不同響應(yīng),具體內(nèi)容可參看SD卡規(guī)范。
3.3 SD卡讀寫驅(qū)動
3.3.1 SPI時序模擬
    用軟件來模擬SPI總線的具體方法是:將SCK的初始狀態(tài)置0,允許接收后(即CS置0)將SCK置1,這樣單片機(jī)由DI線輸出1位數(shù)據(jù)到SD卡;接著再將SCK置0,單片機(jī)由DO線從SD卡讀1位數(shù)據(jù)。至此,模擬1位數(shù)據(jù)輸入輸出完成。此后再將SCK置1,依次循環(huán)8次,完成SPI總線1字節(jié)數(shù)據(jù)的輸入輸出。
    以下是本系統(tǒng)軟件模擬SPI時序的匯編代碼。以通用寄存器A作為函數(shù)參數(shù),實現(xiàn)將寄存器A中的數(shù)據(jù)通過SPI總線發(fā)送出去,并將從SPI總線讀到的數(shù)據(jù)存到寄存器A中。

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

3.3.3 SD卡數(shù)據(jù)塊的讀寫
    完成SD卡的初始化后,就可以對SD卡進(jìn)行讀寫操作。讀寫操作都是通過指令來完成的:單塊寫命令CMD24,多塊寫命令CMD25;單塊讀命令 CMD17,多塊讀命令CMD18。單塊讀寫時,數(shù)據(jù)塊的長度為512字節(jié),多塊讀寫時SD卡收到1個停止命令CMD12后停止讀寫。圖8、圖9分別是單塊讀、寫SD卡的軟件流程。

3.4 FAT16文件讀寫
    按照FAT16文件系統(tǒng)的文件組織規(guī)范,編寫讀文件函數(shù)和寫文件函數(shù)。FAT16文件讀寫的軟件流程如圖10所示。

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉