999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于STM32的USB HID接口多功能控制器設計

2020-09-14 04:33:22王曉東
唐山學院學報 2020年3期
關(guān)鍵詞:設備

王曉東

(唐山學院 計算機科學與技術(shù)系,河北 唐山 063000)

1 概述

USB總線協(xié)議是由Intel,Compaq,Microsoft等七家公司共同制定的串行接口標準[1],協(xié)議內(nèi)部包含完善的主從機通訊機制,支持從高速視頻傳輸?shù)降退俨樵儌鬏敹喾N通訊模式,傳輸速率高,從USB1.1協(xié)議發(fā)展到USB3.0協(xié)議,速度已達到5.0 Gbps,而且支持設備的帶電熱插拔,因此支持USB總線協(xié)議的設備使用起來十分方便,被廣泛應用在通用計算機和邊緣計算領域。如文獻[2]作者使用Windows的DDK開發(fā)工具,基于USB總線的HID人機接口協(xié)議,開發(fā)了一種USB接口自動測試設備。但對于工業(yè)系統(tǒng)開發(fā)者和廠商來說,USB驅(qū)動程序開發(fā)過程十分復雜,在Windows環(huán)境下需要使用WDK或者DDK開發(fā)工具,并且隨著操作系統(tǒng)的升級,開發(fā)工具和驅(qū)動程序也需要隨之升級,另外,商業(yè)開發(fā)USB設備驅(qū)動還需要繳納認證費用,增加經(jīng)濟負擔。因此大多數(shù)的工業(yè)控制器仍然使用串口或者USB轉(zhuǎn)串口的方式通訊,正常速度為幾十kbps到幾百kbps,效率較低。計算機的USB接口HID(Human Interface Device)類協(xié)議[3]負責人機接口設備如鼠標、鍵盤和游戲桿等和計算機交互操作。USB HID接口權(quán)限自由度高,特別是鼠標類設備具有操作系統(tǒng)最高權(quán)限,其每個操作信號、每組數(shù)據(jù)都可以在用戶許可的情況下發(fā)出或者接收,應用開發(fā)用戶可以調(diào)用HID接口的API函數(shù)支持人機接口類別的設備。

STM32系列硬件是專為要求高性能、低成本、低功耗的嵌入式應用設計的ARM Cortex內(nèi)核處理器,其內(nèi)部自帶flash和RAM,接口資源豐富,并自帶USB物理收發(fā)器,因此使用單芯片即可構(gòu)建完整的智能物聯(lián)網(wǎng)儀器儀表的核心模塊[4-5]。STM32處理器性價比很高,適合于工業(yè)和民用測控領域使用,文獻[6]即使用STM32搭建低成本的測量裝置,實現(xiàn)了高精度的電量測量。STM32處理器的通訊功能強大,在STM32處理器內(nèi)部集成了USB收發(fā)器,支持USB HID通訊協(xié)議,使用USB HID接口每次最多可發(fā)送1 024個字節(jié),對于USB2.0硬件,最大速度可以達到24.576 MB/s,足以滿足中等性能工業(yè)控制器的需求。有學者使用USB HID技術(shù)開發(fā)了專用的鼠標[7]、鍵盤[8]和手勢輸入設備[9],但是由于沒有主機數(shù)據(jù)輸出,僅有單向數(shù)據(jù)輸入功能,不能用于控制器。

本設計基于STM32構(gòu)建了一個使用USB HID協(xié)議的多功能控制器,數(shù)據(jù)傳輸工作采用中斷傳輸方式,主機和控制器(從機)之間建立相互獨立的寫入和讀出管道,上位機控制軟件直接調(diào)用HID接口的API函數(shù)實現(xiàn)對下位機硬件的讀寫控制。

2 系統(tǒng)硬件原理和組成

