2015年11月12日 星期四

STM32F401/411 Virtual Com-Port(VCP) Two Way Test

1. 此測試程式是利用stm32f401 discovery board實做出virtual com port function(vcp), 並透過vcp
    接收一個binary file, 並於接收完畢後, 將整個binary file透過vcp顯示出來.

2. 完整範例和測試檔案下載連結:
    STM32F401_411_VCP_TwoWay_TestCode

    GPIO_IOToggle.bin

3. 硬體電路連結方式如下, 將stm32f401 discovery board的mini usb(stlink)和micro usb(usb slave)
    與電腦連接.
 


 4. 安裝stm32 virtual com port driver, link: stm32_vcp_driver

5. main flow:

  • 目前usb的設定預設值是使用virtual com port, 之後會再解釋hid.
  • 當程式開始執行且USB Init成功之後, 可以在裝置管理員的地方看到STMicroelectronics Virtual COM Port(COMx)的裝置.



  • main.c的流程只有兩個function, 第一個是一直在等待vcp接收bin file, 第二個是將接收完成的bin file打印在vcp顯示出來. 


  • vcp rx function:  目前接收的上限是設定在50kbytes, 如果是使用stm32f411 discovery board的話, 則可以設定到100kbytes.
  • vcp tx function:  只需要將要傳送出去的buffer帶進來即可.


6. Test flow:

  • 選用一個可以send file的terminal tool(ex: Tera Term or Terminal_v1.93b.....).
  • 接下來使用Tera Term來測試如何傳送及顯示一個binary file.
  • 開啟後設定Tera Term去開啟stm32 virtual com port(ex: COM7), 設定可以參考下圖.




  • 當設定成功後, 可以看到下圖畫面, 代表已經連線.




  • 此時點選File -> Send file:



  • 選定一個要傳送的test binary file(ex: GPIO_IOToggle.bin), 並按下開啟即會開始傳送, 傳送過程中, LED4 & LED5會一直閃爍, 當停止閃爍恆亮時, 代表STM32F401接收完成.




  • 當接收完畢後, 程式即會自動將接收的binary file透過vcp傳送出去, 因此可以在Tera Term上的視窗看到如下畫面.




  • 我們可以使用UltraEdit開啟GPIO_IOToggle.bin來簡單比對一下是否相同, 以下截取開始和結尾的畫面來簡單比較, 看來應該是沒有差異, 代表傳送接收皆正確.























沒有留言:

張貼留言