2016年7月8日 星期五

STM32F429 USB-Host HID KeyBoard Test

1. 本範例是利用stm32f429 discovery board來實做出usb-host keyboard, 並把keyboard上按下的按鍵顯示在內建的LCM上.

2.  程式完整範例下載連結: (使用IAR EWARM v7.7)
     stm32f429_usb_host_hid_mouse_keyboard

3. Main flow:

  • 程式基本流程與stm32f429_usb_host_hid_mouse的內容幾乎一模一樣, 僅差別在mouse/keyboard的init/decode程式而已.
  • 程式一開始仍然是對usb host hid 去做init.
  • 跟host hid mouse有差異的地方在callback function.


4.  Test flow:
  • 在未接上Keyboard至裝置時, 僅會執行LED/Button/LCM的Init function.


  • 當接上keyboard且系統偵測到後, 會在LCM上顯示Keyboard的基本資訊., 若是要開始進行測試的話, 就需要按下user button.

  • 當按下user button後, 就會到達顯示的視窗, 此時在Keyboard上面按下按鍵, 就會顯示在LCM上面.

  • 這是按下"jkl456789"的訊息.

5. Test Video: 為了方便拍攝, 僅使用數字鍵盤測試.




6 則留言:

  1. 請問一下,如果是多媒体按键的特殊鍵按下時會收到按鍵碼嗎?例如AL Calculator,AL Email,設備有用到hid_Multimedia_report_descriptor的部分。

    回覆刪除
    回覆
    1. Hello:
      還是會有鍵碼喔, 例如像最常看到的音量加減鍵, 只是你必須要在usb descriptor裡面定義,
      建議你可以先用bus hound先測試會比較好.

      Have a nice day,
      JustinWang

      刪除
    2. Hi Justin
      目前我們試過了幾個方式,用BUS BOUND去分析,確實是有資料的,也用羅輯分析儀去分析,在交握時會有兩個介面,介面之間的差別就是endpoint的部分,其中一個介面端點(endpoint)為1,另一個介面的端點為2。目前按下一般按鍵是有的鍵碼的,但按下特殊鍵是沒有的,用羅輯分析儀看HOST端只是以端點1的格式在詢問Device(Keyboard),並沒有以端點2的介面詢問,所以當按下特殊鍵(AL Calculator)時就沒有資料回覆。請問一下您說的usb descriptor裡面定義一般不是在Device裡面改嗎?HOST端需要修改什麼嗎?

      刪除
    3. Hi:

      我的意思是說先使用bus hound確認Device從哪一個端點上報特殊鍵的資料, 還有要確認特殊鍵和一般鍵是不是使用不同的Report ID來上報資料給Host.

      Have a nice day,
      JustinWang

      刪除
    4. Hi Justin
      目前已知Device是從端點2報上特殊鍵的資料,特殊鍵與一般鍵是使用不同的Report ID,特殊鍵是使用0x82, 一般鍵是使用0x81給Host。

      刪除
    5. 請問特殊鍵的資料現在解決了嗎?

      刪除