硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5256|回复: 1
收起左侧

[USB] USB-CDC-VCP的波特率等参数设置问题

[复制链接]

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2021-4-2 09:18:47 | 显示全部楼层 |阅读模式
如题,USB虚拟串口(VCP)在枚举成功后,上位机软件打开COM号后,需要设置不同的波特率,停止位等参数。
现在的问题是,这些参数是如何被上位机修改设置的呢?
我调试了一下代码,以STM32F103的USB库为例,发现有一个 LINE_CODING 的结构的变量 linecoding:
typedef struct
{
  uint32_t bitrate;
  uint8_t format;
  uint8_t paritytype;
  uint8_t datatype;
}LINE_CODING;

进一步调试,发现,是通过 USB-endp0发送SET_LINE_CODING 控制命令,调用 Virtual_Com_Port_SetLineCoding() 函数,获取到 linecoding 变量地址后,设置该变量的。
现在有一个疑问就是,LINE_CODING 结构体的定义,特别是成员的顺序和类型,是不是被CDC-VCOM协议固定的呀?哪里有文档说明么?
另一个问题就是,LINE_CODING结构的成员值,在实际使用时,是不是也是固定的,或是用户自己固定配对即可的?
如,不同的上位机软件对 paritytype 值的设置就有好多不同的值,有paritytype=3,paritytype=4这种设置。但STM32F103的参考例程中,只有 paritytype=0/1/2的。
百度了一圈,好像都没看到有涉及到这一块的,好晕
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2021-4-2 15:21:33 | 显示全部楼层
这个有格式的,统一标准的,上usb.org下载相应文档
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 06:00 , Processed in 0.156831 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表