基于C8051F020的SD卡主控制器設(shè)計(jì),SD card controller
關(guān)鍵字:基于C8051F020的SD卡主控制器設(shè)計(jì)
1 引言
飛機(jī)飛行狀況監(jiān)測(cè)及數(shù)據(jù)采集儀.用于采集飛機(jī)試飛時(shí)的各種飛行數(shù)據(jù),要求大量的存儲(chǔ)容量。在飛機(jī)回到地面后,需要方便地將采集數(shù)據(jù)傳輸?shù)酵ㄓ糜?jì)算機(jī)上,以便作進(jìn)一步的數(shù)據(jù)處理和分析。為了把采集的數(shù)據(jù)從采集系統(tǒng)傳輸?shù)酵ㄓ糜?jì)算機(jī)內(nèi).在過(guò)去,是將數(shù)據(jù)存儲(chǔ)部分設(shè)計(jì)為可分離的一個(gè)存儲(chǔ)板,數(shù)據(jù)存儲(chǔ)板上設(shè)計(jì)有CPU和串口。將數(shù)據(jù)存儲(chǔ)板從數(shù)據(jù)采集系統(tǒng)上取下來(lái),通過(guò)串口與通用計(jì)算機(jī)通信,將數(shù)據(jù)傳輸?shù)酵ㄓ糜?jì)算機(jī)內(nèi)。可以看出。這種方法有幾個(gè)缺點(diǎn):第一,操作麻煩,每次都要將存儲(chǔ)板從采集系統(tǒng)取下來(lái),然后再裝上;第二,經(jīng)常插拔存儲(chǔ)板降低整個(gè)采集系統(tǒng)的可靠性:第三,讀取數(shù)據(jù)的通用計(jì)算機(jī)需要安裝專用程序。此程序是專門開(kāi)發(fā)用于通用計(jì)算機(jī)與數(shù)據(jù)存儲(chǔ)板之間的串口通信程序,增加了使用復(fù)雜性。SD/MMC卡是一種容量大(最大可達(dá)4GB)、性價(jià)比高、體積小、訪問(wèn)接口簡(jiǎn)單的存儲(chǔ)卡,而且通過(guò)USB讀卡器,可以很方便地將卡中文件拷貝到通用計(jì)算機(jī)中。目前,SD卡已大量用于數(shù)碼相機(jī)、MP3、手機(jī)與大容量存儲(chǔ)設(shè)備中。在本次飛行狀況監(jiān)測(cè)及數(shù)據(jù)采集儀的設(shè)計(jì)中,采集數(shù)據(jù)的存儲(chǔ)采用了SD卡。
2 硬件功能原理與設(shè)計(jì)
SD卡的外形和接口如圖1所示。根據(jù)SD卡與主控制器的通信協(xié)議不同,SD卡對(duì)外提供兩種訪問(wèn)模式:SD模式和SPI模式。所用通信模式不同,SD卡引腳的功能也不同,具體引腳功能如表1所示。在具體通信過(guò)程中,主機(jī)只能選擇其中一種通信模式。通信模式的選擇對(duì)于主控制器來(lái)說(shuō)是透明的,卡會(huì)自動(dòng)檢測(cè)復(fù)位命令的通信協(xié)議模式,而且通信模式一旦選定,系統(tǒng)在通電情況下不能改變。SD模式下,主控制器使用SD總線訪問(wèn)SD卡。可通常的單片機(jī)沒(méi)有硬件SD總線,盡管可以借助通用口線用軟件仿真,但訪問(wèn)速度較低,還要大量占用CPU時(shí)間,而單片機(jī)多具有SPI總線,本文就利用SPI總線實(shí)現(xiàn)對(duì)SD卡的訪問(wèn)。下面主要介紹SPI總線方式。
?
?
注:S--電源;I--輸入;O--推挽輸出;PP--推挽I/O。
在SPI總線模式下.CS為主控制器向卡發(fā)送的片選信號(hào),SCLK為主控制器向卡發(fā)送的時(shí)鐘信號(hào)。DI(DataIn)為主控制器向卡發(fā)送的單向數(shù)據(jù)信號(hào),DO(DataOut)為卡向主控制器發(fā)送的單向數(shù)據(jù)信號(hào)。SD卡的內(nèi)部結(jié)構(gòu)如圖2所示,SD卡內(nèi)部除了具有大量存儲(chǔ)單元外。還具有卡接口控制器、寄存器以及SD和SPI兩種模式的對(duì)外接口等。外部主控制器訪問(wèn)卡的外部信號(hào)線并不與存儲(chǔ)器單元直接相連,而是通過(guò)卡的接口控制器與存儲(chǔ)器單元接口相連。這樣主控制器并不直接訪問(wèn)存儲(chǔ)器,而是通過(guò)卡的接口控制器來(lái)訪問(wèn)存儲(chǔ)器。卡內(nèi)存儲(chǔ)單元的讀,擦,寫(xiě)由卡接口控制器根據(jù)主控制器的命令自動(dòng)處理完成,而主控制器無(wú)須知道卡內(nèi)是如何操作、管理存儲(chǔ)單元的,這將大大減輕主控制器對(duì)存儲(chǔ)器操作的負(fù)擔(dān)。SD卡內(nèi)部有6個(gè)信息寄存器,用來(lái)設(shè)置和保存操作卡的關(guān)鍵信息,有兩個(gè)狀態(tài)寄存器,用來(lái)記錄操作卡的當(dāng)前狀態(tài)。
?
采集儀的主控制器采用了C8051F020單片機(jī)。C8051F系列單片機(jī)與8051在指令上完全兼容,性能遠(yuǎn)遠(yuǎn)高于標(biāo)準(zhǔn)的8051單片機(jī),片內(nèi)除了具有8052的全部外設(shè)外.又?jǐn)U展了豐富的外設(shè),是一種名副其實(shí)的SOC (System On Chip)單片機(jī)。C8051F020能夠滿足數(shù)據(jù)采集功能外,還能很容易地實(shí)現(xiàn)SD卡的訪問(wèn)。與SD卡系統(tǒng)相關(guān)的特性如下:
- 單片機(jī)內(nèi)部采用流水線結(jié)構(gòu)。指令運(yùn)行速度高.指令運(yùn)行速度比一般的80C51系列單片機(jī)提高了大約10倍. 可達(dá)25MIPS指令運(yùn)行速度,滿足高速操作SD卡的功能要求。
- 具有SPI 硬件接口。可與SD卡的SPI 總線很好接口。
- 具有8個(gè)8位I/O端口。除滿足數(shù)據(jù)采集需要外。有足夠的口線用于單片機(jī)與SD卡的連接。而且.這些口線可通過(guò)軟件進(jìn)行配置,獲得不同的功能,其中SPI 接口,就是通過(guò)配置相關(guān)寄存器而獲得的。
- 具有可擴(kuò)展的中斷系統(tǒng)。支持22個(gè)中斷源.2個(gè)優(yōu)先級(jí),其中就包括SPI接口產(chǎn)生的中斷。
- 片內(nèi)存儲(chǔ)器包括64KB的Flash、和4KB的XRAM。不需要擴(kuò)展存儲(chǔ)器.就可以滿足文件系統(tǒng)的建立和訪問(wèn)SD 卡的需要。
- 3.3V的工作電壓,與SD卡工作電壓兼容。
- 時(shí)鐘系統(tǒng)更加完善.可以使用內(nèi)部時(shí)鐘.也可以使用外部時(shí)鐘。通過(guò)編程可以切換。
- 可實(shí)現(xiàn)通過(guò)JTAG接口的在系統(tǒng)調(diào)試。方便系統(tǒng)的開(kāi)發(fā)。
C8051F系列單片機(jī)的SPI串行接口的主要特點(diǎn)如下:全雙工,三線同步傳輸,即在發(fā)送的同時(shí)也能接受;可以工作在主機(jī)方式或從機(jī)方式;主機(jī)最大數(shù)據(jù)傳輸速率(位/秒)是系統(tǒng)時(shí)鐘頻率的1/2.因而最高可達(dá)10Mb/s;SPI位傳輸速率可通過(guò)編程選擇;發(fā)送結(jié)束設(shè)置中斷標(biāo)志.發(fā)送期間不占用CPU時(shí)間;串行時(shí)鐘極性與相位可編程改變;具有寫(xiě)沖突保護(hù)和總線競(jìng)爭(zhēng)保護(hù)。
對(duì)于C8051F020的SPI系統(tǒng).首先通過(guò)設(shè)置I/O端口功能選擇開(kāi)關(guān)控制寄存器XBR0、XBR1、XBR2.將I/O端口P0.0、P0.1、P0.2、P0.3配置成SPI功能引腳SCK、MISO、MOSI和NSS。此時(shí)I/0端口P0.0、P0.1、P0.2、P0.3就組合成SPI接口了。而設(shè)置和控制SPI接口性能的特殊功能寄存器有SPI0CFG、SPI0CKR、SPI0CN、SPI0DAT。SPI0CFG是SPI的配置寄存器,用于配置SPI的工作方式。并反映通信過(guò)程中的數(shù)據(jù)發(fā)送狀態(tài)。SPI0CN是SPI控制寄存器.用于控制SPI的工作.并反映通信過(guò)程中的一些錯(cuò)誤標(biāo)志。SPI0CKR是SPI的時(shí)鐘速率寄存器.用于選擇SCK輸出的頻率。SPI0DAT是SPI的數(shù)據(jù)寄存器,用于發(fā)送和接受SPI數(shù)據(jù)。
主控制器C8051F020與SD卡座的電路連接圖如圖3所示。除了SPI接口的連接外,還有三根控制線,P0.4_SD_INSERT就是I/O端口P0.4,用于檢測(cè)SD卡在卡座上是否插好。完全插入時(shí)該引腳為低電平,否則為高電平。P0.5_SD_WP就是I/O端口P0.5,用于檢測(cè)SD卡當(dāng)前是否設(shè)置寫(xiě)保護(hù).寫(xiě)保護(hù)時(shí)該引腳為高電平,否則為低電平。P0.6_SD_POWER就是I/O端口P0.6,用于SD卡的供電控制,該引腳輸出低電平時(shí)。給卡供電。否則斷電。這是為了在SD卡進(jìn)入不確定狀態(tài)時(shí),可以通過(guò)對(duì)卡重新上電復(fù)位而無(wú)需拔出卡。
?
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)思想是,為了程序的可移植性和易用性。將程序分為三個(gè)層次。第一個(gè)層次是硬件抽象層。第二層是實(shí)現(xiàn)訪問(wèn)SD卡的命令層,第三層是應(yīng)用層,提供給用戶或文件系統(tǒng)的接口函數(shù)。
硬件抽象層包括訪問(wèn)SD卡的硬件環(huán)境配置、SPI接口實(shí)現(xiàn)通訊的基本函數(shù)以及SPI中斷的處理。硬件環(huán)境配置包括硬件初始化、以及內(nèi)存變量初始化等。如將C8051F020的I/O端口配置為SPI接口的相關(guān)設(shè)置、C8051F020的SPI接口性能的設(shè)置、SD卡的上電與斷開(kāi)、SD卡插入是否到位檢測(cè)、SD卡內(nèi)部寄存器特定參數(shù)設(shè)置等等。又如C8051F020的SPI接口性能的設(shè)置,包括主/從工作方式設(shè)置、SPI通訊頻率設(shè)置等等,這些內(nèi)容都與硬件有關(guān)。SPI接口實(shí)現(xiàn)通訊的基本函數(shù),包括主控制器向SD卡發(fā)送一字節(jié)和從SD卡讀取一字節(jié)的基本函數(shù),這是所有SPI通訊的基礎(chǔ)。SPI中斷處理是SPI接口產(chǎn)生中斷時(shí).中斷服務(wù)程序被自動(dòng)調(diào)用,在中斷服務(wù)程序中,讀取SPI控制寄存器。這里存放著產(chǎn)生中斷的各種狀態(tài)標(biāo)志,根據(jù)不同的狀態(tài)標(biāo)志,調(diào)用不同的函數(shù)處理。
命令層,就是調(diào)用硬件抽象層的基本發(fā)送接收字節(jié)函數(shù),實(shí)現(xiàn)SD卡所有SPI協(xié)議規(guī)定的命令.完成對(duì)SD卡的訪問(wèn)。根據(jù)SD卡協(xié)議,訪問(wèn)SD卡的不同功能,由不同的命令實(shí)現(xiàn)。這些命令分成0—9個(gè)不同的類別.每種類別包括幾個(gè)具體的命令,對(duì)于SPI協(xié)議,每個(gè)命令都由主機(jī)主動(dòng)發(fā)送。高位在前低位在后,SD卡收到命令后.根據(jù)不同的命令做出不同的響應(yīng)。主機(jī)發(fā)送的命令長(zhǎng)度總是6個(gè)字節(jié).命令的格式如表2所示。Command表示命令號(hào),占用6位,Parameter表示命令參數(shù),長(zhǎng)度為4字節(jié),不同的命令對(duì)應(yīng)不同的命令參數(shù)值。SD卡的響應(yīng)有4種格式,分別為R1、R1B、R2和R3格式。主機(jī)發(fā)送命令并讀取響應(yīng)形成一個(gè)完整的命令實(shí)現(xiàn)過(guò)程。
表2 SPI模式命令格式
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
發(fā)布評(píng)論請(qǐng)先 登錄 相關(guān)推薦 EE-335:SD卡與Blackfin處理器的接口電子發(fā)燒友網(wǎng)站提供《EE-335:SD卡與Blackfin處理器的接口.pdf》資料免費(fèi)下載
發(fā)表于 01-06 14:15
?0次下載
SD/MMC卡與TMS320F28xxx DSC的接口電子發(fā)燒友網(wǎng)站提供《SD/MMC卡與TMS320F28xxx DSC的接口.pdf》資料免費(fèi)下載
發(fā)表于 10-15 09:44
?0次下載
樹(shù)莓派4b支持多大的sd卡派4B支持的SD卡類型 樹(shù)莓派4B支持的SD卡類型主要有以下幾種: 1.1 SD卡(Secure
如何選擇高品質(zhì)SD存儲(chǔ)卡SD卡(Secure Digital Memory Card)是一種廣泛使用的存儲(chǔ)器件,因其快速的數(shù)據(jù)傳輸速度、可熱插拔的特性以及較大的存儲(chǔ)容量,廣泛應(yīng)用于各種場(chǎng)景,例如在便攜式設(shè)備如智能手機(jī)、平板
SD卡、MicroSD卡和SD NAND的性能與應(yīng)用對(duì)比在當(dāng)前豐富多元的存儲(chǔ)解決方案領(lǐng)域,SD卡、MicroSD卡以及SD NAND憑借其各自的獨(dú)特優(yōu)勢(shì)和特定的使用情景,贏得了市場(chǎng)的廣泛認(rèn)可。每種存儲(chǔ)技術(shù)都展現(xiàn)了其獨(dú)到之處,為用戶帶來(lái)了多樣
實(shí)現(xiàn)ESP32-WROVER-IE寫(xiě)入數(shù)據(jù)到SD卡中時(shí)無(wú)法初始化sd卡怎么解決?;, esp_err_to_name(ret));}return; } else {sdmmc_card_print_info(stdout, card);_sd_pick_next_file();
發(fā)表于 06-13 06:56
SD卡與Flash存儲(chǔ)究竟存在哪些差異?SD 卡是基于閃存技術(shù)的一種可移動(dòng)存儲(chǔ)卡,由 SD 協(xié)會(huì)進(jìn)行開(kāi)發(fā)并標(biāo)準(zhǔn)化,在數(shù)碼相機(jī)、智能手機(jī)、平板電腦等設(shè)備中廣泛采用。SD
sd卡是什么有什么用途 TF卡和SD卡有什么區(qū)別SD卡(Secure Digital Card)是一種便攜式存儲(chǔ)設(shè)備,一般用于存儲(chǔ)照片、視頻、音頻和其他文件。SD卡是由
sd卡是什么有什么用途 TF卡和SD卡有什么區(qū)別和用途 SD卡,全稱Secure Digital Card,是一種以閃存為介質(zhì)的可插拔式存儲(chǔ)卡。它是由SanDisk、Panasonic和Toshiba聯(lián)合研發(fā)的,于1999年首次發(fā)布
TF卡和SD卡的區(qū)別有哪些?TF卡和SD卡在物理尺寸和一些應(yīng)用領(lǐng)域上存在差異,但在技術(shù)規(guī)格上,特別是MicroSD卡,它們之間的差異相對(duì)較小。選擇TF卡還是SD卡通常取
|
評(píng)論