本帖最后由 hello、C 于 2022-3-26 22:06 编辑
功能描述:将 USB device 虚拟为 Com Port.利用 USB 虚拟串口 来接收上位机指令或者发送一些设备信息。
在路径下:AT32F425_Firmware_Library_CN\project\at_start_f425\examples\usb_device\virtual_comport
打开 Keil Pro, 查看 readme, 如下:
详情说明:利用 USB 虚拟串口将收到的数据,利用 USART2 的 TX 端口发送出去,将 USART2 的 RX 端口接收到的数
据信息利用 USB 虚拟串口转发至上位机。
查看其源码,其使用了 USB Device Driver 和 CDC Class.
可以参考:
USB2.0 :
usb_20.pdf
(5.71 MB)
CDC1.1:
usbcdc11.pdf
(594.4 KB)
将 Keil 工程编译链接后,将程序烧写到单片机后,会发现在电脑的设备管理器中,多了一个串口的 COM 口。
将板载的 USART2 的 复用端口 PA2 PA3 短接,利用串口调试工具,发现向其发送数据后,但并未收到。开始
感觉到奇怪,拾起勇气转入调试模式测试看看。发现 USB 串口确实虚拟成功了,然后向虚拟串口发送数据,
发现虚拟串口确实接收到了,也转发了其相应大小的数据,如图所示:
接收为空:
USB 虚拟串口接收了数据:
USB 虚拟串口接收到了同样的长度:
啊,十分的诡异及匪夷所思,怎么会没发出去呢?
带着怀疑的态度,来到了 USART2 的初始化代码,如图所示:
再次查阅并确定了 F425 的 USART2 端口复用表,使用了错误的端口复用功能,如图所示:
修改 USART2 的端口复用配置代码后,如图所示:
重新编译链接并下载程序到目标板上,连上串口工具进行了调试,如图所示:
USB虚拟串口已成功收到串口调试助手发送的数据,并将其转发,Very Nice.
如需了解串口虚拟详情,可以后面在讨论!!!到此 USB 设备的上行下行工具已准备到位!!!
|