基于STM32的USB HID接口控制器的硬件系統(tǒng)結(jié)構(gòu)如圖1所示。控制器選擇STM32F103作為系統(tǒng)主處理器,其工作頻率為72 MHz,采用ARM CortexM3內(nèi)核,功耗約為0.1 W,其內(nèi)部集成了兩個AD采樣器,可以直接接收0~3 V的模擬輸入電壓,支持USB全速設備。主處理器通過定時器中斷輸出3.3 V的PWM信號,PWM信號經(jīng)過光電隔離后輸出給控制驅(qū)動電路。本設計使用LED驅(qū)動電路進行驗證,由于驅(qū)動電路工作在高電壓、大電流狀態(tài)下,因此PWM信號必須隔離輸出。在控制器系統(tǒng)集成多路光電隔離的GPIO信號,用于外部開關(guān)控制,系統(tǒng)中MAX3232作為UART串口驅(qū)動,用于調(diào)試接口和功能擴展。

圖1 USB HID接口控制器的硬件系統(tǒng)結(jié)構(gòu)圖

控制器USB HID接口部分的實際電路圖如圖2所示。STM32F103的PA11和PA12分別連接USB總線的DM和DP端,在DP端上拉1.5 kΩ電阻用于全速設備檢測熱插拔事件,如果DP端直接上拉到3.3 V電壓,因從機的上電延遲,會導致枚舉失敗,因此USB總線的上拉電阻接到STM32F103處理器的IO端口PB10,當控制器啟動,在固件main函數(shù)中將PB10拉高,從而等待USB插入事件,開始進行枚舉。

圖2 USB HID接口電路圖

3 USB HID接口多功能控制器設備固件軟件設計

參考USB HID協(xié)議,USB HID接口控制器和主機之間需建立兩種傳輸管道:控制傳輸管道和中斷傳輸管道。控制傳輸管道用于設備枚舉,從設備上傳設備描述符、配置描述符以及HID描述符等信息,下發(fā)Get請求和Set請求,在設備資源方面占用默認的端點0。因為本控制器屬于自定義的HID設備,首先需要重新定義HID報表描述符,在報表描述中增加和修改數(shù)據(jù)輸入和輸出報告,修改通訊數(shù)據(jù)包的字長、字數(shù)目、傳輸方向、最大值和最小值。HID報表描述符完成后,在HID描述符填充HID報表描述符信息(長度、類別)。控制器使用中斷傳輸進行實際的負載數(shù)據(jù)傳輸,其內(nèi)部分配兩個中斷類型的端點,分別用于數(shù)據(jù)接收和發(fā)送。

3.1 控制器USB HID接口枚舉和工作過程

控制器USB HID接口主從機枚舉工作和交互過程如圖3所示。主機檢測到從機接入后,開始標準設備枚舉過程,包括請求和接收設備描述符、設置從機地址、請求和接收配置描述符三個步驟。通過標準設備枚舉過程,主機獲得控制器的設備描述符、配置描述符、接口描述符和端點描述符。標準設備枚舉之后,進行HID類設備枚舉,主機向從機發(fā)送Get HID類描述符請求,然后收到HID類描述符和報表描述符。在控制器全部枚舉后,系統(tǒng)進入正常的工作狀態(tài),在Windows環(huán)境下主機通過調(diào)用ReadFile和WriteFile實現(xiàn)和從機之間收發(fā)數(shù)據(jù)。在Linux環(huán)境下可以調(diào)用libusb庫實現(xiàn)USB HID通訊。HID設備定義了6個HID類請求,在STM32固件程序的Setup階段中斷函數(shù)中響應這些請求命令,根據(jù)HID請求發(fā)送相應的HID類描述符。

圖3 控制器USB HID接口主從機枚舉工作和交互過程

3.2 控制器固件的HID類描述符定義及專用的數(shù)據(jù)結(jié)構(gòu)和對象變量

