最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

在STM32F103XX微處理器的基礎(chǔ)上的Micr0 SD卡讀寫(xiě)的實(shí)現(xiàn)

出處:徐建功,趙 捷,李 偉,田 杰 發(fā)布于:2023-06-21 13:48:25

O  引言

STM32F103xx系列微控制器:工作頻率為72MHz,片上集成了高速存儲(chǔ)器(Flash多可達(dá)512kB,SRAM多可達(dá)64kB),和通過(guò)APB總線(xiàn)連接的豐富和增強(qiáng)的外設(shè)和I/O。所有的設(shè)備都提供標(biāo)準(zhǔn)的通信接口(多可有2個(gè)IIC接口,3個(gè)SPI接口和5個(gè)USART接口)。片上還帶有2個(gè)12位的ADC,一個(gè)12位的雙通道DAC,11各16位計(jì)時(shí)器。

由于遠(yuǎn)程智能心臟檢測(cè)儀器對(duì)采集到的心電信號(hào)是實(shí)時(shí)處理與存儲(chǔ)的。因此,本文在STM32F103XX微處理器的基礎(chǔ)上,采用Micro SD存儲(chǔ)卡實(shí)現(xiàn)了關(guān)鍵心電信號(hào)的存儲(chǔ)。

1  硬件電路設(shè)計(jì)

1.1  STM32F103xx微處理器簡(jiǎn)介

STM32F103XX基于高性能32位RISC的ARMCortex-M3核,工作頻率為72 MHz。片上集成了高速存儲(chǔ)器,通過(guò)APB總線(xiàn)連接了豐富、增強(qiáng)的外設(shè)和I/O。所有的設(shè)備都提供標(biāo)準(zhǔn)的通信接口。

主要特點(diǎn)有:內(nèi)核:ARM32位Cortex-M3 CPU,工作頻率72MHz,1.25DMIPS/MHz。單周期乘法和硬件除法。存儲(chǔ)器:片上集成32-512KB的Flash存儲(chǔ)器。6-64KB的SRAM存儲(chǔ)器。時(shí)鐘、復(fù)位和電源管理:2.0-3.6V的電源供電和I/O接口的驅(qū)動(dòng)電壓。POR、PDR和課編程的電壓探測(cè)器(PVD)。4-16MHz的晶振。內(nèi)嵌出廠前調(diào)校的8MHz RC振蕩電路。內(nèi)部40 kHz的RC振蕩電路。用于CPU時(shí)鐘的PLL。帶校準(zhǔn)用于RTC的32kHz的晶振。低功耗:3種低功耗模式:休眠,停止,待機(jī)模式。為RTC和備份寄存器供電的VBAT。調(diào)試模式:串行調(diào)試(SWD)和JTAG接口。

1.2  SPI協(xié)議

由于SPI(setial peripheralinterface)總線(xiàn)占用的接口線(xiàn)少,通信效率高,并且支持大部分處理器芯片,因而是一種理想的選擇。SPI是利用4根信號(hào)線(xiàn)進(jìn)行通信的串行接口協(xié)議,包括主/從兩種模式。4個(gè)接口信號(hào)為:串行數(shù)據(jù)輸入(MISO,主設(shè)備輸入、從設(shè)備輸出)、串行數(shù)據(jù)輸出(MOSI,主設(shè)備輸出、從設(shè)備輸入)、移位時(shí)鐘(SCK)、低電平有效的從設(shè)備使能信號(hào)(cs)。一旦檢測(cè)到主設(shè)備的時(shí)鐘信號(hào),數(shù)據(jù)開(kāi)始傳輸。

1.3  Micro SD卡簡(jiǎn)介

