新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 基于SD卡的BMS海量歷史數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)

基于SD卡的BMS海量歷史數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)

作者: 時(shí)間:2011-03-18 來源:網(wǎng)絡(luò) 收藏


2 軟件程序
軟件主要難點(diǎn)是卡驅(qū)動(dòng)與FAT32文件的結(jié)合方式。FAT32文件的實(shí)現(xiàn)有一定的復(fù)雜性,如果設(shè)計(jì)地不好不但會(huì)浪費(fèi)大量CPU資源,而且可能造成數(shù)據(jù)丟失、覆蓋等嚴(yán)重后果。采用傳統(tǒng)數(shù)據(jù)流式程序設(shè)計(jì)思想實(shí)現(xiàn)起來比較困難,Debug也很不方便。本設(shè)計(jì)引用現(xiàn)代Windows操作慣用的層次模型劃分的方法開發(fā)了一套卡的FAT32文件系統(tǒng)協(xié)議包,具有層次分明、結(jié)構(gòu)緊湊、可移植性強(qiáng)及邏輯清晰的特點(diǎn)。
2.1 FAT32文件系統(tǒng)
FAT32是由Microsoft設(shè)計(jì)并運(yùn)用得非常成功的文件系統(tǒng)。至今FAT32依然占據(jù)著Microsoft Windows文件系統(tǒng)中重要的地位。FAT32改進(jìn)了FAT16和FAT12不支持大分區(qū)、單位簇的容量過大以致空間急劇浪費(fèi)等缺點(diǎn)。由引導(dǎo)扇區(qū)、FAT表、根目錄和數(shù)據(jù)區(qū)4大部分組成。圖3標(biāo)出了FAT32分區(qū)的基本構(gòu)成,F(xiàn)AT2是FAT1的備份,用于在FAT1損壞時(shí)修復(fù)。

本文引用地址:http://m.butianyuan.cn/article/179434.htm

8.JPG


FAT表(File Allocation Table文件分配表)記錄文件在介質(zhì)上的放置位置,即簇號(hào)序列。每個(gè)表項(xiàng)記錄的簇號(hào)都是32位的,故這個(gè)方法稱為FAT32。表2所示是一段簡(jiǎn)化的FAT表,第2簇記錄根目錄存放位置,第3簇記錄某文件的下一簇號(hào)(該文件從本簇即第3簇開始存放)是6號(hào),第6號(hào)又記錄接下來的簇號(hào)……,至到標(biāo)記FF表示文件結(jié)束。同樣道理從第12簇開始存放另一個(gè)文件,該文件在第93簇存放結(jié)束。從表
中可以看出文件是可以非連續(xù)存放的,這樣可以充分利用介質(zhì)的空間,并且可以保證存放采集數(shù)據(jù)不會(huì)發(fā)生重疊,沖掉以前數(shù)據(jù)。表3列出了FAT表各記錄項(xiàng)的取值含義。

9.JPG

10.JPG


系統(tǒng)在一個(gè)文件時(shí)先計(jì)算出需要幾個(gè)簇的空間來存放,再?gòu)腇AT表中找出這相應(yīng)個(gè)數(shù)的空閑簇,并其修改記錄項(xiàng)的取值使之首尾連成一串。然后在目錄表中創(chuàng)建一個(gè)新的文件項(xiàng),并記錄它在介質(zhì)上存放的首簇號(hào)。這樣在讀文件時(shí),只要直接從目錄表中找到該文件的記錄項(xiàng),獲取它的首簇號(hào)就能把文件讀出來了。FAT32文件系統(tǒng)目錄的記錄項(xiàng)的結(jié)構(gòu)定義如表4所示。

12.JPG


2.2 SD卡SPI通信協(xié)議
發(fā)送給SD卡的命令采用6字節(jié)的格式如表5所示。命令的第1個(gè)字節(jié)可通過將6位命令碼與16進(jìn)制碼0x40進(jìn)行或運(yùn)算得到。如果命令需要,則在接下來的4個(gè)字節(jié)中提供一個(gè)32位的參數(shù),最后1個(gè)字節(jié)包含了從第1個(gè)字節(jié)到第5個(gè)字節(jié)的CRC-7校驗(yàn)和。表6列出了部分SD存儲(chǔ)卡SPI命令的解釋。

13.JPG



評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