《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > 基于STM32F103XX微處理器的Micr0 SD卡讀寫
基于STM32F103XX微處理器的Micr0 SD卡讀寫
徐建功,趙 捷,李 偉,田 杰
摘要: 基于STM32F103XX微控制器的遠程智能心臟檢測儀采用Micro SD作為存儲介質保存特定的心電信號。所存Micro SD卡中的存儲數據要能夠在計算機上直接存取,需要存儲的數據以FAT32文件格式寫入Micro SD卡。研究了使用STM32F103XX微處理器,采用SPI模式與Micro SD接口,將數據寫入Micro SD的軟件方法及硬件設計。采用的FAT開源文件系統FATFS是專門為小型嵌入式系統而設計的,容易移值和使用,占用硬件資源相對較小而且功能強大。
Abstract:
Key words :

O 引言
    由于遠程智能心臟檢測儀器對采集到的心電信號是實時處理與存儲的。因此,本文在STM32F103XX微處理器的基礎上,采用Micro SD存儲卡實現了關鍵心電信號的存儲。

1 硬件電路設計
1.1 STM32F103xx微處理器簡介
    STM32F103XX基于高性能32位RISC的ARMCortex-M3核,工作頻率為72 MHz。片上集成了高速存儲器,通過APB總線連接了豐富、增強的外設和I/O。所有的設備都提供標準的通信接口。
1.2 SPI協議
    由于SPI(setial peripheralinterface)總線占用的接口線少,通信效率高,并且支持大部分處理器芯片,因而是一種理想的選擇。SPI是利用4根信號線進行通信的串行接口協議,包括主/從兩種模式。4個接口信號為:串行數據輸入(MISO,主設備輸入、從設備輸出)、串行數據輸出(MOSI,主設備輸出、從設備輸入)、移位時鐘(SCK)、低電平有效的從設備使能信號(cs)。SPI最大的特點是由主設備時鐘信號的出現與否來確定主/從設備間的通信。一旦檢測到主設備的時鐘信號,數據開始傳輸。
1.3 Micro SD卡簡介
    Micro SD卡的接口可以支持2種操作模式:SDIO模式和SPI模式。設計者可以選擇其中任一模式。SDIO模式允許4線的高速數據傳輸,傳輸速率高,但是大部分微控制器無此接口,使用軟件模擬協議復雜。SPI模式使用簡單通用的SPI通道接口,即可實現數據傳輸,目前大多數微控制器都提供SPI接口。SPI模式相對于SDIO模式的缺點是損失了傳輸速度,但目前微處理器的處理速度越來越高,利用SPI模式大多都能滿
足工程需要。
    Micro SD卡要求用全雙工、8位的SPI操作。STM32F103XX微處理器和Micro SD卡之間只需要4根信號線就可以完成數據的讀/寫,當CS片選信號線為低電平時,微處理器開始所有的總線傳輸。數據從微處理器的MOSI引腳同步輸入Micro SD卡的DI引腳,并由Micro SD卡的DO線同步輸入微處理器的MISO引腳,數據在CLK信號的上升沿同步輸入和輸出。在每個數據傳輸的結尾還必須提供8個額外的時鐘,以允許Micro SD卡完成任何未完結的操作。另外,使用SPI模式時,為了防止在無卡接入或卡驅動器呈高阻態時總線懸空,根據SD卡規范,這些信號需要在微處理器端用10~100 kΩ的上拉電阻,其硬件連接電路如圖1所示。

a.JPG

2 軟件設計
    軟件設計一部分是基于STM32固件庫,該固件庫針對基于ARM的32位微處理STM32F101XX和STM32F103XX。其中,包括程序、數據結構和覆蓋所有外設特性的宏單元,還包括設備驅動的描述以及每個外圍模塊的實例。因此,使用該固件庫可以節省許多時間,將更多的時間花費在編程方面,從而減少了在應用開發中的綜合開銷。