Micro SD卡的接口可以支持2種操作模式:SDIO模式和SPI模式。設(shè)計(jì)者可以選擇其中任一模式。SDIO模式允許4線(xiàn)的高速數(shù)據(jù)傳輸,傳輸速率高,但是大部分微控制器無(wú)此接口,使用軟件模擬協(xié)議復(fù)雜。SPI模式使用簡(jiǎn)單通用的SPI通道接口,即可實(shí)現(xiàn)數(shù)據(jù)傳輸,目前大多數(shù)微控制器都提供SPI接口。SPI模式相對(duì)于SDIO模式的缺點(diǎn)是損失了傳輸速度,但目前微處理器的處理速度越來(lái)越高,利用SPI模式大多都能滿(mǎn)足工程需要。

Micro SD卡要求用全雙工、8位的SPI操作。STM32F103XX微處理器和Micro SD卡之間只需要4根信號(hào)線(xiàn)就可以完成數(shù)據(jù)的讀/寫(xiě),當(dāng)CS片選信號(hào)線(xiàn)為低電平時(shí),微處理器開(kāi)始所有的總線(xiàn)傳輸。數(shù)據(jù)從微處理器的MOSI引腳同步輸入Micro SD卡的DI引腳,并由Micro SD卡的DO線(xiàn)同步輸入微處理器的MISO引腳,數(shù)據(jù)在CLK信號(hào)的上升沿同步輸入和輸出。另外,使用SPI模式時(shí),為了防止在無(wú)卡接入或卡驅(qū)動(dòng)器呈高阻態(tài)時(shí)總線(xiàn)懸空,根據(jù)SD卡規(guī)范,這些信號(hào)需要在微處理器端用10~100 kΩ的上拉電阻,其硬件連接電路。



2  軟件設(shè)計(jì)

軟件設(shè)計(jì)一部分是基于STM32固件庫(kù),該固件庫(kù)針對(duì)基于ARM的32位微處理STM32F101XX和STM32F103XX。其中,包括程序、數(shù)據(jù)結(jié)構(gòu)和覆蓋所有外設(shè)特性的宏單元,還包括設(shè)備驅(qū)動(dòng)的描述以及每個(gè)外圍模塊的實(shí)例。因此,使用該固件庫(kù)可以節(jié)省許多時(shí)間,將更多的時(shí)間花費(fèi)在編程方面,從而減少了在應(yīng)用開(kāi)發(fā)中的綜合開(kāi)銷(xiāo)。

2.1  Micro SD卡初始化為SPI總線(xiàn)模式

STM32F103XX微處理器包括2個(gè)串行外設(shè)接口(SPI),可以方便地對(duì)Micro SD卡接口進(jìn)行配置。首先對(duì)要用到的SPIl接口采用命令SPI_In-it(SPIl,&SPI_InitStructure)進(jìn)行初始化,并使能SPIl。

剛上電時(shí),Micro SD卡缺省使用專(zhuān)有的SD總線(xiàn)協(xié)議,將Micro SD卡切換到SPI模式,主機(jī)需要發(fā)出命令CMDO(GO-IDLE-STATE)。Micro SD卡會(huì)檢測(cè)到SPI模式選擇信息,因?yàn)榭ㄟx擇(CS)引腳在該命令和其他所有SPI命令傳送過(guò)程中都保持為低電平,故MicroSD卡以R1作為響應(yīng),空閑狀態(tài)位被置為高電平,此時(shí)MicrlO SD卡進(jìn)入空閑狀態(tài),此階段的SPI時(shí)鐘頻率不能超過(guò)400 kHz。然后發(fā)送命令CMD59決定是否開(kāi)啟CRC校驗(yàn),設(shè)置讀/寫(xiě)塊數(shù)據(jù)長(zhǎng)度,延遲8個(gè)時(shí)鐘后返回。


2.2  Micro SD卡讀寫(xiě)單塊數(shù)據(jù)

