新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于AVR VUSB技術(shù)的數(shù)控直流穩(wěn)壓電源設(shè)計

基于AVR VUSB技術(shù)的數(shù)控直流穩(wěn)壓電源設(shè)計

作者: 時間:2013-10-11 來源:網(wǎng)絡(luò) 收藏


圖3 電壓電流放大電路。

1.3 VUSB接口

VUSB是用普通的通用單片機,配以較高頻率的晶振(12MHz或16MHz),模擬產(chǎn)生USB所需信號,從而模擬出標準的USB HID設(shè)備(鼠標、鍵盤、簡單通信)的解決方案,構(gòu)成一個低成本的USB設(shè)備。USB共有4根線,2根5V電源,兩根差分信號線D+、D-.由于是低速設(shè)備,D-必須要有1.5kΩ的上拉電阻。

VUSB接口電路如圖4所示,單片機的PD1和PD2通過68Ω的限流電阻分別接入標準USB接口的D-、D+.

需要注意的是D+必須接上單片機的外部中斷0管腳,在此為了簡化連接直接將PD2(INT0)接入作為其中的一根信號線使用。由于USB信號線的電壓最大為3.6V,所以在D-和D+上分別并接了一個3.6V的穩(wěn)壓二極管。

圖4 VUSB接口電路。

2 系統(tǒng)軟件設(shè)計


軟件設(shè)計包括下位機和上位機2部分。下位機主要負責接收上位機的設(shè)置電壓值,并經(jīng)過轉(zhuǎn)換后輸入到MAX522,從而輸出設(shè)置電壓。上位機則通過VUSB與下位機連接,并通過模擬的USB協(xié)議向下位機寫入數(shù)據(jù)。

2.1 下位機軟件

下位機軟件流程圖如圖5所示。其中設(shè)備初始化包括單片機端口初始化、DAC初始化及VUSB端口初始化。在初始化之后,程序進入主循環(huán),在其中加入了USB輪詢函數(shù)usbPoll(),用來偵測USB事件。一旦偵測到上位機有USB通信請求時,usbdrv就會調(diào)用usbFunctionSetup()函數(shù)來處理請求。在此請求函數(shù)中接收上位機傳來的數(shù)據(jù)并將此數(shù)據(jù)轉(zhuǎn)換后寫入MAX522數(shù)據(jù)端口,啟動DAC輸出電壓。

圖5 下位機軟件流程。

設(shè)計中需注意以下幾點:

1)單片機方面的VUSB 底層驅(qū)動函數(shù)使用USB,最新版本的-USB為C語言編寫并有詳細的注釋。開發(fā)平臺為WinAVR.GCC項目文件夾中需包含驅(qū)動文件(usbdrv文件夾),并對usbconfig.h中的部分宏定義做一些修改。

#define USB_CFG_IOPORTNAME D//這個接口連接USB總線。當配置為"D"時,寄存器PORTD,PIND and DDRD將有效。

#define USB_CFG_DMINUS_BIT 1//位配置,是在USB_CFG_IOPORT 中連接USB D-的線??梢耘渲脼榻涌诘娜魏挝弧?BR>
#define USB_CFG_DPLUS_BIT 2//位配置,是在USB_CFG_IOPORT 中連接USB D+的線。也可以連接到任意口,但是注意D+一定要連接都中斷口INT0

2)單片機在接收到讀取數(shù)據(jù)命令時會自動調(diào)用usbFunctionSetup(uchar data[8]),在函數(shù)內(nèi)把全局指針*usbMsgPtr指向所要發(fā)送的數(shù)據(jù)首地址,然后返回(函數(shù)返回值)所發(fā)送數(shù)據(jù)的長度就可以了。由于采用的是命令包方式傳輸數(shù)據(jù),每次只能接收4個字節(jié)的有效數(shù)據(jù),存儲在data[2]~data[4]中。


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