2.1 Micro SD卡初始化為SPI總線模式
    STM32F103XX微處理器包括2個串行外設接口(SPI),可以方便地對Micro SD卡接口進行配置。首先對要用到的SPIl接口采用命令SPI_In-it(SPIl,&SPI_InitStructure)進行初始化,并使能SPIl。
    剛上電時,Micro SD卡缺省使用專有的SD總線協議,將Micro SD卡切換到SPI模式,主機需要發出命令CMDO(GO-IDLE-STATE)。Micro SD卡會檢測到SPI模式選擇信息,因為卡選擇(CS)引腳在該命令和其他所有SPI命令傳送過程中都保持為低電平,故MicroSD卡以R1作為響應,空閑狀態位被置為高電平,此時MicrlO SD卡進入空閑狀態,此階段的SPI時鐘頻率不能超過400 kHz。Micro SD卡進入SPI模式后,主機應該先發一條初始化指令CMD1(ActiVates the card process),此時可將SPI頻率設置為高速模式。然后發送命令CMD59決定是否開啟CRC校驗,設置讀/寫塊數據長度,最后延遲8個時鐘后返回。Micro SD初始化流程如圖2所示。
b.JPG

2.2 Micro SD卡讀寫單塊數據
    從Micro SD卡中讀取一個數據塊只需要主機發送CMD17(MSD_READ_SINGLE_BLOCK)命令,并將起始地址作為參數(此地址必須和介質上一個塊的起始位置對齊),然后Micro SD卡會驗證這個字節地址,并以一個R1命令作為響應。在完成Micro SD卡讀取操作后,先發送一個起始數據命令,接著發送固定數量的數據,最后是2個字節CRC校驗。讀取一個數據塊由函數u8 MSD_ReadBlock(u8*pBuffer,u32 ReadAddr,u16 NumByteToRead)來完成,pBuffer是一個指針,它指向接受Micro SD卡數據內存緩沖區的地址,ReadAddr是要讀取數據在Micro SD卡中的地址,NumByteToRead是要讀取的字節數,一般為512 B。
    從Micro SD卡中寫入一個數據塊與讀取數據塊相似。主機發送CMD24(MSD_WRITE_BLOCK)命令啟動寫操作過程,Micro SD卡將以R1命令響應格式進行應答。如果命令響應,則進行寫操作,主機發送起始令牌,然后發送固定數量的數據字節(512 B),返回一個數據響應令牌,指示需要寫入的數據是否完成,最后是2個字節的CRC校驗,寫入一個數據塊由函數u8 MSD_WriteBuffer(u8*pBuffer,u32 WriteAddr,u32 Num-ByteToWrite)來完成,向Micro SD卡寫數據函數中的參數與向Micro sD卡讀數據函數中的參數相同。讀/寫單塊數據流程如圖3所示。
c.JPG

2.3 Micro SD卡的文件存儲
    由于需要Micro SD卡上的數據能夠在計算機上直接讀/寫,所以Micro SD卡文件系統必須與計算機的文件系統一致。目前常用的文件系統主要有微軟的FATl2,FATl6,FAT32,NTFS,以及Linux系統下的 EXT2,EXT3等。由于微軟Windows的廣泛應用,在當前的消費類電子產品中,用得最多的還是FAT文件系統,如U盤、MP3,MP4,數碼相機等,所以找到一款容易移植和使用、占用硬件資源相對較小而功能又強大的FAT開源文件系統,對于單片機系統設計者來說是很重要的。所以在Micro SD卡存儲機制上,移植了FAT FS文件系統。FAT FS是一種完全免費開源的FAT文件系統模塊,是專門為小型嵌入式系統而設計的。它完全用標準C語言編寫,所以具有良好的硬件平臺獨立性,可以移植到多種平臺而只需做簡單的修改。需要使用者編寫移植代碼的是FAT FS提供的底層接口,包括存儲介質讀/寫接口DiskIO和供給文件創建修改時間的實時時鐘RTC。
    FAT FS Module一開始就是為了能在不同的單片機上使用而設計的,所以具有良好的層次結構,如圖4所示。最頂層是應用層,使用者無需理會FAT FSModule的內部結構和復雜的FAT協議,只需要調用Module提供給用戶的一系列應用接口函數,如f-open,f-read,f- write,f-Close等就可以像在PC上讀/寫文件那樣簡單。
2.3.1 文件(或目錄)創建
    在Micro SD卡上創建文件(或目錄)的過程就是在文件目錄表中申請登記項的過程。首先程序要檢測文件目錄表(FDT)中是否已經存在該文件,然后申請空閑的FDT 表項。如果存在同名的文件,則返回,創建文件(或目錄)失敗。申請FDT表項成功后,程序會檢測磁盤剩余的空間是否滿足新創文件數據長度的需要,而后尋找第一個空閑的簇號,并修改對應的FDT表項。根據文件的大小,不斷循環查找下一個空閑的簇,同時修改當前FAT項目為下一個簇號,直到最后一個FAT項寫入0xFFFFH,以表示文件結束。新建目錄時,只需要提供函數CreateDir()函數新建目錄的目錄名,其過程和創建文件一樣,只是不需要提供數據相關的信息。
