張生文
(北京全路通信信號研究設計院集團有限公司,北京 100073)
?
基于FatFS的無外部電源串口記錄器設計
張生文
(北京全路通信信號研究設計院集團有限公司,北京 100073)
摘要:描述了一種無電源串口記錄器的設計,可以連接到常見的RS-232接口上,從總線上獲取工作電源,將RS-232接口數(shù)據(jù)以文件的形式記錄到本地存儲芯片中。數(shù)據(jù)維護時,該設備可被PC機識別為大容量存儲器,可直接對數(shù)據(jù)文件進行轉存等操作。該設備的文件系統(tǒng)基于FatFS,對其進行改進以降低運行時的功耗,降低了開發(fā)難度并保證了良好的兼容性。
關鍵詞:FatFS;串口記錄器;無外部電源
Abstract:The paper describes the design of a RS232 data recorder without external power. The recorder connects with RS232 connector getting work power from data bus and saves bus data to the local chips in fi le type. It is identi fi ed as mass storage as maintenance. Its fi les can be copied directly to other equipment, and the file system is developed based on modified FatFS for reducing the operation power and the developing dif fi culty and ensuring the good compatibility.
Keywords:FatFS; RS232 data recorder; no external power
串口是一種非常通用的設備通信總線,在設備調試,維護接口等領域獲得了廣泛的應用。在軌道交通等行業(yè)中,受限于供電條件,運行時間較長等原因的限制,給串口數(shù)據(jù)的記錄帶來了困難。本文設計了一種串口記錄器,連接使用RS-232接口的設備,采集其串口輸出的數(shù)據(jù)并保存在存儲芯片中,可通過USB接口連接至PC機后將數(shù)據(jù)轉存到其他設備。
1.1功能描述
串口記錄器可根據(jù)當前串口的設備連接情況更改記錄下載器的工作模式,即分別工作在串口記錄工作模式或大容量存儲器模式。
串口記錄工作模式下,該設備自動將串口輸出的數(shù)據(jù)記錄在本地存儲芯片中,也可根據(jù)被連接設備的需要輸出指令與被連接設備交互,對其進行配置或獲取部分數(shù)據(jù)。當設備中存儲的數(shù)據(jù)量達到設備容量限制時,設備自動刪除較老的數(shù)據(jù),保證記錄器中存儲較新的數(shù)據(jù)。
大容量存儲器模式下,該設備與PC機通過USB接口連接,PC機將該設備識別為大容量存儲器,可將數(shù)據(jù)直接拷貝到其他存儲設備中。USB模式下也可通過上位機軟件對記錄下載器進行實時時鐘等配置。
1.2創(chuàng)新性優(yōu)點
設備上電時,根據(jù)配置情況自動進入固件更新程序或正常程序,固件更新程序可使用官方提供的上位機升級程序更新設備的程序,可用于bug修復等,既不需要打開設備,也不需要專用的工具,使用的便利性得到改善;該設備不使用外部電源,直接對串口總線的電壓差進行電壓轉換操作,獲取芯片的工作電源;設計有實時時鐘芯片和充放電電池,可用于給記錄的數(shù)據(jù)標記時間信息等,同時該模塊可在較長時間內保證穩(wěn)定工作。
為降低設備的總體功耗,硬件設計中使用了較多的低功耗芯片,并對電阻、電容的取值進行優(yōu)化,以使設備工作穩(wěn)定可靠。
2.1 總體框架
因串口記錄器在對串口數(shù)據(jù)進行記錄時無外部電源,因此設備設計取電模塊從RS-232串口總線上取電。RS-232是負邏輯電平,它定義+5~+12 V為低電平,而-12~-5 V為高電平。被連接設備的發(fā)送線與地之間無論空閑與否,均有電壓差,該電壓差可被取電模塊使用獲取設備的工作電源。被連接設備通常使用的RS-232收發(fā)器的驅動能力一般可以達到20 mA,而在串口記錄器的設計中,可使系統(tǒng)的總體平均功耗降低至3~4 mA,根據(jù)電壓轉換效率計算后,RS-232收發(fā)器亦完全可以驅動串口記錄器,記錄器的總體框架如圖1所示。
2.2取電模塊
當串口接收線為正電壓時,線性降壓電路工作,將接收線的正電壓變換為工作電源;當串口接收線為負電壓時,負壓變換電路工作,將負電壓變換為工作電源,由于負壓變換電路可視為升壓電路,所以該電路提供的輸出電流約為輸入電流的一半。根據(jù)串口的設計原理,當串口上沒有數(shù)據(jù)傳輸時,串口接收線將保持負電壓,所以負壓變換電路是串口記錄器的主要供電電路,如圖2、3所示。
2.3存儲模塊
目前,常用的存儲芯片類型為E2PROM、NOR FLASH和NAND FLASH。E2PROM芯片的讀寫功耗低,但是存儲容量往往限制在數(shù)兆字節(jié),用作存儲芯片將對設備的容量帶來限制;NAND FLASH的存儲容量大,使用范圍廣,在U盤等領域獲得了廣泛的應用,但是其功耗大、接口特殊的特性使其無法應用在該設備中;NOR FLASH的容量一般小于NAND FLASH,但隨著芯片集成工藝的提升,其容量也達到了百兆級別,可以滿足串口記錄器的需求。
串口記錄器數(shù)據(jù)的存儲使用了NOR FLASH芯片,芯片接口為SPI總線,單片容量為數(shù)十兆字節(jié),低速率下讀寫功耗約為5~10 mA。若在設備中配備兩片存儲芯片,容量可達百兆字節(jié),也可根據(jù)項目需要選擇低容量的芯片以降低設備成本。
可惜我無能用后續(xù)的寫作告慰這種鼓勵。一個月很快過去。我寫出的文字連我自己都羞于出手??催^稿子的王朝垠對我說,別灰心,慢慢來。大約是看我過于沮喪,他邀我去他家喝酒。
2.4實時時鐘模塊
為獲得串口數(shù)據(jù)的接收時間,串口記錄器中需具有實時時鐘模塊,若直接采用主控芯片自帶的實時時鐘模塊,系統(tǒng)斷電后的最低功耗往往為微安級別,若采用外置的實時時鐘芯片,系統(tǒng)斷電后的最低功耗可降至數(shù)百納安,可將實時時鐘的保持時間延長數(shù)倍。因此串口記錄器中設計了主控實時時鐘模塊和外置實時時鐘模塊,可根據(jù)被連接設備的需要進行選擇。外置芯片若集成了充電電路,可用于給充放電電池充電。系統(tǒng)斷電后,由充放電電池為實時時鐘模塊提供電源。
為盡可能降低記錄器運行時功耗,針對該設備的特點在軟件設計中做了多處優(yōu)化,帶來了功耗的降低和使用的便利性。
3.1工作模式
串口記錄器有3種工作模式,如圖4所示。
因串口記錄器的功能需求差異較大,軟件設計中對設備的功能進行了劃分,分別為固件更新模式和正常工作模式。固件更新模式下的程序,可移植主芯片廠商的Bootloader程序[1],移植的程序可選擇USB接口的工作模式,同時根據(jù)需要對進入該工作模式的判定方法進行適應性修改,滿足設備的實際情況;若判定不需要固件更新,則進入正常工作模式,分別為串口記錄模式和大容量存儲器模式。
串口記錄模式下,要求設備具有較低的功耗。因此,在軟件設計中,需要從以下幾個方面降低設備功耗。
*關閉主控芯片不需要的外設模塊。
*降低晶振等時鐘頻率。
*使各類芯片工作在低功耗模式或睡眠模式下。
*數(shù)據(jù)記錄時,通過RAM進行緩沖,達到一定字節(jié)后再寫入存儲芯片,如圖5所示。
3.2FatFS的優(yōu)化
FatFS是一個通用的文件系統(tǒng)模塊,用于在小型嵌入式系統(tǒng)中實現(xiàn)FAT文件系統(tǒng)[2]。具有兼容Windows,易于移植,適應性廣有優(yōu)點。但是,軟件為了接口的簡潔和移植的方便性,僅為使用者提供了數(shù)據(jù)較為統(tǒng)一的接口函數(shù)。在串口記錄器的設計中,若直接使用FatFS文件系統(tǒng),將會因為FLASH芯片不能單字節(jié)擦除的特性造成對扇區(qū)的頻繁讀寫,因此,在軟件設計中,需要對FatFS優(yōu)化,以減少對扇區(qū)的操作。
FAT文件系統(tǒng)包括4個部分,分別為引導區(qū)、文件分配表區(qū)域、根目錄區(qū)域和數(shù)據(jù)區(qū)域。引導區(qū)保存了基本輸入輸出參數(shù),其內容在磁盤格式化時被寫入,平時亦只有獲取文件系統(tǒng)信息時被使用。因此該區(qū)域的操作可以簡化;文件分配表區(qū)域保存了各扇區(qū)的使用和連接關系,當文件的容量每增加一個扇區(qū)大小時,該區(qū)域的內容將會被更新一次,因此在FatFS文件系統(tǒng)中對該區(qū)域的更新十分頻繁;根目錄區(qū)用于保存文件名、創(chuàng)建時間、大小等信息,因此創(chuàng)建文件或文件更新時該區(qū)域將會被更新;數(shù)據(jù)區(qū)記錄了文件的具體內容,當文件的內容增減時,該區(qū)的特定扇區(qū)內容將會被改寫。
根據(jù)FAT文件系統(tǒng)的特點,軟件分別針對各部分的操作進行優(yōu)化。
*引導區(qū)操作中對保留或未使用部分的操作進行移除,減少無用的FLASH讀寫操作。
*文件分配表區(qū)從FLASH芯片挪至E2PROM區(qū)域,更新時可實現(xiàn)單字節(jié)的更新。
*根目錄區(qū)的更新以文件為單位,可將其變動依次寫入保留的FLASH扇區(qū)中,設備啟動時統(tǒng)一對根目錄區(qū)進行更新。
*數(shù)據(jù)區(qū)寫入時優(yōu)化為按實際字節(jié)進行改寫,更改時的操作保持不變。
本文所設計的串口記錄器可用于長時間對被連接設備的串口數(shù)據(jù)進行記錄,使用方便,維護簡單快捷。被連接設備的故障診斷和分析可使用該記錄器中的原始數(shù)據(jù),故障定位更加準確和快捷。
參考文獻
[1]杜春雷.ARM體系結構與編程[M].北京:清華大學出版社,2003.
[2]洪岳煒,王百鳴,謝超英.一種易于移植和使用的文件系統(tǒng)FatFs Module[J].單片機與嵌入式系統(tǒng)應用,2008(5):29-31.
收稿日期:(2015-03-30)
DOI:10.3969/j.issn.1673-4440.2016.01.021