從Micro SD卡中讀取一個(gè)數(shù)據(jù)塊只需要主機(jī)發(fā)送CMD17(MSD_READ_SINGLE_BLOCK)命令,并將起始地址作為參數(shù)(此地址必須和介質(zhì)上一個(gè)塊的起始位置對(duì)齊),然后Micro SD卡會(huì)驗(yàn)證這個(gè)字節(jié)地址,并以一個(gè)R1命令作為響應(yīng)。在完成Micro SD卡讀取操作后,先發(fā)送一個(gè)起始數(shù)據(jù)命令,接著發(fā)送固定數(shù)量的數(shù)據(jù),是2個(gè)字節(jié)CRC校驗(yàn)。

從Micro SD卡中寫(xiě)入一個(gè)數(shù)據(jù)塊與讀取數(shù)據(jù)塊相似。主機(jī)發(fā)送CMD24(MSD_WRITE_BLOCK)命令啟動(dòng)寫(xiě)操作過(guò)程,Micro SD卡將以R1命令響應(yīng)格式進(jìn)行應(yīng)答。如果命令響應(yīng),則進(jìn)行寫(xiě)操作,主機(jī)發(fā)送起始令牌,然后發(fā)送固定數(shù)量的數(shù)據(jù)字節(jié)(512 B),返回一個(gè)數(shù)據(jù)響應(yīng)令牌,指示需要寫(xiě)入的數(shù)據(jù)是否完成,是2個(gè)字節(jié)的CRC校驗(yàn),寫(xiě)入一個(gè)數(shù)據(jù)塊由函數(shù)u8 MSD_WriteBuffer來(lái)完成,向Micro SD卡寫(xiě)數(shù)據(jù)函數(shù)中的參數(shù)與向Micro sD卡讀數(shù)據(jù)函數(shù)中的參數(shù)相同。


2.3  Micro SD卡的文件存儲(chǔ)

由于需要Micro SD卡上的數(shù)據(jù)能夠在計(jì)算機(jī)上直接讀/寫(xiě),所以Micro SD卡文件系統(tǒng)必須與計(jì)算機(jī)的文件系統(tǒng)一致。目前常用的文件系統(tǒng)主要有微軟的FATl2,F(xiàn)ATl6,F(xiàn)AT32,NTFS,以及Linux系統(tǒng)下的 EXT2,EXT3等。由于微軟Windows的廣泛應(yīng)用,在當(dāng)前的消費(fèi)類(lèi)電子產(chǎn)品中,用得多的還是FAT文件系統(tǒng),如U盤(pán)、MP3,MP4,數(shù)碼相機(jī)等,所以找到一款容易移植和使用、占用硬件資源相對(duì)較小而功能又強(qiáng)大的FAT開(kāi)源文件系統(tǒng),對(duì)于單片機(jī)系統(tǒng)設(shè)計(jì)者來(lái)說(shuō)是很重要的。它完全用標(biāo)準(zhǔn)C語(yǔ)言編寫(xiě),所以具有良好的硬件平臺(tái)獨(dú)立性,可以移植到多種平臺(tái)而只需做簡(jiǎn)單的修改。需要使用者編寫(xiě)移植代碼的是FAT FS提供的底層接口,包括存儲(chǔ)介質(zhì)讀/寫(xiě)接口DiskIO和供給文件創(chuàng)建修改時(shí)間的實(shí)時(shí)時(shí)鐘RTC。

FAT FS Module一開(kāi)始就是為了能在不同的單片機(jī)上使用而設(shè)計(jì)的,所以具有良好的層次結(jié)構(gòu)。頂層是應(yīng)用層,使用者無(wú)需理會(huì)FAT FSModule的內(nèi)部結(jié)構(gòu)和復(fù)雜的FAT協(xié)議,只需要調(diào)用Module提供給用戶(hù)的一系列應(yīng)用接口函數(shù),如f-open,f-read,f- write,f-Close等就可以像在PC上讀/寫(xiě)文件那樣簡(jiǎn)單。

2.3.1  文件(或目錄)創(chuàng)建

