接收一個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.
- 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來簡單比對一下是否相同, 以下截取開始和結尾的畫面來簡單比較, 看來應該是沒有差異, 代表傳送接收皆正確.
沒有留言:
張貼留言