2. Main Loop Flow:
2018年12月9日 星期日
[STM32] STM32F072B + FreeRTOS v8.2.3 + VCP + KB + MOUSE + HIDRAW 2 WAY
1. 本篇是基於STM32F072B Discovery Board unboxing + FreeRTOS v8.2.3 + USB_VCP_HID 這一篇為基礎,加上HID RAW雙向的功能後產生的新文章.
2016年10月12日 星期三
STM32F429 SEGA Master System Simulator with Joystick [SMS]
1. 趁著3天連假, 把SEGA Master System Simulator的程式加上了USB Host和Joystick的部份, 如此一來就可以使用Joystick來執行遊戲, 而不是用很難使用的Touch Screen.
2. 測試影片如下:
3. 主要修改的部份如下:
4: Joystick Information: ( Logitech F710 2.4G )
5. Test Code Download link: (IDE: Keil-MDK V5.20)
STM32F429_DiscoveryBoard_SMS_EMU_JoyStick_Logitech_F710
6. 本測試程式中的遊戲僅供教育用途,請勿使用於商業用途.
2. 測試影片如下:
3. 主要修改的部份如下:
- 使用INCBIN將遊戲檔案直接導入, 不需另外透過其它工具將遊戲燒入Flash.
- 使用Joystick取代Touch Screen的操作, 讓操作更加方便, Joystick是透過USB Host的方式加入程式中.
- Joystick的鍵值是在UpdateController function中去判斷, 若更換不同的Joystick, 則此程式需要客製化修改.
4: Joystick Information: ( Logitech F710 2.4G )
5. Test Code Download link: (IDE: Keil-MDK V5.20)
STM32F429_DiscoveryBoard_SMS_EMU_JoyStick_Logitech_F710
6. 本測試程式中的遊戲僅供教育用途,請勿使用於商業用途.
2016年9月18日 星期日
STM32F103_USB_Test_Code(VCP/HID/MSC)
1. STM32F103大概是在還沒接觸M4之前, 最常用的ST MCU, 即便是到了現在還是有許多人在使用這一顆Cortex-M3, 那今天要介紹的是STM32F103 USB Code.
2. 本範例主要是在STM32F103上面移植Virtual COM-Port(VCP) , Keyboard/Mouse/HID RAW(HID) , Mass Storage(MSC)這三種比較常用的類型.
3. 由於STM32F103並沒有類似像Discovery Board這種板子, 因此本範例的GPIO Define如下, 請參考的人自行根據自己手上的板子來修改.
2. 本範例主要是在STM32F103上面移植Virtual COM-Port(VCP) , Keyboard/Mouse/HID RAW(HID) , Mass Storage(MSC)這三種比較常用的類型.
3. 由於STM32F103並沒有類似像Discovery Board這種板子, 因此本範例的GPIO Define如下, 請參考的人自行根據自己手上的板子來修改.
4. How to switch VCP/HID/MSC mode: (usb_select.h, default is MSC mode)
5. Main flow:
- GPIO & RAM-Disk(8KB) Init.
- Disconnect USB-Pull up(PA8).
- I2C Init.
- USB Init.
- Systick Init.
- Connect USB-Pull up(PA8).
- Check Button Status, if press the button, run HID or VCP test code.
- It will run SCSI command when switch to MSC mode.
6. How to adjust RAM-Disk Size: (mass_mal.c)
7. Test flow:
- MSC mode:
- VCP mode:
- HID mode:
- Keyboard:
- Mouse:
- HID RAW:
8. Test Code Download Link:
2016年7月29日 星期五
[Qt] STM32F401 USB-HID Test with Qt
1. 延續之前的STM32F401/411 USB-Device HID Test(Control in/out & Interrupt in/out) 這篇測試
所進行的延伸, 最大的差別在於之前測試時使用Bus Hound下命令去控制LED On/Off和接收
Device上傳的資料, 而現在則改用Qt所寫的視窗程式來進行測試.
2. Test Video:
3. Test Code Link:
4. Tool Link:
5. To be continued......
所進行的延伸, 最大的差別在於之前測試時使用Bus Hound下命令去控制LED On/Off和接收
Device上傳的資料, 而現在則改用Qt所寫的視窗程式來進行測試.
2. Test Video:
3. Test Code Link:
- STM32F401_Discovery_Board_Test_Code (IAR EWARM v7.70)
4. Tool Link:
5. To be continued......
2016年7月10日 星期日
STM32F401/411 USB-Device HID Test(Control in/out & Interrupt in/out)
1. 本篇是基於STM32F401/411 HID Test(Keyboard + Mouse + HidRaw)這篇文章, 繼續探討HID雙向溝通的測試方式.
2. 範例程式下載連結: (使用IAR EWARM v7.7)
stm32f401_411_usb_device_hid_test_2016
============================= interrupt in/out =============================
3. 由於之前的範例僅有mcu to pc(interrupt in)的這個部份, 因此首先我們要先補上pc to mcu(interrupt out)的這個部份.
2. 範例程式下載連結: (使用IAR EWARM v7.7)
stm32f401_411_usb_device_hid_test_2016
============================= interrupt in/out =============================
3. 由於之前的範例僅有mcu to pc(interrupt in)的這個部份, 因此首先我們要先補上pc to mcu(interrupt out)的這個部份.
- 先到usbd_hid_core.c去新增相關function.
- 宣告USBD_HID_DataOut function.
- 新增endpoint out的描述.
- 由於新增了endpoint out的描述, 因此需要加上endpoint out描述的length.
- 目前程式定義pc to mcu的data length為8bytes.
- 將程式燒進去後, 我們便可以開啟bus hound來進行測試, 當程式成功執行且與pc連結後, 應該會在bus hound上看到如下顯示的畫面, 此時我們選擇最上層的USB輸入裝置, 並double click它.
- 此時我們選擇endpont 1裡面的interrupt out端點, 接著將Data Length修改為8, 並在底下data的區域中輸入與畫面相同的資料, 且依照1 - 2 - 3 - 4的步驟執行..
- 此時應該已經看到LED3已經開始亮起.
- 我們可以從USBD_HID_DataOut裡面看到, 當接收完pc傳來的8bytes後, 程式便開始判斷要對哪一個LED執行on/off function, 其中我們目前只有用到Report_buf[0] 和 Report_buf[1]而已, 分別代表的意義如下:
Report_buf[0]: LED number
Report_buf[1]: On/Off
Report_buf[2]~Report_buf[7]: Reserve
- interrupt in/out 的bus hound操作圖.
- 當按下user button後, 就會開始透過interrupt in的端點來傳送資料給pc, 接著pc透過interrupt out去開啟/關閉LED3.
============================= control in/out =============================
4. 除了使用EP-1 interrupt in/out外, 還可以使用EP-0 control in/out這個方式來與 pc之間溝通, 因此首先我們要補上control in/out的程式.
- 先對EP0所需使用的變數與程式進行宣告.
- 將EP0的程式加到call back function.
- 接著在USBD_HID_Setup function內, 加入set report和get report這2個command.
- 接著完成EP0_RxReady和EP0_TxSent這兩個function.
- control out(set report command) flow:
- USBD_HID_Setup function => case HID_REQ_SET_REPORT => USBD_HID_EP0_RxReady function
- control in(get report command) flow:
- USBD_HID_Setup function => case HID_REQ_GET_REPORT => USBD_HID_EP0_TxSent function
- pc to mcu測試方式與interrupt out相同, 將程式燒入後, 使用bus hound打開裝置後, 對EP0 Control double click, 接著再輸入指令(set report), 則可以開啟/關閉LED.
- control in/out 的bus hound操作圖.
- 使用set report command讓pc傳送資料給mcu來開啟/關閉LED, 接著pc再透過get report command去讀取資料.
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:
4. Test flow:
5. Test Video: 為了方便拍攝, 僅使用數字鍵盤測試.
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.
4. Test flow:
- 在未接上Keyboard至裝置時, 僅會執行LED/Button/LCM的Init function.
- 當接上keyboard且系統偵測到後, 會在LCM上顯示Keyboard的基本資訊., 若是要開始進行測試的話, 就需要按下user button.
- 當按下user button後, 就會到達顯示的視窗, 此時在Keyboard上面按下按鍵, 就會顯示在LCM上面.
- 這是按下"jkl456789"的訊息.
5. Test Video: 為了方便拍攝, 僅使用數字鍵盤測試.
2016年7月6日 星期三
STM32F429 USB-Host HID Mouse Test
1. 本範例是利用stm32f429 discovery board來實做出usb-host mouse, 並把mouse cursor和Button顯示在內建的LCM上.
2. 程式完整範例下載連結: (使用IAR EWARM v7.7)
stm32f429_usb_host_hid_mouse
3. main flow:
5. Test Mouse model name: Logitech M105
6. Test Video:
2. 程式完整範例下載連結: (使用IAR EWARM v7.7)
stm32f429_usb_host_hid_mouse
3. main flow:
- 初始化Host HID
- LCD/GPIO/Button的初始化放在 USBH_USR_Init() function
- mouse callback function主要有2個, 分別為Init和Decode.
4. Test Flow:
- 程式燒錄上電後, 若是在未插入滑鼠的情況下, 則會看到如下的訊息, 代表USB Host Library開始運作.
- 接著將mouse插入usb port, 則會看到基本的vid/pid等滑鼠相關的資訊.
- 此時按下User Button後, 就可以看到滑鼠的滑動範圍和cursor, 還有left/middle/right button的顯示區.
5. Test Mouse model name: Logitech M105
6. Test Video:
訂閱:
文章 (Atom)