對于自定義的USB總線HID設備,必須重新構(gòu)建Report報表描述符[3]。圖4是控制器HID協(xié)議報表描述符的基本結(jié)構(gòu),包括輸入報告和輸出報告,有效數(shù)據(jù)報文包含8個字單元,每個字單元由8個二進制位(1個字節(jié))組成。報表描述符定義好后在HID設備的接口描述符和端點描述符進行傳輸方式定義,接口描述符的bNumEndpoints,bInterfaceClass和bInterfaceProtocol字段分別定義控制器端點數(shù)目、HID設備類別以及HID交互協(xié)議。

圖4 控制器USB HID接口協(xié)議報表描述符的基本結(jié)構(gòu)

控制器STM32硬件的固件程序使用三個數(shù)據(jù)結(jié)構(gòu)處理USB通訊事務,分別是:①DEVICE_INFO,保存USB請求命令和通訊狀態(tài)信息;②DEVICE_PROP,USB通訊過程的回調(diào)函數(shù),包括控制傳輸Setup階段處理,Stage IN和OUT事務處理,獲得設備、配置和字符描述符處理;③USER_STANDARD_REQUESTS,一組標準請求回調(diào)函數(shù)指針,用于定制上位機的標準請求,可編寫相應的函數(shù)實例化這些指針,也可以設置成NOP_Process系統(tǒng)函數(shù)。本控制器系統(tǒng)函數(shù)均設置成NOP_Process。控制器固件程序使用STM32開發(fā)庫定義以上三個數(shù)據(jù)結(jié)構(gòu)的實例化對象指針變量pInformation,pProperty,pUser_Standard_Requests處理USB通訊。在STM32的USB總線的中斷處理USB_LP_CAN1_RX0_IRQHandler中調(diào)用CTR_LP中斷服務函數(shù),中斷服務函數(shù)內(nèi)部這三個指針指向結(jié)構(gòu)體對象完成控制傳輸過程。

3.3 控制器固件軟件主控程序設計

多功能控制器固件主控程序流程如圖5所示。控制器分別使用中斷模式的端點1(管道EP1)、端點2接收和發(fā)送數(shù)據(jù)。在端點1的中斷服務中如果接收到一串長度和格式符合要求的數(shù)據(jù),即作為一條控制消息,將其放入一個消息隊列。在主程序中使用一個while循環(huán)任務作為后臺主線程程序,主線程程序首先檢測消息隊列是否為空,如果不為空,則從隊列中讀取一條控制消息,對控制消息進行CRC校驗,如果CRC校驗成功,則將控制消息里命令參數(shù)賦值給控制寄存器,然后在后續(xù)的過程中根據(jù)控制寄存器的值運行PWM控制程序、AD采樣程序、GPIO讀寫程序等子模塊。

圖5 多功能控制器固件主控程序流程圖

4 上位機對USB HID控制器讀寫程序設計

針對本USB HID接口多功能控制器,上位機軟件使用API函數(shù)實現(xiàn)USB HID功能,在Windows環(huán)境下可以調(diào)用hid.lib,hidclass.lib,hidparse.lib和setupapi.lib四個接口庫完成,而在Linux環(huán)境下可使用libusb調(diào)用libusb-1.0.so.0.1.0庫完成。限于篇幅,以下介紹Windows環(huán)境下上位機實現(xiàn)USB HID功能編程的方法。

在Windows環(huán)境下編程時程序中需要hidsdi.h和setupapi.h兩個頭文件。調(diào)用這兩個頭文件必須按照C語言的調(diào)用規(guī)則。Windows環(huán)境下上位機對USB HID接口控制器讀寫流程如圖6所示。首先找到HID設備的GUID,調(diào)用后獲得HID設備的指針,然后找到單個HID設備的信息,調(diào)用后使用CreaeFile函數(shù)按照設備路徑打開,設備打開后讀出設備屬性,然后根據(jù)設備屬性找到設備屬性中符合控制器ID(VID和PID)的設備,針對滿足條件的設備重新使用CreateFile函數(shù)調(diào)用兩次,建立讀寫句柄hReader和hWriter。以上過程是通過調(diào)用hidsdi.h和setupapi.h頭文件里面的HidD_GetHidGuid,SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces,SetupDiEnumDeviceInterfaceDetail等一系列API函數(shù)實現(xiàn)的。設備檢測過程中,因為USB從機設備最多有127個,因此設備遍歷檢測計數(shù)設置為127,即可保證全部HID設備屬性被檢測到。在主機的讀寫進程中直接調(diào)用ReadFile和WriteFile函數(shù)實現(xiàn)對控制器的讀寫,hReader和hWriter句柄是關(guān)鍵參數(shù)。