2.3.2 文件的讀寫
    Micro SD卡上的文件都是以簇(Cluster)為單位存取的。當讀取Micro SD卡上的文件時,首先要根據文件名查找到文件加目錄登記項(F-DT),根據文件中目錄登記項中起始簇號即可以找到文件在數據DATA區中的第一簇內容,并且可以在FAT表中找到第二個簇號。根據第二個簇號又能讀取第二簇的數據和FAT中第三個簇號,這樣就可以讀取全部文件數據。寫文件時要保證 FAT1和FAT2內容的一致性,即要對兩個FAT進行同樣的寫操作。當要在已有的文件中增添數據時,程序首先要分析原有文件最后一個扇區還有多少剩余空閑字節數,以便新添加數據與這最后一個扇區匯合,超過扇區的數據在申請新的空閑FAT表項時,其過程與新建文件類似。在文件的最后一簇填寫0xFFFFH 表示文件結束。
2.3.3 文件(或目錄)的刪除
    刪除文件的操作需要提供函數DeleteFile()刪除文件的文件名和擴展名。刪除文件時,不涉及數據區的操作,只須在文件的目錄登記項(FDT)上做一個刪除標記,并把文件在FAT表中所占用的簇標記為“空簇”。
    程序先在FDT中查找是否有同名文件,如果存在同名文件,則將在對應的FDT表項中第一個字節內容改為0xE5H,表示該FDT表項的內容已經被刪除,新建文件可以使用該表項。最后還需要將FAT表中所有文件相關簇項目的內容都改成Ox0000,釋放出所對應的Micro SD卡磁盤空間。若未找到同名文件,則返回一個錯誤值。刪除目錄的操作只需要提供函數DeleteDir()刪除目錄的目錄名。程序先在FDT中查找是否有同名目錄項,如果存在同名目錄項,則將對應的FDT表項中第一個字節內容改為0xE5H。然后讀出對應目錄的起始簇號,在該簇號中去刪除該目錄下的所有文件。

