關鍵字:單片機 USB接口 電力補償
在一些特殊的工業(yè)場合,有時需要將傳感器的信號不斷的實時采集和存儲起來,,并且到一定時間再把數(shù)據(jù)回放到PC機中進行分析和處理,。在工作環(huán)境惡劣的情況下采用高性能的單片機和工業(yè)級大容量的FLASH存儲器的方案恐怕就是最適當?shù)倪x擇了。CYGNAL公司的C8051F320 SOC是一種具有8051內(nèi)核的高性能單片機,,運行速度為普通8051的12倍,。
本文給出的是用于大型光伏系統(tǒng)運行狀態(tài)監(jiān)測的數(shù)據(jù)采集存儲電路,由于采用表面貼片工藝制作,,整個電路板的寬度僅為18毫米,,就像使用U盤一樣方便。
采集電路硬件部分
電路的硬件結(jié)構
本系統(tǒng)采用了CYGNAL公司的C8051F320芯片和ATMEL公司的AT45DB321C存儲芯片作為控制和存儲的主要芯片,。圖1是信號采集系統(tǒng)的采集及存儲系統(tǒng)框圖,。
圖1 基于USB數(shù)據(jù)采集及存儲系統(tǒng)框圖
從圖1中可見,在采集過程中,,傳感器的輸入模擬信號經(jīng)可變增益放大器放大后送至C8051F320,,經(jīng)過ADC轉(zhuǎn)換為數(shù)字信號。單片機片外有8個45DB321C芯片組成了一個32MB的Data flash存儲器,,采集到的數(shù)據(jù)不斷地通過SPI接口傳送到45DB321C芯片中存儲,。
與其他型號芯片相比,C8051F320帶有USB接口,片內(nèi)的USB功能控制模塊符合USB2.0規(guī)范,,可在全速或低速下運行,,并具有1KB USB緩存、集成收發(fā)器,,無需外部電阻,。可以與PC機即插即用,。當需要數(shù)據(jù)時,,可將采集存儲電路從現(xiàn)場取回,通過USB接口回放到PC機中,,在LabVEIW平臺上進行波形顯示和數(shù)據(jù)分析處理,。
8051F320與45DB321C的硬件接口
系統(tǒng)中C8051F320與45DB321CI采用SPI單主多從機的方式通信。引腳NSS作為從機選擇線,,選擇存儲芯片,,低電平有效;SCK作為串行外設接口發(fā)送和接收數(shù)據(jù)的同步時鐘信號;RDY/BUZ作為判斷設備不忙或準備接收新的指令操作的信號線;SO,、SI作為數(shù)據(jù)傳輸線。
本系統(tǒng)設計上考慮使用8片45DB321C芯片,,最大容量達32MB,通過片選CS1~CS8分別連到各45DB321C的CS端,。時鐘SCK只對被選中的45DB321有效。本系統(tǒng)使用多片F(xiàn)lash芯片的設計除了提供充足的存儲空間之外,,還解決了一個關鍵問題,,就是借鑒硬盤領域RAID技術的思路,通過對4片一組的Flash順序操作實現(xiàn)一個基本的并行加速,,解決了Flash寫入速度過慢的問題,大大提高了存儲性能,。
具體電路如圖2所示,,其中8片存儲器的SPI采用級聯(lián)只畫出一片,各自的CS片選信號由74HC138譯碼給出,。
圖2 單片機與FLASH存儲器的接口電路
采集電路的程序軟件
采集電路的程序是指固化在C8051F320 中的程序,,采用c語言編寫,由主程序模塊,、ADC數(shù)據(jù)采集,、Flash數(shù)據(jù)存儲和USB通信四部分組成。
主程序和ADC數(shù)據(jù)采集
主程序主要完成系統(tǒng)初始化狀態(tài)指示操作控制和參數(shù)設置啟動A/D轉(zhuǎn)換等,。
ADC數(shù)據(jù)采集程序?qū)碜詡鞲衅鞯哪M信號轉(zhuǎn)換成數(shù)字信號的,。本系統(tǒng)中,ADC的轉(zhuǎn)換是通過Timer2的自動溢出來觸發(fā)的,,而采集的速率可以事先通過上位機設置,。
關鍵字:單片機 USB接口 電力補償
Flash數(shù)據(jù)存儲程序
C8051F320芯片與Flash存儲器的通信采用SPI接口方式,數(shù)據(jù)傳輸率為12MHz(位/秒),。本設計中,,C8051F320工作在SPI主機模式,SPI總線的數(shù)據(jù)傳輸都將由C8051F320發(fā)起,。首先對SPI相關SFR SPI0CFG寄存器和SPI0CN寄存器進行配置,,使其工作在3線主模式12MHz。通信時首先用GPIO引腳來選擇相應的Flash從器件,,隨后通過讀取SPIDAT來進行讀寫操作,。在使用Flash芯片進行讀寫操作時,首先要確定Flash存儲器的狀態(tài),??赏ㄟ^寫入D7H命令,讀取狀態(tài)寄存器判斷設備是否Ready或處于Bus
y狀態(tài),。確定狀態(tài)后,,可根據(jù)數(shù)據(jù)手冊中的命令格式進行相關的讀寫以及擦除操作。
USB通信程序
固件編程是USB設備開發(fā)過程里的主要工作。固件的主要任務是初始化單片機和外設,,發(fā)送USB請求,,響應主機的標準設備請求。根據(jù)設備的功能分類完成各種數(shù)據(jù)交換請求,。初始化編程主要完成USB控制器的初始化,、端點初始化,交叉開關和I/O口初始化,、系統(tǒng)時鐘設置,,控制器使能。初始化后,,USB設備可隨時插入主機中,,主機將遵循USB協(xié)議對設備進行識別和初始化。主機識別到設備之后對設備進行配置,,調(diào)用相應的驅(qū)動程序,,配上上位機軟件進行相關通信操作。
Silicon lab公司提供了USBXpress的開發(fā)套件,。通過使用USBXpress庫,,大大簡化了USB固件程序和PC端驅(qū)動程序的開發(fā)。 USBXpress通過一系列函數(shù)實現(xiàn)單片機端的應用程序接口(API),。這些函數(shù)封裝了USB協(xié)議的細節(jié),,使得程序開發(fā)人員不需要了解USB的過多細節(jié)即可使用USB進行數(shù)據(jù)通信(見圖3)。
圖3 單片機與PC機的USB通信
本系統(tǒng)中主要用到了初始化,、讀,、寫、中斷這四個函數(shù):
初始化USB_Init(0,0xEA61,NULL,NULL,Serial,250,0x80,0x100)函數(shù);塊寫函數(shù)Block_Write();塊讀函數(shù)Block_Read();USB中斷使能函數(shù),。
USB的所有處理程序都是通過USB的中斷服務程序完成的,。進入USB中斷后,程序調(diào)用Get_Interrupt_Source()函數(shù)獲得USB中斷的進入原因,。然后根據(jù)不同的入口情況,,來進行相應的處理。比如收到數(shù)據(jù)之后,,讀取相應的緩沖區(qū)內(nèi)容到內(nèi)存中;收到初始化命令時,,復位單片機內(nèi)的各個狀態(tài)參數(shù)。USB通信流程圖示于圖4,。
圖4 USB通信流程圖
PC機端軟件程序
計算機端軟件程序包括兩部分:USB驅(qū)動程序和用戶應用程序,。
USB驅(qū)動程序
USB驅(qū)動程序是一個軟件組件,封裝了應用程序存取硬件設備的功能函數(shù),。有些設備具有相同的屬性,,把它們歸為一組標準類別,,可以定義設備類規(guī)范作為該類設備的主機驅(qū)動框架。設備類驅(qū)動程序使用相似的函數(shù),,處理不同設備間的通信,,這樣使設備類驅(qū)動程序的開發(fā)可以脫離設備制造商。
USB驅(qū)動程序模型一般分為五層(見圖5),。
圖5 USB驅(qū)動程序模型
用戶端若要從設備讀取數(shù)據(jù),,將調(diào)用一個應用程序接口API,如OpenFile,,SiUSBXp.dll實現(xiàn)這個API,。總線驅(qū)動程序控制對總線上所有設備的訪問,。
本系統(tǒng)中,,開發(fā)USB設備驅(qū)動程序的工具使用了USBXpress Development Kit。主要函數(shù)如下:
S
I_Open()函數(shù);SI_Close()函數(shù);SI_Read函數(shù);SI_Write()函數(shù);SI_GetNumDevices()函數(shù);SI_CheckRXQueue()函數(shù),。
關鍵字:單片機 USB接口 電力補償
用戶應用程序
本系統(tǒng)中,應用程序采用NI公司的LabVIEW軟件進行編寫,,運用圖形化的C語言進行軟件開發(fā),,實現(xiàn)數(shù)據(jù)的顯示、滿足不同需要的分析功能以及對數(shù)據(jù)采集硬件的參數(shù)設定(見圖6),。
圖6 回放數(shù)據(jù)波形顯示界面
結(jié)語
基于C8051F320 USB接口的采集存儲電路把計算機技術與傳統(tǒng)信號采集技術緊密結(jié)合起來,,充分發(fā)揮PC機和單片機各自的優(yōu)點,實現(xiàn)傳感器信號的采集,、存儲,、顯示和處理。而借助USB接口的通信功能,,減小了數(shù)據(jù)傳輸系統(tǒng)的復雜性,。