《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)與USB接口實(shí)現(xiàn)電力補(bǔ)償裝置控制系統(tǒng)
單片機(jī)與USB接口實(shí)現(xiàn)電力補(bǔ)償裝置控制系統(tǒng)
摘要: 基于C8051F320 USB接口的采集存儲(chǔ)電路把計(jì)算機(jī)技術(shù)與傳統(tǒng)信號(hào)采集技術(shù)緊密結(jié)合起來(lái),充分發(fā)揮PC機(jī)和單片機(jī)各自的優(yōu)點(diǎn),實(shí)現(xiàn)傳感器信號(hào)的采集,、存儲(chǔ)、顯示和處理,。而借助USB接口的通信功能,減小了數(shù)據(jù)傳輸系統(tǒng)的復(fù)雜性,。
Abstract:
Key words :

關(guān)鍵字:單片機(jī) USB接口 電力補(bǔ)償

  在一些特殊的工業(yè)場(chǎng)合,,有時(shí)需要將傳感器的信號(hào)不斷的實(shí)時(shí)采集和存儲(chǔ)起來(lái),并且到一定時(shí)間再把數(shù)據(jù)回放到PC機(jī)中進(jìn)行分析和處理,。在工作環(huán)境惡劣的情況下采用高性能的單片機(jī)和工業(yè)級(jí)大容量的FLASH存儲(chǔ)器的方案恐怕就是最適當(dāng)?shù)倪x擇了,。CYGNAL公司的C8051F320 SOC是一種具有8051內(nèi)核的高性能單片機(jī),運(yùn)行速度為普通8051的12倍,。

  本文給出的是用于大型光伏系統(tǒng)運(yùn)行狀態(tài)監(jiān)測(cè)的數(shù)據(jù)采集存儲(chǔ)電路,,由于采用表面貼片工藝制作,整個(gè)電路板的寬度僅為18毫米,,就像使用U盤(pán)一樣方便,。

  采集電路硬件部分

  電路的硬件結(jié)構(gòu)

  本系統(tǒng)采用了CYGNAL公司的C8051F320芯片和ATMEL公司的AT45DB321C存儲(chǔ)芯片作為控制和存儲(chǔ)的主要芯片。圖1是信號(hào)采集系統(tǒng)的采集及存儲(chǔ)系統(tǒng)框圖,。

  

基于USB數(shù)據(jù)采集及存儲(chǔ)系統(tǒng)框圖

 

  圖1 基于USB數(shù)據(jù)采集及存儲(chǔ)系統(tǒng)框圖

  從圖1中可見(jiàn),,在采集過(guò)程中,傳感器的輸入模擬信號(hào)經(jīng)可變?cè)鲆娣糯笃鞣糯蠛笏椭罜8051F320,,經(jīng)過(guò)ADC轉(zhuǎn)換為數(shù)字信號(hào),。單片機(jī)片外有8個(gè)45DB321C芯片組成了一個(gè)32MB的Data flash存儲(chǔ)器,,采集到的數(shù)據(jù)不斷地通過(guò)SPI接口傳送到45DB321C芯片中存儲(chǔ)。

  與其他型號(hào)芯片相比,C8051F320帶有USB接口,,片內(nèi)的USB功能控制模塊符合USB2.0規(guī)范,,可在全速或低速下運(yùn)行,并具有1KB USB緩存,、集成收發(fā)器,,無(wú)需外部電阻??梢耘cPC機(jī)即插即用,。當(dāng)需要數(shù)據(jù)時(shí),可將采集存儲(chǔ)電路從現(xiàn)場(chǎng)取回,,通過(guò)USB接口回放到PC機(jī)中,,在LabVEIW平臺(tái)上進(jìn)行波形顯示和數(shù)據(jù)分析處理。

  8051F320與45DB321C的硬件接口

  系統(tǒng)中C8051F320與45DB321CI采用SPI單主多從機(jī)的方式通信,。引腳NSS作為從機(jī)選擇線,,選擇存儲(chǔ)芯片,低電平有效;SCK作為串行外設(shè)接口發(fā)送和接收數(shù)據(jù)的同步時(shí)鐘信號(hào);RDY/BUZ作為判斷設(shè)備不忙或準(zhǔn)備接收新的指令操作的信號(hào)線;SO,、SI作為數(shù)據(jù)傳輸線,。

  本系統(tǒng)設(shè)計(jì)上考慮使用8片45DB321C芯片,最大容量達(dá)32MB,通過(guò)片選CS1~CS8分別連到各45DB321C的CS端,。時(shí)鐘SCK只對(duì)被選中的45DB321有效。本系統(tǒng)使用多片F(xiàn)lash芯片的設(shè)計(jì)除了提供充足的存儲(chǔ)空間之外,,還解決了一個(gè)關(guān)鍵問(wèn)題,,就是借鑒硬盤(pán)領(lǐng)域RAID技術(shù)的思路,通過(guò)對(duì)4片一組的Flash順序操作實(shí)現(xiàn)一個(gè)基本的并行加速,,解決了Flash寫(xiě)入速度過(guò)慢的問(wèn)題,,大大提高了存儲(chǔ)性能。

  具體電路如圖2所示,,其中8片存儲(chǔ)器的SPI采用級(jí)聯(lián)只畫(huà)出一片,,各自的CS片選信號(hào)由74HC138譯碼給出。

  

