a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > FatFS的水動力實驗數據存儲系統設計

FatFS的水動力實驗數據存儲系統設計

作者: 時間:2013-04-23 來源:網絡 收藏

3 系統軟件設計
系統采用的軟件流程圖如圖4所示。

本文引用地址:http://www.j9360.com/article/148053.htm

d.JPG


3.1 MicroSD接口函數
接口函數依據通信協議V2.0編寫,需要SDIO口函數以及底層接口函數的支持。ST公司提供的庫函數中包括了SDIO單元的操作,能很快實現SD卡模式的讀寫操作。其中,最重要的是2個函數:一個是SD_WriteBlock函數,向SD卡寫入數據;另外一個是SD_Read Bl ock函數,用于讀取SD卡上面的數據。讀/寫扇區結構圖如圖5和圖6所示。

e.JPG


3.2 USB接口函數
系統在工程中加入ST公司提供的USB函數,在主函數中調用即可完成USB的初始化過程。在中斷映射單元中,將可能產生中斷的USB事件映射到3個不同的NVIC請求線上:
◆USB低優先級中斷(通道20):可由所有USB事件觸發(正確傳輸,USB復位等),固件在處理中斷前應當首先確定中斷源。
◆USB高優先級中斷(通道19):僅能由同步和雙緩沖批量傳輸的正確傳輸事件觸發,目的是保證最大的傳輸速率。
◆USB喚醒中斷(通道42):由USB掛起模式的喚醒事件觸發。
USB接口和SDIO接口都使用了STM32的嵌套向量中斷控制器(NVIC),需要對使用搶占式中斷優先級和響應式中斷優先級進行配置。設置SDIO接口的中斷優先級最高,即搶占式優先級為0,響應式優先級為0。而USB的搶占式中斷優先級為1,響應式優先級依次降低。USB接入Host流程圖如圖7所示。

f.JPG


3.3 RTC模塊函數
在本系統中,對的計數器寄存器(RTC_CNTH/RTC_CNTL)和備份數據寄存器(BKP_DRx)進行配置,前者的值表示了基于0時0分0秒數值的累加進位,通過時間處理函數,獲得當前日歷和時刻信息;后者在于系統上電后,判斷是否需要重新進行時鐘初始配置,如先寫入0xA5A,通過看寄存器是否還是0xA5A,判斷是否掉過電。如果掉過電,則需要對系統時間進行校正。

4 文件系統的移植
4.1 文件系統結構
本系統采用基于 V0.09的文件系統。文件系統的作用是保證其讀寫的數據能夠被大多數通用設備識別。例如使用FAT文件系統,通過USB設備可以對存儲的文件進行操作,或者取下MicroSD卡后使用標準的讀卡器在PC機上讀出。當前應用廣泛的嵌入式文件系統有μC/ FS、開源的EFSL(Embedded File System Library)與FatFS等。本設計中的FatFS使用ANSI C編寫,具有很好的硬件平臺獨立性,同時層次結構非常清晰,如圖8所示。最頂層是應用層,這一層為用戶提供一系列API甬數,如f_open、f_close、f_read、f_write等,用戶可以像C文件一樣讀/寫FAT文件。中間層FatFS Module完整地實現了FAT協議,用戶無需對此進行任何修改。最底層是在移植過程中需要處理的接口,包括存儲媒介讀/寫接口Lowlevel disk I/O和文件創建/修改時間時所需的實時時鐘。用戶根據具體的硬件編寫程序,填充相關函數,即可使FatFS文件系統應用在具體的嵌入式平臺設備上。

g.JPG


4.2 FatFS移植
FatFS的最新版本是V0.09。FatFs的主程序包含5個文件,即fdiskio.h、fconf.h、ff.c、ff.h和integer.h。移植中,還需要添加diskio.c文件與diskio.h構成底層的硬件I/O。ff.c和ff.h是主要的應用函數,上層的API函數都在其中;ffconI.h主要涉及FatFS的配置和裁減;而integer.h中定義了FatFS軟件所使用的各種數據類型。移植FatFS的過程中不需要對diskio.h和ff.c進行修改。移植工作首先核實integer.h中的數據類型,定義與數據類型是否相符。其次,實現diskio.c中6個主要函數,最后在ffconf.h中對文件系統的裁減配置。diskio.c包含的6個接口函數為:disk_initialize、disk_status、disk ioctl、disk read、disk write和disk_fat time。具體移植過程如下:
DSTATUS disk_initialize(BYTE drv)為存儲介質初始化函數。drv是存儲介質號碼,本設計中是SD卡的初始化函數,只需支持一個存儲介質,因此drv設為0。執行無誤,返回0值。
DSTATUS disk_status(BYTE drv)為存儲介質狀態檢測函數。檢測是否支持當前的存儲介質。事實上,只要drv為0,系統就默認為支持,執行無誤返回0。
DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE count)為讀扇區函數。drv設為0,*burf指向存儲的數據,sector是讀的起始扇區,count是需要讀的扇區數目。將SD卡讀數據接口函數根據參數填寫、調用,函數執行無誤返回0,錯誤則返回非0。

晶振相關文章:晶振原理


評論


相關推薦

技術專區

關閉