摘 要;本文根據現場數據采集系統的設計原則,采用片內自帶A/D轉換模塊及大容量數據RAM且微功耗性能突出的MSP430P149單片機,并結合大容量串行FLASH數據存儲器,詳細闡述了能滿足現場應用環境的大容量數據實時采集系統的設計思路和具體實現方法。
關鍵詞:數據采集;MSP430;FLASH存儲器;微功耗
引言
許多工業測控,醫療儀器以及消費類電子產品對便攜式設備的現場數據實時采集能力捉出了較高的要求:即在滿足微功耗、微型化的總體設計原則基礎上,數據采集系統還要能實時記錄較長時間的現場采集數據,這就對系統的采樣速度、數據存儲模塊的讀寫速度、存儲容量都提出了更高的要求。
采用具有片內A/D轉換模塊及大容量數據RAM且微功耗性能突出的MSP430F149單片機,并結合大容量低功耗的FLASH存儲器,可以為這種應用需求提供滿意的解決方案。
系統器件選擇
單片機
微功耗數據采集系統中,微控制器(以下簡稱MCU)的功耗也是系統整體功耗的重要來源之一,選擇在微功耗設計上具有突出優勢的MCU,對于系統的微功耗設計具有非常現實的作用。同時,選擇集成有較高精度A/D轉換模塊及較大容量數據RAM的單片機能有效降低系統設計難度和提高系統的可靠性。
而TI公司的MSP430F149單片機(以下簡稱為F149)正是能滿足以上要求的,且具有超低功耗特點的16位單片機,其功耗已經達到了微安級。F149內部集成有多通道、高速加轉換模塊ADCl2,能提供8通道12位精度的A/D轉換,其最大采樣速率可以達到200ksps。ADCl2模塊內包括采樣/保持功能的ADC內核、轉換存儲邏輯、內部參考電平發生器、多種時鐘源、采樣及轉換時序電路。對于大多數現場數據采集的應用環境而言,F149內部集成的ADCl2模塊都能很好地滿足數據采集的要求。
另外,F149內部集成的串行通信模塊不僅支持異步通信,也支持SPI同步通信方式,且其對SPI同步通信方式的配置極其靈活,這就為F149訪問SPI接口的串行FLASH存儲器提供了硬件上的保證。
同時,F149內集成有2KB的數據RAM,這將為把數據寫入FLASH存儲器提供足夠的緩沖時間,能極大程度地滿足實時性數據采集的需要及提高系統的可靠性,為數據采集系統提供了關鍵性的硬件冗余。
F149的軟件結構也針對低功耗而設計。如從備用模式喚醒MCU僅需6μS。其中斷和于程序調用無層次限制,這種豐富的中斷能力減少了系統查詢的需要,可以方便地設計出基于中斷結構的數據采集程序。
綜上所述,MSP430F149單片機具有極低的功耗,具有多種適合現場數據采集的功能強大的片上外圍模塊。同時F149單片機采用了QFP64的表貼封裝,引腳間距僅為0.5mm,極大地節省了電路板空間。采用MSP430F149作為現場數據采集系統的微控制器,增加了系統的先進性和集成度,較大程度地提升了系統的整體性能。
數據存儲器
為使數據采集系統能記錄較長時間的被測物理量狀態,數據存儲器應具有較大的容量和較低的功耗。同時為與現場環境下的采樣頻率相匹配,對數據存儲器的讀寫速度也有相應要求。
目前存儲器的種類很多,按存儲類型分,有FLASH存儲器、EPROM、E2pROM、SRAM等;按接口方式劃分,有并行接口、串行SPI接口、串行12C接口、一線接口等。
選擇適合微功耗數據采集系統的存儲模塊,應結合功耗、存儲容量、讀寫速度、體積及接口方式等多個因素綜合考慮。尤其應著重考慮功耗和存儲容量的因素。
這里舉例說明,以100次/秒的采樣率實時采集三個通道的數據,如要求采樣精度在12位以上,即使僅僅記錄1小時的現場數據也需占用約2.IM的存儲空間。
而常用的并行或串行E2pROM存儲密度較低、容量較小,遠遠不能滿足數據采集系統長時間記錄現場數據時在存儲容量上的需要。
近年來在優盤和MP3播放器中得到廣泛應用的FLASH存儲器的存儲密度較高,讀寫速度較快,在存儲容量及成本上具有明顯優勢。尤其基于SPI串行接口的低電壓FLASH存儲器在數碼設備的CF卡中得到了大量應用,其存儲密度高,且所用I/O口相對于并行FLASH存儲器人為減少,體積小,功耗較低。因此在便攜式現場數據采集系統中,是非常合適的數據存儲器形式。

