新聞中心

EEPW首頁(yè) > 汽車電子 > 設(shè)計(jì)應(yīng)用 > SD卡在記錄汽車CAN總線數(shù)據(jù)中的應(yīng)用

SD卡在記錄汽車CAN總線數(shù)據(jù)中的應(yīng)用

作者: 時(shí)間:2011-01-13 來(lái)源:網(wǎng)絡(luò) 收藏

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


  初始化完成之后如果要使用默認(rèn)的塊讀寫長(zhǎng)度(512 B),就可以進(jìn)行的讀寫。當(dāng)然,也可用CMD16命令來(lái)設(shè)置的塊讀寫長(zhǎng)度,可以是1B~512 B之間的任意值。但是對(duì)SD卡的寫過(guò)程則要求塊長(zhǎng)度必須為512 B。無(wú)論是SD卡的讀還是寫,都要求在讀寫命令發(fā)送后有數(shù)據(jù)起始令牌FEH,數(shù)據(jù)傳輸結(jié)束有2 B的循環(huán)冗余編碼CRC。本設(shè)計(jì)采用默認(rèn)的塊讀寫長(zhǎng)度。
3.2 FAT32文件系統(tǒng)
  存儲(chǔ)在SD卡中的數(shù)據(jù)為二進(jìn)制數(shù)據(jù),為了使其能為計(jì)算機(jī)所識(shí)別,SD卡文件系統(tǒng)必須與計(jì)算機(jī)的文件系統(tǒng)一致。目前Windows系列操作系統(tǒng)中最常用的文件系統(tǒng)有FAT16、FAT32及NTFS等。由于網(wǎng)絡(luò)的數(shù)據(jù)量大,并且儀需要長(zhǎng)時(shí)間的數(shù)據(jù),所以本設(shè)計(jì)選擇FAT32作為SD卡的文件系統(tǒng),F(xiàn)AT32最大支持單個(gè)文件4 GB容量,滿足數(shù)據(jù)儀的要求。
  FAT32文件系統(tǒng)由系統(tǒng)引導(dǎo)記錄區(qū)、FAT表區(qū)、文件登記表區(qū)和數(shù)據(jù)區(qū)四部分組成。系統(tǒng)引導(dǎo)記錄區(qū)存儲(chǔ)SD卡有關(guān)磁盤的結(jié)構(gòu)信息,包括扇區(qū)字節(jié)數(shù)、FAT表的數(shù)目和總扇區(qū)數(shù)等;FAT表是FAT32文件系統(tǒng)中用于磁盤數(shù)據(jù)(文件)索引和定位引進(jìn)的一種鏈?zhǔn)浇Y(jié)構(gòu),它準(zhǔn)確記錄著已經(jīng)被占用的簇,并為每個(gè)已經(jīng)占用的簇指明存儲(chǔ)后續(xù)內(nèi)容的下一個(gè)簇的簇號(hào)。文件登記表FDT記錄文件的登記項(xiàng),每個(gè)登記項(xiàng)占32 B,記錄了文件的起始簇號(hào)、大小以及創(chuàng)建和最后修改的時(shí)間等;數(shù)據(jù)區(qū)用于存儲(chǔ)文件數(shù)據(jù)。
  SD卡的文件系統(tǒng)主要功能包括創(chuàng)建文件、打開文件、寫文件、讀文件和關(guān)閉文件。在應(yīng)用中,可以根據(jù)實(shí)際情況,增刪以上功能,以簡(jiǎn)化系統(tǒng)。
  考慮數(shù)據(jù)采集對(duì)系統(tǒng)實(shí)時(shí)性的要求, 對(duì)FAT表區(qū)的鏈?zhǔn)浇Y(jié)構(gòu)進(jìn)行簡(jiǎn)化,磁盤的空閑空間是連續(xù)的,采用連續(xù)存儲(chǔ)方式,這樣略去了每次去FAT表搜索空閑簇的過(guò)程,滿足系統(tǒng)對(duì)實(shí)時(shí)性的要求。簡(jiǎn)化后的鏈?zhǔn)浇Y(jié)構(gòu)是直線鏈, 即寫滿一個(gè)扇區(qū)自動(dòng)寫下一個(gè)扇區(qū), 寫滿一個(gè)簇自動(dòng)寫下一個(gè)簇。
3.2.1 文件的創(chuàng)建
  在SD卡上創(chuàng)建文件就是在文件目錄表FDT中申請(qǐng)登記項(xiàng)和向FAT表中的FAT項(xiàng)填寫空閑簇號(hào)的過(guò)程,流程圖如圖4所示。程序首先在系統(tǒng)引導(dǎo)記錄區(qū)獲取SD卡磁盤的結(jié)構(gòu)信息;接著要檢測(cè)文件登記表FDT中是否已經(jīng)存在該文件,如果存在同名的文件,則返回,創(chuàng)建文件失敗;然后申請(qǐng)空閑的FDT表項(xiàng),申請(qǐng)F(tuán)DT 表項(xiàng)成功后,程序會(huì)檢測(cè)磁盤剩余的空間是否滿足新創(chuàng)文件數(shù)據(jù)長(zhǎng)度的需要,然后尋找第一個(gè)空閑的簇號(hào),并修改對(duì)應(yīng)的FDT表項(xiàng)。由于文件都是連續(xù)的,在FAT表中的FAT鏈表是直線鏈即前一簇指向后一簇,根據(jù)文件的大小,向FAT表區(qū)填寫FAT鏈表,直到最后一個(gè)FAT項(xiàng)寫入0x0FFFFFFFH,表示文件結(jié)束。

3.2.2 文件的讀/寫
  SD卡上文件都是以簇為單位存取的,向SD卡上的文件寫數(shù)據(jù)時(shí),首先要根據(jù)文件名查找到該文件的文件登記項(xiàng),根據(jù)文件登記項(xiàng)中的起始簇號(hào)即可找到文件在數(shù)據(jù)區(qū)中第1簇,向數(shù)據(jù)區(qū)對(duì)應(yīng)的簇中寫數(shù)據(jù),并且可以在FAT表中找到第2個(gè)簇號(hào)。根據(jù)第2個(gè)簇號(hào)又能向第2簇寫數(shù)據(jù)并找到FAT 中的第3個(gè)簇號(hào),以此類推,直到FAT表中最后一項(xiàng)0x0FFFFFFFH,完成寫文件。讀取文件的過(guò)程與寫文件類似。
  SD卡在記錄總線數(shù)據(jù)中的應(yīng)用程序流程圖如圖5所示。其中LPC2368以中斷方式將接收到的CAN數(shù)據(jù)以及接收時(shí)的時(shí)間存儲(chǔ)到數(shù)據(jù)隊(duì)列里,并立即跳出中斷,進(jìn)行主程序的處理或等待下一幀數(shù)據(jù)的接收中斷,從而避免報(bào)文的丟失。


  本設(shè)計(jì)采用SD卡作為外部存儲(chǔ)介質(zhì),將實(shí)時(shí)采集到的CAN數(shù)據(jù)信息以標(biāo)準(zhǔn)文件的格式保存于SD卡中,具有性能可靠、使用方便、重量輕及存儲(chǔ)容量大等特點(diǎn),具有廣闊的應(yīng)用前景。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: CAN SD卡 記錄 汽車

評(píng)論


相關(guān)推薦

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

關(guān)閉