基于PDIUSBDl2芯片的USB接口設計
2 硬件電路設計
由PDIUSBDl2和ADuC812構成的USB接口電路如圖2所示。PDIUSBDl2的8位并行數據接人ADuC812的PO口,地址線A15(P2.7)作為PDIUSBDl2的片選,地址線A14(P2.6)作為PDIUSBDl2的命令或數據的選擇線。在片選信號有效的前提下(P2.7=0),當P2.6=1時,給PDIUSBDl2發命令;當P2.6=0時,給PDIUSBDl2寫數據或從PDIUSBDl2的Buffer中讀數據;因此,地址0x7FFF發命令,地址0x3FFF讀寫數據。PDIUSBDl2與ADuC812的數據交換采用中斷方式(外部中斷0)。他的一個輸出(GL_N)接LED對其狀態進行監控,這個LED在USB被連接時會發光,在進行數據傳輸時會閃爍,LED常亮或一直不亮說明USB接口有問題。
![]() |
USB設備通過4線電纜接入主機或USB Hub,這4線分別是:Vcc(總線電源),GND(地線),D+和D一(數據線)。主機通過D+和D一上的電壓變化來檢測到設備的狀態,當沒有設備連接到USB端口時,D+和D一線上的下拉電阻就將2條數據線拉到近地,當檢測到任一條數據線電壓接近Vcc,而其他保持近地電壓,那么主機就知道該設備已經準備好了。
主機通過檢測是哪一條數據線電壓變高來確定設備是全速或低速,當D+數據線高時,就為全速;當D一數據線低時,就為低速。PDIUSBBDl2的全速模式通過軟連接(SoftConnectTM)在D十上接1個1.5k12的上拉電阻。
3 固件設計
當設備連接到主機以后,主機通過給PDIUSBDl2的端點0發送包含標準USB請求的控制傳輸(即Setup包),PDIUSBDl2產生一個中斷給MCU(INT0),MCU通過讀PDIUSBDl2的中斷寄存器和最后一次傳輸狀態寄存器來對每一個請求作出響應,并通過PDIUSBDl2的端點0回送請求信息。主機從返回的信息中讀取描述數據,分配和載人一個設備驅動程序并對設備進行配置。設備被配置好后,就可以使用配置中支持的端點來傳輸數據。這一部分工作由MCU來控制完成,并且該控制程序需要固化在ADuC812的內部ROM中,稱之為固件(firmware)。
PDIUSBDl2的端點0有3個狀態,其變化關系如圖3所示,固件程序必須利用這3種狀態關系來正確地處理控制傳輸。把主機通過PDIUSBDl2的端點0給設備發USB請求設為OUTs,通過端點0接收數據設為INs。MCU處理來自主機的Setup包(Control Out)的軟件流程圖如圖4所示,MCU通過PDIUSBDl2的控制端點。給主機發送描述符數據(Control In)的軟件流程圖如圖5所示。PDIUSBDl2的描述符數據必須嚴格遵循USBl.1協議第九章(Chap9)的規定,描述符數據包括設備描述符、配置描述符、接口描述符、端點描述符、字符串描述符。
![]() |
![]() |
完成PDIUSBDl2的固件(Firmware)程序后,在USB設備驅動程序的開發中筆者使用了Jungo公司的WinDriver 5.03,應用程序的開發使用的是VC 6.0。
4 結 語
該USB接口適合于高速數據采集系統與主機進行數據通信,同時,他也為便攜式系統提供了方便、快捷和可靠的接口解決方案。目前,USB已經廣泛地應用在PC的外設上,特別是USB 2.0協議推出后,數據傳輸能力和速度大大提高,使得USB數碼相機、數碼攝像機能在短時間內完成大容量的圖像傳輸。此外,USB的突出特點使得他必將在更廣闊的領域得到應用。
評論