圖6 上位機對USB HID接口控制器讀寫流程圖

5 實驗驗證

在驗證實驗中,USB HID接口控制器和主機之間的數(shù)據(jù)流管道配置如圖7所示。主機通過EP0端點的控制傳輸方式對控制器進行枚舉和初始化;設備的端點1(管道EP1)用于接收主機實際控制信息,端點2(管道EP2)用于設備數(shù)據(jù)讀出,EP1,EP2工作采用中斷傳輸方式。控制器數(shù)據(jù)包的大小采用8個字節(jié),控制器和主機之間采用短數(shù)據(jù)包的形式保證控制器響應的敏捷性,每個控制輸出事務和狀態(tài)讀取的輸入事務均包含8個字節(jié)的有效數(shù)據(jù)。

圖7 控制器和主機之間數(shù)據(jù)流管道配置

實驗驗證用的處理器型號是STM32F103C8T6。圖8是USB HID接口控制器實際硬件電路和系統(tǒng)測試實驗圖。外部測試硬件使用一個LED光源,通過PWM接口控制LED恒流源驅(qū)動器輸出。

(a)實際硬件電路

圖9是示波器顯示的USB HID接口控制器PWM信號輸出的實際波形,其中(a)為50%占空比,(b)為80%占空比,硬件根據(jù)控制要求改變PWM信號的占空比。圖10是控制器通過PWM信號控制LED光源獲得的實驗數(shù)據(jù),橫坐標為PWM信號的占空比(ratio),其范圍從0.05到1.0(較小數(shù)據(jù)沒有顯示),縱坐標為LED工作電流值。LED的驅(qū)動電路使用LM3409恒流源驅(qū)動芯片,在實驗過程中上位機向控制器下發(fā)占空比(ratio)和頻率參數(shù),然后控制器根據(jù)這兩個參數(shù)生成PWM信號,PWM信號控制LED光源驅(qū)動芯片輸出的開關(guān),從而調(diào)節(jié)LED光源的亮度。選擇2 kHz和8 kHz的PWM信號頻率進行測試,由圖10可知,當選擇較高頻率(8 kHz)PWM信號時,LED調(diào)節(jié)的范圍較大,較小的占空比也有電流輸出,LED電流輸出最小值可以小于1 mA,可見控制器可以很方便地實現(xiàn)一個寬范圍的控制過程。控制器硬件平均工作電流為135 mA,功耗低、性能穩(wěn)定,數(shù)據(jù)測試過程中上位機輸出100%成功。系統(tǒng)經(jīng)過24 h長時間測試,能夠穩(wěn)定運行。

(a)通道1(50%的占空比)

圖10 控制器通過PWM信號控制LED光源圖示(改變占空比獲得電流輸出)

6 結(jié)論和展望

本文提出了一種基于STM32硬件的USB HID接口多功能控制器設計方案,主機和USB設備之間采用控制管道、讀管道和寫管道等相互獨立的多個傳輸管道實現(xiàn)控制數(shù)據(jù)的讀寫。通過重新定義USB HID報表描述符和設備與主機之間的雙向通訊控制流程,實現(xiàn)了可編程變頻PWM信號控制、GPIO讀入和輸出、模擬量AD采集多種功能。實驗驗證的結(jié)果表明,系統(tǒng)使用靈活,反應快速,可以穩(wěn)定運行。

