2015-11-02 98 views
0

我有一個自定義的PS2鍵盤(8×8矩陣)接口與AT89C51ED2微控制器,現在我需要將其更改爲USB接口。我一直在研究USB HID類通信的基礎知識(USB HID類規範,USB完整版,超越邏輯),並且對它背後的理論有了一點了解。如何編寫自定義USB鍵盤的固件?

但是我無法理解固件部分,我讀過Microchip提供的示例源代碼的演示小鍵盤應用程序,但是我無法在代碼中理解如何將數據(按鍵)發送到IN端點以及主機如何通過輪詢來讀取。 我知道端點是從其中發送數據到主機的緩衝區,但是它是微控制器的寄存器之一,我如何在我的代碼中使用它?

而且我一直在尋找合適的微控制器,USB支持,但不支持演示的是可用的,任何建議將有助於

+0

取決於您選擇的MCU型號*高度*。供應商在其微控制器中使用許多不同的USB實施。 –

回答

1

AT89C51ED2 datasheet沒有提到對USB硬件的支持,所以答案是否定的:一個端點不對應一個硬件寄存器。相反,端點將引用芯片RAM中的一些軟件緩衝區,以及一些數據來跟蹤端點的狀態。每個USB數據包的每一位必須由設備的固件來處理,並且端點是一種完全存在於設備固件中的抽象。

注:我假定鍵盤沒有某種USB接口芯片,並且USB電纜的數據線或多或少直接連接到單片機。

如果找不到鍵盤的源代碼,可以使用開源AVR軟件USB實現進行研究。下面是一些有用的鏈接:

請注意,您正在從事一個先進的項目,如果你不熟悉的AVR,USB,微控制器,逆向工程,和嵌入式開發/調試,首先從簡單的開始就可能會有用。