3 結語
    該方案已經成功應用于遠程智能心臟檢測儀器中,為心臟檢測儀器的數據采集提供了一種非易失性存儲器的解決方案,遠程智能心臟檢測儀器采集得到的數據信息以FAT32標準文件的格式保存于Micro sD卡中,數據文件可在Windows下讀取,在保證高性價比的同時,又方便了數據的進一步分析和處理。
 

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
美玉足脚交一区二区三区图片| 国产精品综合不卡av| 午夜亚洲视频| 中文精品视频| 欧美在线999| 国产精品久久久久久亚洲毛片 | 欧美日韩在线免费观看| 久久久噜噜噜久久| 久久国产精品久久久| 免费成人高清在线视频| 国产精品每日更新| 午夜老司机精品| 美国成人直播| 日韩午夜激情| 久久久久国产一区二区三区四区| 亚洲精品国产视频| 一本色道久久综合狠狠躁篇怎么玩 | 免费观看成人鲁鲁鲁鲁鲁视频 | 久久精品综合一区| 久久精品国语| 久久久久久黄| 久久这里有精品视频| 久久人人爽人人爽| 麻豆精品视频在线观看| 可以看av的网站久久看| 美玉足脚交一区二区三区图片| 狼人天天伊人久久| 欧美大片免费观看| 欧美日韩不卡合集视频| 欧美日韩在线一二三| 每日更新成人在线视频| 亚洲在线一区二区三区| 午夜精品视频在线观看一区二区| 午夜免费电影一区在线观看| 午夜亚洲激情| 亚洲人成高清| 中文欧美日韩| 欧美一区二区在线免费播放| 久久久久久网址| 欧美成人精品三级在线观看| 欧美日韩第一区| 国产精品裸体一区二区三区| 国产亚洲激情| 亚洲激情六月丁香| 亚洲特黄一级片| 久久福利资源站| 亚洲伦理在线观看| 亚洲永久在线| 可以免费看不卡的av网站| 欧美激情一区二区三区在线| 欧美天天视频| 韩国在线一区| 日韩亚洲欧美在线观看| 亚洲欧美久久久| 亚洲精品乱码久久久久久按摩观| 中文一区二区| 久久精品人人做人人爽电影蜜月| 欧美本精品男人aⅴ天堂| 欧美午夜电影在线观看| 国产在线日韩| 亚洲免费成人| 欧美怡红院视频一区二区三区| 亚洲精品小视频在线观看| 亚洲欧美一区二区视频| 模特精品裸拍一区| 国产精品成人一区| 黄色日韩在线| 亚洲午夜精品网| 亚洲国产综合在线| 亚洲一区在线直播| 欧美.www| 国产亚洲精品激情久久| 亚洲精品国产精品乱码不99| 亚洲专区免费| 99热这里只有成人精品国产| 久久精品国产一区二区电影 | 伊人伊人伊人久久| 亚洲一区日韩在线| 亚洲精品午夜精品| 久久成人国产| 亚洲中无吗在线| 巨乳诱惑日韩免费av| 国产精品美女一区二区在线观看| 亚洲成色777777女色窝| 性欧美xxxx视频在线观看| 中国日韩欧美久久久久久久久| 久久阴道视频| 国产视频在线一区二区| 一区二区三区.www| 亚洲最新视频在线| 免费在线观看精品| 国语自产精品视频在线看一大j8| 亚洲午夜激情| 亚洲色诱最新| 欧美精品一线| 亚洲电影av| 久久精彩视频| 久久精品最新地址| 国产欧美日韩在线视频| 亚洲天堂成人在线观看| 中国日韩欧美久久久久久久久| 欧美成人中文| 在线观看欧美日本| 久久狠狠亚洲综合| 久久精品日韩| 国产午夜精品理论片a级探花 | 亚洲国产精品久久精品怡红院| 久久国内精品视频| 国产伦精品一区二区三| 亚洲视频www| 亚洲一级一区| 欧美日韩中文字幕在线| 亚洲精品一区在线| 日韩一区二区精品| 欧美国产精品v| 亚洲国内在线| 亚洲精品一区在线观看香蕉| 免费成人av在线看| 亚洲电影免费观看高清| 亚洲精品国产精品乱码不99按摩 | 亚洲精品视频一区| 欧美激情精品久久久| 亚洲欧洲综合另类在线| 亚洲毛片视频| 欧美美女操人视频| 亚洲精品一区二区网址| 亚洲视频在线看| 国产精品久久久91| 亚洲一二三区在线| 性色一区二区| 国产欧美欧洲在线观看| 小黄鸭精品aⅴ导航网站入口| 欧美一区激情| 国产一区二区精品丝袜| 久久国产夜色精品鲁鲁99| 久久综合九九| 亚洲激情影视| 亚洲一区二区成人在线观看| 国产精品久久毛片a| 性欧美18~19sex高清播放| 久久久噜噜噜久久久| 在线日本高清免费不卡| 一本久久精品一区二区| 欧美香蕉视频| 午夜视频久久久| 久久综合九色综合网站| 亚洲激情一区二区三区| 亚洲已满18点击进入久久| 国产精品中文在线| 亚洲成人在线免费| 久久噜噜噜精品国产亚洲综合| 在线精品视频一区二区三四| 日韩一级大片| 国产精品毛片高清在线完整版| 欧美在线精品免播放器视频| 免费观看不卡av| 一区二区三区国产| 久久久精品一区| 亚洲片在线观看| 午夜视频一区| 亚洲电影中文字幕| 亚洲欧美日韩国产精品| 国语精品中文字幕| 亚洲神马久久| 黑人极品videos精品欧美裸| 日韩视频在线观看| 国产精品亚洲产品| 亚洲茄子视频| 国产精品伊人日日| 亚洲精品一区二区三区不| 国产精品久久久久9999| 亚洲国产成人一区| 欧美午夜女人视频在线| 小黄鸭精品密入口导航| 欧美人在线观看| 欧美一区在线看| 欧美日韩亚洲国产精品| 欧美一区二区三区精品| 欧美精品一区二区三区久久久竹菊| 亚洲午夜av电影| 欧美11—12娇小xxxx| 亚洲一区二区三区在线观看视频| 麻豆久久久9性大片| 亚洲影院一区| 欧美精品电影| 欧美一级视频精品观看| 欧美特黄一级| 亚洲精品一区中文| 国产在线麻豆精品观看| 亚洲性图久久| 亚洲国产成人av在线| 欧美在线免费| 在线一区二区视频| 欧美国产第一页| 久久精品亚洲精品| 国产精品入口尤物| 一区二区欧美在线| 在线观看国产精品淫| 久久精品一区| 亚洲亚洲精品在线观看 |