此控制器可以在跨平臺操作系統(tǒng)的主機下使用,安裝和部署方便,且免驅(qū)安裝,可用于機器視覺系統(tǒng)、生產(chǎn)測試、工業(yè)測控自動化、儀器儀表、邊緣計算、可穿戴設備等領域,具備運算處理能力強、功耗小、使用和維護成本低等優(yōu)點,而且為應對智能傳感器大數(shù)據(jù)控制的需求,此控制器可以通過增加USB接口設置、修改包長、升級USB協(xié)議版本來滿足數(shù)據(jù)流傳輸?shù)囊螅虼司哂辛己玫膽脙r值。

猜你喜歡
設備
諧響應分析在設備減振中的應用
調(diào)試新設備
當代工人(2020年13期)2020-09-27 23:04:20
基于VB6.0+Access2010開發(fā)的設備管理信息系統(tǒng)
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
廣播發(fā)射設備中平衡輸入與不平衡輸入的轉(zhuǎn)換
電子制作(2018年10期)2018-08-04 03:24:48
食之無味,棄之可惜 那些槽點滿滿的可穿戴智能設備
500kV輸變電設備運行維護探討
HTC斥資千萬美元入股虛擬現(xiàn)實設備商WEVR
IT時代周刊(2015年8期)2015-11-11 05:50:37
Automechanika Shanghai 2014 之“看” 汽保設備篇
如何在設備采購中節(jié)省成本
主站蜘蛛池模板: 成人免费一级片| 日韩最新中文字幕| 国产乱子伦手机在线| 色综合手机在线| 日韩欧美国产成人| 91麻豆国产在线| 亚洲V日韩V无码一区二区| 欧美成人精品一级在线观看| 成人免费黄色小视频| 九色综合伊人久久富二代| 亚洲精品福利网站| 国产一区二区网站| 71pao成人国产永久免费视频| 91破解版在线亚洲| 国产精彩视频在线观看| 国产区免费| 国产欧美日本在线观看| 欧美中文字幕一区| 香蕉伊思人视频| 亚洲一区二区三区国产精品| 婷婷六月综合| 国产精品99在线观看| 露脸一二三区国语对白| 国产精品网址你懂的| 亚洲爱婷婷色69堂| 99中文字幕亚洲一区二区| 国产美女视频黄a视频全免费网站| 欧美另类图片视频无弹跳第一页| 99在线视频免费观看| 亚洲另类色| 欧美日韩精品一区二区视频| 亚洲无码A视频在线| 不卡无码h在线观看| 欧美特黄一免在线观看| 亚洲国产第一区二区香蕉| 免费国产福利| 在线观看欧美精品二区| 欧美日韩动态图| 亚洲欧美另类中文字幕| 国产精品浪潮Av| 成人在线不卡视频| 99热国产在线精品99| 欧美亚洲国产视频| 国产成人成人一区二区| 久草中文网| 真实国产乱子伦高清| 伊人激情综合网| 91国语视频| 色网站在线视频| 亚洲青涩在线| 超清无码一区二区三区| 国产美女丝袜高潮| 国产综合精品一区二区| 九九热精品视频在线| 99成人在线观看| 日韩午夜片| 国产又爽又黄无遮挡免费观看| 久夜色精品国产噜噜| 亚洲欧美日韩另类在线一| 色九九视频| 欧美精品成人一区二区视频一| 免费在线色| 日韩小视频在线观看| 亚洲精品动漫在线观看| 久久婷婷六月| 国产精品主播| 奇米精品一区二区三区在线观看| 欧美日韩91| 国产精品美女网站| 精品国产免费观看| 人妻丰满熟妇啪啪| 国产香蕉在线| jizz国产在线| 最新日韩AV网址在线观看| 热九九精品| 国产精品自在线天天看片| 91成人试看福利体验区| 国产自在线播放| 一级毛片在线免费视频| 一级毛片在线播放免费观看| 澳门av无码| 国产丝袜第一页|