串行FLASH存儲器
本系統選用了ATMEL公司的31兆位SPI串行接口FLASH存儲器AT45DB32lB作為外置數據存儲器。該FLASH存儲器供電范圍為2.7V—3.6V,其接口電平與F149單片機相匹配,硬件上能直接連接。且該存儲器采用SPI串行三線接口,能有效減少系統所占空間,提高系統可靠性,降低開關噪聲,很適合于高存儲密度、低電壓、微功耗的應用環境。并可根據實際需要選擇該系列中存儲容量更大的型號。
AT45DB321B采用單電源供電,功耗較低,其待機電流為2μA,讀操作電流4mA,燒寫電流15mA,相比早期的5V版本FLASH存儲器,其功耗已得到很大改進。尤其結合基于頁面的數據讀寫子程序,可以更大程度上地減少讀或寫FLASH存儲器的時間和次數,進而有效地降低功耗。
AT45DB321B由1個主存儲器陣列、2個528字節的數據緩沖區和一個I/O接口邏輯構成。AT45DB321B是32兆位的大容量FLASH存儲器,其存儲陣列被劃分為8192頁(每頁528字節),其存儲區的劃分可以由大到小分為三個層次:sector(扇區)、bilk(塊)、page(頁)。具體存儲器的組織結構如圖1所示。
AT45DB321B存儲器內部還包括2個靜態RAM類型的數據緩沖區,每個RAM的容量均與主存儲器陣列中一個頁面(page)的存儲容量相同,即均為528字節。AT45DB32lB內的兩個數據RAM即使在主存儲區被燒寫的過程中也允許接收數據,這就為保證數據采集的實時性和可靠性提供了硬件保證。ATMEL公司之所以將每個頁面及RAM緩沖區的大小都定為528字節,而不是512字節,是出于以下的特殊考慮:即這額外的16字節可以用作錯誤檢測或存放特別的控制信息,如地址指針、特殊標志等。借助這每個頁面內均有的額外16字節,設計者可以將數據進行分級或分類,也可以將數據放置到不連續的頁面中。
系統實現
硬件部分
AT45DB32lB采用了SPI三線接口(SI、SO、SCK引腳),支持SPl0和SPl3兩種工作模式。在采用SPI同步通信方式時,MSP430F149單片機作為主機提供時鐘與數據,因此F149內的SP[接口應相應地設置為8位三線連接主模式。MSP430F149與AT45DB321B的具體連接如圖2所示。
AT45DB321B的RDY/BUSY引腳是開漏輸出的,此引腳需接一個1kQ上拉電阻,因此常態應為高電平。但當AT45DB321B芯片內部啟動了數據燒寫操作、數據比較操作或頁面到緩沖區的傳輸操作中的一種時,此引腳會被芯片自動拉到低電平,表示芯片處于“忙”狀態,即此時不能訪問主存儲器陣列和正使用的數據緩沖區。
CS引腳是AT45DB321B的使能引腳,同時此引腳上的電平跳變也是芯片內部動作的觸發信號。如在AT45DB321B內開始一個操作時,需在CS引腳上產生一個由高到低的電平跳變;而在AT45DB321B內中止一個操作時,需在CS引腳上產生一個由低到高的電平跳變。
為了濾除芯片引腳上的噪聲信號以免造成芯片的誤動作,應該在芯片的相應引腳上且盡量靠近芯片的地方連接去藕電容。在SCK、CS及SI引腳上各接一個100pF的去藕電容,同時在AT45DB321B的Vcc引腳上以1uF、0.1uF和0.01uF三個電容并聯的形式去藕。

數據采集流程
MSP430F149的A/D轉換模塊ADCl2具有四種轉換模式:單通道單次轉換、單通道重復轉換、序列通道單次轉換及序列通道重復轉換。在數據采集系統中,如要采集溫度、壓力等變化較為緩慢的物理量,則可以采用單通道單次轉換模式,程序設計上較為簡便;如要采集多通道、連續變化的數據,則序列通道單次轉換模式的時序控制較為簡單,靈活性較高。
因此要采集應用現場的多通道、連續變化的大量數據,同時考慮到數據采集系統的微功耗和實時性要求,應對數據采集程序進行綜合考慮,如數據采集過程中的時鐘設置,采樣輸入信號的選擇,A/D中斷服務子程序的設計,AT45DB321B芯片的數據寫入方式及數據緩沖區的切換等。
圖3是數據采集程序的相關流程圖:
采用序列通道單次轉換模式時,應相應設置控制寄存器ADCl2CTLl的SHP=1,同時將SHS(采樣輸入信號源選擇控制位)設置為1,即由Timer A.OUTl觸發采樣定時器。定時器A可以工作在增計數模式,其定時間隔就是A/D轉換的采樣時間間隔。采用定時器輸出信號觸發采樣的優點在于:能精確控制采樣時間間隔;由于采用硬件定時,因此MCU可以在定時間隔內進入休眠狀態,并由中斷喚醒,這就完全符合了基于中斷的微功耗程序設計原則。
在數據采集過程中有幾個問題值得注意:

(1)避免可能的“丟幀”問題。由于數據寫入外部數據存儲器AT45DB321B需要一定的寫入時間,因此每次采集到的多通道數據若直接寫入存儲器,則在采樣速率較高時,不能保證系統能及時從數據寫入過程中返回并及時開始下一次A/D轉換,這就會造成“丟幀”,即會丟失緊接著的若干次序列數據。而若強行返回,又不能保證數據被可靠寫入。解決方法是:在MSP430F149單片機的數據RAM內開辟兩塊緩沖區,利用兩塊緩沖區切換,并結合AT45DB321B的批量數據塊寫入功能,使得采樣數據能及時存儲。
(2)A/D中斷服務子程序應盡快返回以保證數據采集的實時性。由于數據采集程序是工作在中斷模式下,而且采樣數據的處理也是在A/D中斷服務子程序中完成,因此A/D中斷服務子程序內的語句越少越好,即要保證從A/D中斷服務子程序返回所需的實際時間要小于采樣間隔時間(由采樣率決定)。
(3)數據采集過程中保證穩定的時鐘源。如選擇由SMCLK或ACLK作為采樣過程中的轉換時鐘或定時器A的時鐘源,應注意在F149進入低功耗休眠狀態時,保證這些相應的時鐘信號可用,否則會引起采樣時間間隔上的嚴重誤差甚至錯誤。
(4)保證數據采集過程中高質量的電源輸出。要保證較高的采集精度,系統的電源輸出質量也是關鍵,即要求系統電源的輸出紋波小、穩壓效果好,電磁輻射小。
(5)保證有精確的電壓基準。ADCl2的內部參考電平發生器能提供1.5V、2.5V的參考電平,但是在MCU本身的電源電壓受干擾時,其內部參考電平也將受影響。因此在對采樣精度要求較高時,可以考慮采用片外的精密電壓基準。
AT45DB321B讀、寫子程序
SPI同步串行接口一般有四種工作模式:SPl0、SPll、SPl2及SPl3。SPl接口的工作模式決定了發送和接收數據的時鐘信號的相位和極性,即決定了時鐘信號的哪個跳變沿控制數據傳輸的方向。
AT45DB321B存儲器只支持SPIO、SPl3兩種工作模式,即在SCK時鐘信號的上升沿鎖存數據,下降沿輸出數據。因此若MSP430F149單片機與AT45DB321B采用SPl3模式,則F149單片機的UCTL0控制寄存器的CKPH和CKPL位均應置1。F149作為SPI串行數據傳輸中的主器件,其數據或命令的發送采用查詢UTXIFG0寄存器的方式,數據的接收則采用查詢URXIFGO寄存器的方式。
訪問AT45DB321B存儲器時,應結合微功耗設計原則選擇其讀、寫方式。 在系統的運行功耗中,AT45DB321B的靜態及動態功耗均明顯高于F149,尤其在數據燒寫過程中其寫入電流較大(典型值為15mA),因此應盡量減少對其的操作時間。這主要通過以下兩點來實現:①盡量不使AT45DB321B處于無謂等待狀態,即只在訪問AT45DB321B時,才使能該芯片;②根據AT45DB321B的存儲器陣列的結構特點,訪問AT45DB321B時可采用頁面讀和頁面寫方式。
頁面讀方式(mainmemorypageread)允許用戶從AT45DB321B存儲器陣列的8192頁數據中讀取任一頁面的數據, 頁面讀方式無需用到AT45DB321B內的2個528字節的數據緩沖區,也不會影響其內數據。
在頁面寫方式(main memory pageprogram throu9h buffer)中,數據首先通過SI引腳移入AT45DB321B的數據緩沖區,然后啟動內部時序刪除欲寫入數據的頁面(將頁面內的所有位置1),最后將數據緩沖區內的數據燒寫入此頁面。在頁面寫過程中所有的刪除和燒寫操作的時序都是AT45DB321B芯片內部自身產生。在此刪除和燒寫過程中,其內的狀態寄存器會提示芯片處于“忙”狀態,且AT45DB321B的RDY/BUSY引腳也為低電子。
圖4為AT45DB321B頁面寫方式的子程序流程圖。
需要注意的是,AT45DB321B的CS引腳由低置高后,芯片內部啟動自定義的刪除和燒寫時序,這需要最大約20ms(即器件手冊中的乙)的時間。在這段時間中,頁面寫子程序可以返回也可以不返回。如一直等待AT45DB321B不忙以后再返回,則一定要注意開啟F149的中斷,使F149能一直響應采樣中斷以保證數據采集的連續性。
這里就存在一個關鍵問題:即為了保證大容量數據采集的實時性和連續性,在F149的數據RAM內開辟的采樣數據緩沖區需要能提供大于tFp的緩沖時間,以保證在下一次另一塊數據緩沖區滿之前,AT45DB321B能將本次數據緩沖區內的數據可靠寫入。否則,將造成數據的丟失。因此必須在F149單片機內開辟兩塊相同大小的數據緩沖區,且其大小與實際采樣速率、采樣通道數及AT45DB321B的tEP時間密切相關。由于AT45DB321B內的RAM數據緩沖區和存儲器陣列內頁面的大小均為528字節,在滿足緩沖時間的前提下,可以在F149的2K字節RAM內直接開辟兩片大小均為528字節的數據緩沖區,這樣可以有效簡化程序設計。
頁面讀方式子程序的流程圖與圖4類似,但是在發送完指令碼、地址信息碼和32位無關碼后,由于此時數據是由AT45DB321B串行輸出到SO引腳上,因此必須由主機(即F149單片機)提供移位所需的時鐘信號,這點尤其重要。具體的技巧是:在讀取AT45DB321B輸出的每個字節數據之前,先由F149單片機發送一個00H的數據到AT45DB321B,以此產生AT45DB321B輸出數據所需的時鐘信號。
在利用AT45DB321B內的全部頁面記錄現場的大量數據時,在系統的主程序中需要維護幾個變量:如一個記錄頁面編號的全局變量,以確定數據讀寫時所需訪問的頁面;以及一個緩沖區標志的變量,使得程序能夠根據標志判斷當前緩沖區是否存滿,是否需要切換及切換到哪個緩沖區。
另外,即使AT45DB321B芯片處于“忙”狀態,也可以對其內的另一塊空閑數據緩沖區進行讀寫操作。因此程序設計時應注意對芯片“忙”狀態的查詢和利用數據緩沖區可以交替操作的技巧以提高數據訪問的速度。
綜上所述,AT45DB321B的數據讀寫子程序中需要注意數據采集與數據存儲之間的時序配合,以保證數據采集的連續性和數據的不丟失。同時數據讀寫過程中穩定的時鐘信號也是需要優先考慮的,而這點往往為設計者所忽略。
結語
如本文中所述,內置A/D轉換模塊及2KB數據RAM的16位微功耗單片機MSP430F149很適合作為現場實時數據采集系統的微控制器。尤其結合低電壓版本的大容量串行FLASH數據存儲器,就能夠設計出滿足現場數據長時間采集和存儲需要的數據采集系統。本文詳細闡述了該數據采集系統的設計思路和具體實現方法。同時,該系統在實際應用中也取得了滿意的效果。