基于USB HID類數據通信的直流電源監(jiān)控設計
3 USB HID接口系統設計
USB接口系統框圖如圖4所示,USB接口系統有3個部分組成:USB主機,USB設備和USB互連;USB設備分為集線器(Hub)和功能(Function)兩類,集線器為USB端口擴展用,本設計USB設備為功能類即下位機,到主計算機的USB接口叫做USB主機,USB互連主要是USB設備與主機的連接和通信。由圖4可知要實現本設計中的USB接口,對于上位機需要調用HID類的驅動完成上位機程序編寫,對于下位機要設計接口硬件電路和利用固件庫完成數據收發(fā)工作。本文引用地址:http://www.ex-cimer.com/article/175749.htm
3.1 接口硬件設計
STM32F107X擁有符合USB 2.0(全速12 MB/s)并支持主從設備轉換(On-The-Go)的標準外設,在本設計中USB外設只工作在設備模式下,但在接口硬件設計時為主機模式留了余地,方便以后設備升級為OTG USB。STM32F107的PA10、PA11和PA12引腳分別對應OTG USB的ID、DM和DP信號線,設計時只要連接到USB的接插件即可。OTG USB比其他USB多出的ID信號線是用于兩個OTG USB互連時協調主從關系的,另外OTG USB的電源需要是可控的:可以選擇由總線供電又可以由自己供電;所以設計時USB電源需經一個IO控制的開關(三極管即可)上拉到電源。
3.2 下位機軟件設計
本設計利用ST公司為STM32系列提供的USB固件庫(本設計采用USB-FS Device library V3.3)完成下位機HID類程序的編寫。USB固件庫在下位機中的具體運用方法可參考文獻,USB固件庫被分為硬件驅動層(STM32_USB-FS_Device_Driver)和應用接口層(Application Interlace layer),硬件驅動層管理USB的硬件設備和USB標準協議的直接交互,它又由Low Layer和Medium Layer兩個層組成,應用接口層在最終應用和USB固件庫核心之間為用戶提供了一個完整的接口,我們只需要修改和使用應用接口層的的函數即可完成下位機的HID類程序編寫,整個固件庫中應用接口層的文件及其各自作用:usb_conf.h是配置文件、usb_desc(.h,.c)是USB設備描述文件、usb_prop(.h,.c)是USB設備特定屬性設置文件、usb_endp.c是非控制端點的正確傳輸中斷服務文件、usb_istr(.h,.c)是USB設備中斷處理文件和usb_pwr(.h,.c)是USB設備電源和連接管理文件。
USB下位機程序分為3部分:USB控制器的初始化、主機請求響應和通信數據收發(fā)3個部分:USB控制器的初始化包括端點的使能、中斷方式、數據緩存的設置等;USB HID類設備固件程序至少需要響應獲取描述符(GET_DESCRIPTOR)、設置地址(SET_ADDRESS)、設置配置(SET_CONF IGURAT ION)、設置閑置(Set_Idle)四種請求;通信數據收發(fā)部分的主要工作是以中斷方式向數據緩沖區(qū)讀寫數據。另外ST公司提供了Custom _HID案例,只需要在此基礎上修改就可實現本設計的HID類。
USB控制器的初始化我們需要修改usb_prop(.h,.c)文件中的CustomHID_Reset(void)函數使其初始化端點的數據量達到自己的需求。主機請求響應和通信數據收發(fā)本設計都是采用的中斷方式,下位機程序在Stm32f10x_it.c文件內處理下位機所有中斷,USB中斷的情況下程序會跳轉到usb_istr.c文件中處理所有USB中斷,USB中斷分為端點中斷和非端點中斷,非端點中斷主要包括各種協議上的中斷(總線掛起、復位、喚醒,幀起始、應答等),非端點中斷程序將會跳轉其他文件處理,端點中斷的情況下程序會跳轉到otgd_fs_int.c文件處理所有端點中斷,端點中斷分為控制端點中斷和其他端點中斷,控制端點主要用于枚舉它的處理程序我們不需要改動,我們的數據通信使用的是其他端點中斷,其他端點中斷的情況下程序將跳轉到usb_endp.c文件使用自定義的用戶處理函數,本設計需要編寫這些自定義的用戶處理函數完成通信數據收發(fā)部分設計,例如如在接受中斷中使用USB_SIL_Read(EP1_OUT,Receive_Buffer)函數可以將端點1(OUT)的數據讀到Receive_Buff er[]數組中。對于主機請求程序在Custom_HID案例的基礎上需要修改usb_desc(.h,.c)中的設備、配置和報告描述符后由程序內部函數(控制端點中斷的處理函數)使用這些描述符完成USB枚舉過程,修改比較多的是端點描述符和報告描述符,具體修改可以參考文獻。
3.3 PC上位機程序編寫
本設計的USB HID上位機應用程序是在VC2010集成開發(fā)環(huán)境下,利用Windows自帶HID類驅動的API和PlotLab(一個快速信號繪圖和可視化的VCL組件)開發(fā)的多線程人機交互界面。上位機程序流程圖如圖5所示,上位機程序是MFC的對話框程序,程序的界面負責顯示和接受用戶的輸入,在程序的開始建立了兩個線程和一個多媒體定時器,兩個線程分別為讀數據和寫數據服務,多媒體定時器的中斷為顯示波形服務。
pid控制器相關文章:pid控制器原理
評論