單片機(jī)與FLASH存儲(chǔ)器的接口電路

 

  圖2 單片機(jī)與FLASH存儲(chǔ)器的接口電路

  采集電路的程序軟件

  采集電路的程序是指固化在C8051F320 中的程序,,采用c語(yǔ)言編寫(xiě),,由主程序模塊、ADC數(shù)據(jù)采集,、Flash數(shù)據(jù)存儲(chǔ)和USB通信四部分組成,。

  主程序和ADC數(shù)據(jù)采集

  主程序主要完成系統(tǒng)初始化狀態(tài)指示操作控制和參數(shù)設(shè)置啟動(dòng)A/D轉(zhuǎn)換等。

  ADC數(shù)據(jù)采集程序?qū)?lái)自傳感器的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)的,。本系統(tǒng)中,,ADC的轉(zhuǎn)換是通過(guò)Timer2的自動(dòng)溢出來(lái)觸發(fā)的,,而采集的速率可以事先通過(guò)上位機(jī)設(shè)置。

關(guān)鍵字:單片機(jī) USB接口 電力補(bǔ)償

 

Flash數(shù)據(jù)存儲(chǔ)程序

 

  C8051F320芯片與Flash存儲(chǔ)器的通信采用SPI接口方式,,數(shù)據(jù)傳輸率為12MHz(位/秒),。本設(shè)計(jì)中,C8051F320工作在SPI主機(jī)模式,,SPI總線的數(shù)據(jù)傳輸都將由C8051F320發(fā)起,。首先對(duì)SPI相關(guān)SFR SPI0CFG寄存器和SPI0CN寄存器進(jìn)行配置,使其工作在3線主模式12MHz,。通信時(shí)首先用GPIO引腳來(lái)選擇相應(yīng)的Flash從器件,,隨后通過(guò)讀取SPIDAT來(lái)進(jìn)行讀寫(xiě)操作。在使用Flash芯片進(jìn)行讀寫(xiě)操作時(shí),,首先要確定Flash存儲(chǔ)器的狀態(tài),。可通過(guò)寫(xiě)入D7H命令,,讀取狀態(tài)寄存器判斷設(shè)備是否Ready或處于Bus

  y狀態(tài),。確定狀態(tài)后,可根據(jù)數(shù)據(jù)手冊(cè)中的命令格式進(jìn)行相關(guān)的讀寫(xiě)以及擦除操作,。

  USB通信程序

  固件編程是USB設(shè)備開(kāi)發(fā)過(guò)程里的主要工作,。固件的主要任務(wù)是初始化單片機(jī)和外設(shè),發(fā)送USB請(qǐng)求,,響應(yīng)主機(jī)的標(biāo)準(zhǔn)設(shè)備請(qǐng)求,。根據(jù)設(shè)備的功能分類(lèi)完成各種數(shù)據(jù)交換請(qǐng)求。初始化編程主要完成USB控制器的初始化,、端點(diǎn)初始化,,交叉開(kāi)關(guān)和I/O口初始化、系統(tǒng)時(shí)鐘設(shè)置,,控制器使能,。初始化后,USB設(shè)備可隨時(shí)插入主機(jī)中,,主機(jī)將遵循USB協(xié)議對(duì)設(shè)備進(jìn)行識(shí)別和初始化,。主機(jī)識(shí)別到設(shè)備之后對(duì)設(shè)備進(jìn)行配置,調(diào)用相應(yīng)的驅(qū)動(dòng)程序,,配上上位機(jī)軟件進(jìn)行相關(guān)通信操作,。

  Silicon lab公司提供了USBXpress的開(kāi)發(fā)套件。通過(guò)使用USBXpress庫(kù),,大大簡(jiǎn)化了USB固件程序和PC端驅(qū)動(dòng)程序的開(kāi)發(fā),。 USBXpress通過(guò)一系列函數(shù)實(shí)現(xiàn)單片機(jī)端的應(yīng)用程序接口(API)。這些函數(shù)封裝了USB協(xié)議的細(xì)節(jié),,使得程序開(kāi)發(fā)人員不需要了解USB的過(guò)多細(xì)節(jié)即可使用USB進(jìn)行數(shù)據(jù)通信(見(jiàn)圖3),。

  