在Micro SD卡上創(chuàng)建文件(或目錄)的過(guò)程就是在文件目錄表中申請(qǐng)登記項(xiàng)的過(guò)程。首先程序要檢測(cè)文件目錄表(FDT)中是否已經(jīng)存在該文件,然后申請(qǐng)空閑的FDT 表項(xiàng)。如果存在同名的文件,則返回,創(chuàng)建文件(或目錄)失敗。申請(qǐng)F(tuán)DT表項(xiàng)成功后,程序會(huì)檢測(cè)磁盤(pán)剩余的空間是否滿(mǎn)足新創(chuàng)文件數(shù)據(jù)長(zhǎng)度的需要,而后尋找個(gè)空閑的簇號(hào),并修改對(duì)應(yīng)的FDT表項(xiàng)。

2.3.2  文件的讀寫(xiě)

Micro SD卡上的文件都是以簇(Cluster)為單位存取的。當(dāng)讀取Micro SD卡上的文件時(shí),首先要根據(jù)文件名查找到文件加目錄登記項(xiàng)(F-DT),根據(jù)文件中目錄登記項(xiàng)中起始簇號(hào)即可以找到文件在數(shù)據(jù)DATA區(qū)中的簇內(nèi)容,并且可以在FAT表中找到第二個(gè)簇號(hào)。根據(jù)第二個(gè)簇號(hào)又能讀取第二簇的數(shù)據(jù)和FAT中第三個(gè)簇號(hào),這樣就可以讀取全部文件數(shù)據(jù)。寫(xiě)文件時(shí)要保證 FAT1和FAT2內(nèi)容的一致性,即要對(duì)兩個(gè)FAT進(jìn)行同樣的寫(xiě)操作。在文件的一簇填寫(xiě)0xFFFFH 表示文件結(jié)束。

2.3.3  文件(或目錄)的刪除

刪除文件的操作需要提供函數(shù)DeleteFile()刪除文件的文件名和擴(kuò)展名。刪除文件時(shí),不涉及數(shù)據(jù)區(qū)的操作,只須在文件的目錄登記項(xiàng)(FDT)上做一個(gè)刪除標(biāo)記,并把文件在FAT表中所占用的簇標(biāo)記為“空簇”。

程序先在FDT中查找是否有同名文件,如果存在同名文件,則將在對(duì)應(yīng)的FDT表項(xiàng)中個(gè)字節(jié)內(nèi)容改為0xE5H,表示該FDT表項(xiàng)的內(nèi)容已經(jīng)被刪除,新建文件可以使用該表項(xiàng)。還需要將FAT表中所有文件相關(guān)簇項(xiàng)目的內(nèi)容都改成Ox0000,釋放出所對(duì)應(yīng)的Micro SD卡磁盤(pán)空間。若未找到同名文件,則返回一個(gè)錯(cuò)誤值。程序先在FDT中查找是否有同名目錄項(xiàng),如果存在同名目錄項(xiàng),則將對(duì)應(yīng)的FDT表項(xiàng)中個(gè)字節(jié)內(nèi)容改為0xE5H。然后讀出對(duì)應(yīng)目錄的起始簇號(hào),在該簇號(hào)中去刪除該目錄下的所有文件。

3  結(jié)語(yǔ)

該方案已經(jīng)成功應(yīng)用于遠(yuǎn)程智能心臟檢測(cè)儀器中,為心臟檢測(cè)儀器的數(shù)據(jù)采集提供了一種非易失性存儲(chǔ)器的解決方案,遠(yuǎn)程智能心臟檢測(cè)儀器采集得到的數(shù)據(jù)信息以FAT32標(biāo)準(zhǔn)文件的格式保存于Micro sD卡中,數(shù)據(jù)文件可在Windows下讀取,在保證高性?xún)r(jià)比的同時(shí),又方便了數(shù)據(jù)的進(jìn)一步分析和處理。

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://www.udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線(xiàn)人工客服

買(mǎi)家服務(wù):
賣(mài)家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線(xiàn)時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!