劉彥 黔南民族師范學院計算機科學系 558000
基于PDIUSBD12的USB接口設計應用研究
劉彥 黔南民族師范學院計算機科學系 558000
USB設備的廣泛使用,使得USB接口的設計與開發(fā)越來越重要,PHILIPS公司的USB接口控制芯片PDIUSBD12性價比高簡單易用,是較為理想的USB接口設計開發(fā)芯片。文章主要從主機與PDIUSBD12之間的數(shù)據(jù)通信過程的層面來介紹USB設備的設計開發(fā)。
USB;PDIUSBD12;端點;描述符
USB以其傳輸速度快、可靠性高、易于擴展、功耗低等優(yōu)點已被廣泛地應用在計算機外設中,已成為計算機與外設通信的主流接口。而PHILIPS公司的PDIUSBD12芯片以其價格便宜、接口方便、可靠性高等特點較為廣泛的在USB設備接口系統(tǒng)中被選用。PDIUSBD12芯片是純粹的USB接口芯片,僅負責處理USB的通信,設計時還必須要選用一個MCU來進行協(xié)議處理和數(shù)據(jù)交換。
USB主機輪流查詢各個USB端口,當USB設備插入USB端口時由PDIUSBD12內(nèi)部集成的上拉電阻使主機檢測到D+與D-之間有電壓差,就認為有新的USB設置接入。
USB枚舉指的是USB主機從USB設備讀取USB的各種描述符信息,從而知道是什么設備,如何進行通信等,然后根據(jù)這些信息來加載合適的驅(qū)動程序。
主機檢測到有新的USB設置接入等待100ms后向USB設備發(fā)出復位請求,USB設備接到復位請求后,設置其地址為0,并產(chǎn)生一個外部中斷信號通知主機,新接入的USB可以地址0來進行通信,然后USB主機向地址為0的設備的端點0發(fā)送獲取設備描述符請求,設備收到該請求后,按固定格式返回一個端點0所支持的最大數(shù)據(jù)包的設備描述符給主機。由于PDIUSBD12的端點0只有16個字節(jié)(在所獲取的設備描述符的第8個字節(jié)處可看到PDIUSBD12端點0的最大包長),而標準的設備描述符為18字節(jié),這一次的請求只能獲取部分(16個字節(jié))設備描述符。
在第一次復位并獲取部分設備描述符后,USB主機再對設備復位一次,并往地址0的端點0發(fā)出一個SET_ADDRESS設置地址的請求(見表1),該地址是由USB主機負責分配并且是唯一的。USB設備在收到該地址后,返回0長度的狀態(tài)包,主機收到狀態(tài)包,就會返回一個應答包ACK給設備。設備在收到這個ACK之后,就可以啟用新的地址了。這樣設備就分配到了一個唯一的設備地址,以后主機就可以通過它來進行訪問該設備了。
表1 SET_ADDRESS請求的結構
在USB設備啟用新地址后,USB主機重新向新地址發(fā)出獲取設備描述符的請求,這一次主機將分兩次從PDIUSBD12的端點0中獲取完整的18個字節(jié)(16+2)的設備描述符,從而獲知USB設備的基礎屬性,如支持的傳輸數(shù)據(jù)長度、所用USB協(xié)議版本、設備版本號、PID、VID等,設備描述符的結構見表2。
在獲取完整的設備描述符之后,主機就會發(fā)送一個試探性的GET_CONFIGURATION獲取配置描述符的請求,USB設備收到該請求后就返回9字節(jié)的配置描述符(其結構見表3)。
在第一次獲取配置描述符后,就可以知道配置描述符集合的總長度,然后再發(fā)一次GET_CONFIGURATION請求,這時主機將分三次從PDIUSBD12的端點0中獲取完整的34個字節(jié)(16+16+2)的配置描述符集合——9字節(jié)的配置描述符、9字節(jié)的接口描述符、9字節(jié)的HID描述符、7字節(jié)的端點描述符。
在獲取了必須的設備描述符和配置描述符集合后,還可選擇是否獲取字符串描述符和報告描述符。字符串描述符可表述所要顯示的設備信息的文字,報告描述符是USB HID設備用來傳送數(shù)據(jù)的,這里不作詳細介紹。
完成USB設備的枚舉后,主機就能知道USB設備工作方式的各種特性,正式識別USB設備并能與之進行數(shù)據(jù)通信,就可以自己寫測驅(qū)動或使用通用驅(qū)動與計算機進行通信了。
PDIUSBD12的驅(qū)動程序設計主要實現(xiàn)三個功能:(1)初始化PDIUSBD12和與之相連的MCU,包括PDIUSBD12的復位和初始化全局變量;(2)在枚舉過程中為每一次的請求(如獲取設備描述符請求)編寫中斷服務程序;(3)用戶讀/寫端點的函數(shù)。
USB技術的日益成熟,越來越多的計算機外設使用USB接口,使得USB接口的設計開發(fā)顯得尤為重要,而設計開發(fā)USB接口設備必須對數(shù)據(jù)的通信過程有深入認識,本文以PDIUSBD12作為USB設備的接口控制芯片詳細深入地介紹了主機與USB接口間的數(shù)據(jù)通信過程,開發(fā)者可根據(jù)此過程編寫相應的服務程序便可完成USB設備的開發(fā)。
表2 設備描述符的結構
表3 設備描述符的結構
[1]范曉青,袁中凡,歐協(xié)峰.PDIUSBD12的USB接口設計中的應用[J].儀器儀表用戶.2009,2.
[2]張安生.PDIUSBD12在USB接口設計中的應用探析[J].現(xiàn)代教育設備.2008,2.
[3]劉榮.圈圈教你玩USB[M].北京航空航天大學出版社.2009.
10.3969/j.issn.1001-8972.2010.09.055
劉彥(1977-),男(仡佬族),貴州都勻,黔南民族師范學院計算機科學系講師,研究方向為硬件技術。