單片機(jī)與PC機(jī)的USB通信

 

  圖3 單片機(jī)與PC機(jī)的USB通信

  本系統(tǒng)中主要用到了初始化,、讀、寫(xiě),、中斷這四個(gè)函數(shù):

  初始化USB_Init(0,0xEA61,NULL,NULL,Serial,250,0x80,0x100)函數(shù);塊寫(xiě)函數(shù)Block_Write();塊讀函數(shù)Block_Read();USB中斷使能函數(shù),。

  USB的所有處理程序都是通過(guò)USB的中斷服務(wù)程序完成的。進(jìn)入U(xiǎn)SB中斷后,,程序調(diào)用Get_Interrupt_Source()函數(shù)獲得USB中斷的進(jìn)入原因,。然后根據(jù)不同的入口情況,來(lái)進(jìn)行相應(yīng)的處理,。比如收到數(shù)據(jù)之后,,讀取相應(yīng)的緩沖區(qū)內(nèi)容到內(nèi)存中;收到初始化命令時(shí),復(fù)位單片機(jī)內(nèi)的各個(gè)狀態(tài)參數(shù),。USB通信流程圖示于圖4,。

  

USB通信流程圖

 

  圖4 USB通信流程圖

  PC機(jī)端軟件程序

  計(jì)算機(jī)端軟件程序包括兩部分:USB驅(qū)動(dòng)程序和用戶應(yīng)用程序。

  USB驅(qū)動(dòng)程序

  USB驅(qū)動(dòng)程序是一個(gè)軟件組件,,封裝了應(yīng)用程序存取硬件設(shè)備的功能函數(shù),。有些設(shè)備具有相同的屬性,把它們歸為一組標(biāo)準(zhǔn)類(lèi)別,,可以定義設(shè)備類(lèi)規(guī)范作為該類(lèi)設(shè)備的主機(jī)驅(qū)動(dòng)框架,。設(shè)備類(lèi)驅(qū)動(dòng)程序使用相似的函數(shù),處理不同設(shè)備間的通信,,這樣使設(shè)備類(lèi)驅(qū)動(dòng)程序的開(kāi)發(fā)可以脫離設(shè)備制造商,。

  USB驅(qū)動(dòng)程序模型一般分為五層(見(jiàn)圖5)。

  

USB驅(qū)動(dòng)程序模型

 

  圖5 USB驅(qū)動(dòng)程序模型

  用戶端若要從設(shè)備讀取數(shù)據(jù),,將調(diào)用一個(gè)應(yīng)用程序接口API,,如OpenFile,SiUSBXp.dll實(shí)現(xiàn)這個(gè)API,。總線驅(qū)動(dòng)程序控制對(duì)總線上所有設(shè)備的訪問(wèn),。

  本系統(tǒng)中,,開(kāi)發(fā)USB設(shè)備驅(qū)動(dòng)程序的工具使用了USBXpress Development Kit。主要函數(shù)如下:

  S

  I_Open()函數(shù);SI_Close()函數(shù);SI_Read函數(shù);SI_Write()函數(shù);SI_GetNumDevices()函數(shù);SI_CheckRXQueue()函數(shù),。

關(guān)鍵字:單片機(jī) USB接口 電力補(bǔ)償

 

   用戶應(yīng)用程序

 

  本系統(tǒng)中,,應(yīng)用程序采用NI公司的LabVIEW軟件進(jìn)行編寫(xiě),運(yùn)用圖形化的C語(yǔ)言進(jìn)行軟件開(kāi)發(fā),,實(shí)現(xiàn)數(shù)據(jù)的顯示,、滿足不同需要的分析功能以及對(duì)數(shù)據(jù)采集硬件的參數(shù)設(shè)定(見(jiàn)圖6)。

  

回放數(shù)據(jù)波形顯示界面

 

  圖6 回放數(shù)據(jù)波形顯示界面

  結(jié)語(yǔ)

  基于C8051F320 USB接口的采集存儲(chǔ)電路把計(jì)算機(jī)技術(shù)與傳統(tǒng)信號(hào)采集技術(shù)緊密結(jié)合起來(lái),,充分發(fā)揮PC機(jī)和單片機(jī)各自的優(yōu)點(diǎn),,實(shí)現(xiàn)傳感器信號(hào)的采集,、存儲(chǔ)、顯示和處理,。而借助USB接口的通信功能,,減小了數(shù)據(jù)傳輸系統(tǒng)的復(fù)雜性。

 

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。