上位机用USB做虚拟串口,总算抓到一个纯代码的总结了,没有坑的完美解决。
Posted 机械狂魔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上位机用USB做虚拟串口,总算抓到一个纯代码的总结了,没有坑的完美解决。相关的知识,希望对你有一定的参考价值。
用libUSB来实现自己的驱动+下位机理论速度。=1M字节每秒。
达到极限速度
WINDOWS已经自带虚拟串口驱动,只不过还需要一个Inf文件
方法1:直接下载一个串口inf,来修改文件。
方法2:用libUSB来实现自己的驱动。。。及应用。用那个工具安装成自己定义的设备名字,应用程序就根据PID,VID来找到我们的设备,进行一系列读写。
|
下位机:
1,配置描述符的编写,见工程代码注释。主要是CDC类接口用端点2,数据接口用端点1和端点3
2,Get_line_coding请求,获取串口属性。波特率、停止位、校验类型、数据位数。避免移植的大小端、对齐、填充模式等问题。不用结构体,使用数组。这是设置真实串口波特率,而虚拟串口想多快就有多快
usb_prop.c
LINE_CODING linecoding =
{
115200, /* baud rate*/
0x00, /* stop bits-1*/
0x00, /* parity - none*/
0x08 /* no. of bits 8*/
};
{
115200, /* baud rate*/
0x00, /* stop bits-1*/
0x00, /* parity - none*/
0x08 /* no. of bits 8*/
};
3,Set_line_coding,设置串口属性
4,处理串口数据
Usb_endp.c
EP1_IN_Callback() 设备向主机输入数据,
EP3_OUT_Callback() 主机向设备输出数据
以上是关于上位机用USB做虚拟串口,总算抓到一个纯代码的总结了,没有坑的完美解决。的主要内容,如果未能解决你的问题,请参考以下文章
stm32发送数据给上位机用串口调试助手接收为什么只接收到第一个字节数据?
STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