基于USB HID類(lèi)數(shù)據(jù)通信的直流電源監(jiān)控設(shè)計(jì)
摘要:為了實(shí)現(xiàn)直流電源的監(jiān)控,提出了一種具有USB HID數(shù)據(jù)通信功能的直流電源設(shè)計(jì)方案。詳細(xì)論述了基于STM32 USB固件庫(kù)(USB-FS Device library V3.3)的自定義HID類(lèi)下位機(jī)的實(shí)現(xiàn),介紹了如何在VC2010集成開(kāi)發(fā)環(huán)境中編寫(xiě)多線程上位機(jī)程序并運(yùn)用PlotLab(一個(gè)快速信號(hào)繪圖和可視化的VCL組件)顯示實(shí)時(shí)波形,最后再以實(shí)驗(yàn)開(kāi)發(fā)板和PC實(shí)現(xiàn)了HID數(shù)據(jù)通信,證明了此監(jiān)控設(shè)計(jì)方案的可行性。
關(guān)鍵詞:STM32;USB HID;VC2010;固件庫(kù)
USB的“即插即用”使其成為了現(xiàn)行十分流行的計(jì)算機(jī)應(yīng)用接口,從最初的USB1.1到USB2.0及已經(jīng)出現(xiàn)的USB3.0協(xié)議,USB取得了很大的發(fā)展,并有取代RS232之趨勢(shì),越來(lái)越多的電子設(shè)備開(kāi)始包含USB接口,當(dāng)電子設(shè)備擁有了USB接口,設(shè)備將會(huì)更易實(shí)現(xiàn)數(shù)據(jù)通信方便設(shè)備的使用和功能的擴(kuò)展。
1 USB HID類(lèi)簡(jiǎn)介
在眾多的USB設(shè)備類(lèi)型中,HID類(lèi)是Windows完全支持的第一批設(shè)備類(lèi)型,它是為一些人工的輸入輸出設(shè)備而設(shè)計(jì)的,連接到計(jì)算機(jī)的USB設(shè)備幾乎都包含HID類(lèi),用于信號(hào)控制。Windows系統(tǒng)自帶了HID類(lèi)的驅(qū)動(dòng)程序,所以使用HID類(lèi)來(lái)實(shí)現(xiàn)數(shù)據(jù)通信將無(wú)需為其開(kāi)發(fā)、安裝驅(qū)動(dòng),PC應(yīng)用程序可以直接使用Windows API與之進(jìn)行通信,這樣將會(huì)大大的降低開(kāi)發(fā)難度,縮短開(kāi)發(fā)周期。
2 電源系統(tǒng)概述
直流電源基于STM32F107VC設(shè)計(jì),可以通過(guò)電源的LCD和鍵盤(pán)或者PC上位機(jī)監(jiān)控電源,PC上位機(jī)可以設(shè)定電源的輸出并能以1 kHz或者100 kHz(只持續(xù)0.1 s)的采樣率觀察電源的輸入輸出波形。整個(gè)電源的系統(tǒng)簡(jiǎn)化框圖如圖1所示,市電經(jīng)PFC(功率補(bǔ)償)后經(jīng)過(guò)不可控整流電路變成直流,STM32F107X主控模塊通過(guò)電源面板或者USB接口連接PC上位機(jī)實(shí)現(xiàn)用戶交互,同時(shí)STM32F107X利用AD檢測(cè)電源的輸入輸出,運(yùn)用數(shù)字PID產(chǎn)生PWM控制BUCK電路將整流后的直流變換成用戶想要的輸出,單端反激電路為主控模塊提供5 V電源,這些與平常的BUCK直流電源相比除了擁有USB接口其他并無(wú)太多差異。整個(gè)下位機(jī)軟件流程圖如圖2所示,下位機(jī)程序在開(kāi)始時(shí)初始化外設(shè)和定義全局變量,再開(kāi)啟USB、DMA和定時(shí)器等中斷,之后就循環(huán)等待本地面板的控制并刷新面板,DMA在將AD采樣電源輸入輸出得到的數(shù)值存入4個(gè)全局變量之后產(chǎn)生中斷將4個(gè)全局變量根據(jù)發(fā)送模式送入U(xiǎn)SB發(fā)送緩沖區(qū),定時(shí)器定時(shí)利用這4個(gè)全局變量和PID算法控制電源的輸出,USB中斷將發(fā)送緩沖區(qū)的數(shù)據(jù)發(fā)送給上位機(jī)和將接收到的數(shù)據(jù)存入接受緩沖區(qū)并根據(jù)接收到的數(shù)據(jù)更改下位機(jī)的全局標(biāo)志位。
USB HID類(lèi)的速度有限,最大有效數(shù)據(jù)速度為64 kByte/s(最大1 kHz的傳輸頻率,每次最大傳輸64 Byte),本設(shè)計(jì)采用的速度是:16kBy te/s(1 kHz的傳輸頻率,每次傳輸16Byte);這樣在不使用緩存的情況下只能以1 kHz的采樣率顯示實(shí)時(shí)波形,為了顯示更高采樣率的波形本設(shè)計(jì)使用了12 k的緩沖區(qū)存儲(chǔ)100 kHz采樣率的數(shù)據(jù),12 K的緩沖區(qū)可以存儲(chǔ)1 000次采樣的數(shù)據(jù),在下位機(jī)采樣率為100 kHz的情況下1 000次采樣對(duì)于下位機(jī)是0.1 s鐘,但對(duì)于上位機(jī)卻是1秒鐘,所以上位機(jī)選擇100 kHz采樣率查看下位機(jī)輸入輸出的操作每秒鐘只能操作一次,這也能基本滿足諧波分析的需求。本設(shè)計(jì)中上下位機(jī)傳遞的16 Byte中每個(gè)字節(jié)的含義如圖3所示。
pid控制器相關(guān)文章:pid控制器原理
評(píng)論