如何檢查USB器件工作與否
確定USB 芯片是否已經正常工作,是所有調試的基礎,得到電路板之后,這是一個首
先要解決的問題。
判斷USB 芯片是否已經工作,可以從兩個方面來判斷,一是將CLKOUT 設為12M(缺
省為4M),然后用示波器量CLKOUT 引腳,若確為12M 而不是4M,則說明USB 的地址
和數據都可以正確傳送,各種信號線接法正確,USB 芯片可以正常工作,硬件基本沒有問
題。
另一方面,如果使用SoftConnect,則在主程序中進行軟連接后,如果GL_N 燈閃爍幾
下,則PC 機上出現未知設備,則說明USB 進行軟連接正常,也說明芯片已經工作了。
除了這兩點之外,在整個調試標準設備請求階段,都應該將中斷寄存器的內容通過串
口發送出來,以便進行查看。另外就是還可以使用Bus Hound,觀察USB 總線上的數據,
從而判斷主機與設備之間的通信已經進行到哪一步了。
在主程序中,對USB 初始化過程為:
① 初始化MCU 的各種端口;
② 進行中斷初始化,設置中斷服務程序入口地址,將MCU 的中斷方式設置為低電平
觸發,因為D12 只要進入中斷后INT_N 就一直為低。
③ 斷開SoftConnect,延時1 秒后再次連接
④ 進入主程序循環,等待中斷的到來,端點0 的中斷處理程序會將數據放至緩沖區中,
主程序在前臺判斷是否有 Setup 包(通過一個變量,當中斷服務程序檢測到有Setup 包時,
設置該變量),然后執行相應的控制端點的傳輸。
主程序的這些工作完成以后,便可以根據前面提供的兩種方法測試D12 芯片是否已經
工作了。 以下兩點還應該引起注意:
PDIUSBD12 的中斷輸出引腳INT_N 只要中斷寄存器不為0 就保持低電平,所以單片機
的對應中斷應設置成電平觸發;中斷處理后要用讀上次傳輸狀態寄存器清除中斷寄存器中對
應位(D0-D5)。
PDIUSBD12 對內部寄存器的讀寫沒有邊界限制,程序設計中一定不要讀寫超過端點深
度的數據。特別對于描述符請求,由于其長度大于Control IN 深度(64Bytes),要分幾個數
據周期傳輸。
新聞熱點
疑難解答