找回密码
 立即注册
查看: 71|回复: 8

请问我们这个USB CDC支持9数据位的吗?

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-25 10:07:34
已绑定手机

14

主题

45

回帖

288

积分

中级会员

积分
288
发表于 2025-10-21 11:44:27 | 显示全部楼层 |阅读模式
如题,我这边有个特殊的设备,要求串口设置9个数据位,但大多数工具只能设置5、6、7、8数据位
回复

使用道具 举报 送花

3

主题

1848

回帖

544

积分

等待验证会员

积分
544
发表于 2025-10-21 11:48:00 | 显示全部楼层
您好,关于您提到的“USB CDC 是否支持 9 数据位”的问题,以下是我们从技术角度进行的详细说明和分析:

USB CDC(Communication Device Class)是USB设备类规范中的一种,主要用于实现虚拟串口设备(VCP,Virtual COM Port)的功能。在标准的USB CDC规范中,数据位的设置通常遵循RS-232串口通信的定义,即支持5、6、7、8位数据位。这是由CDC类设备所模拟的传统串口行为决定的。

然而,是否支持9位数据位(通常称为“9位异步串行通信”或“9-bit framing”),则取决于以下几个方面:

1. USB CDC类规范本身的支持情况  
   根据USB-IF发布的CDC类规范文档(如“Universal Serial Bus Class Definitions for Communication Devices Version 1.2”),其中定义的线路状态设置(通过SETLINECODING请求)中,数据位字段(bDataBits)仅支持5、6、7、8位,未包含9位选项。因此,从标准CDC类协议层面来说,是不支持直接设置9个数据位的。

2. 主机操作系统对扩展功能的支持  
   在某些操作系统中(如Linux),通过特定的驱动或内核模块可以实现对9位模式的支持,但这通常需要设备端和主机端都具备相应的扩展支持。例如,在Linux中,某些串口驱动(如使用tty驱动框架)可以通过ioctl接口设置9位数据位,但这需要底层硬件和USB驱动栈也支持这种非标准模式。

3. 设备端硬件和固件实现  
   如果设备端芯片(如STM32、NXP LPC、TI MSP430等)支持在USB CDC模式下自定义数据位处理,或者其固件可以绕过标准的SETLINECODING机制,通过自定义控制请求或特定方式模拟9位传输,则有可能实现对9位数据位的支持。但这属于非标准实现,需主机端驱动配合。

4. 实际应用中的替代方案  
   如果您的设备确实需要使用9位数据位(例如用于地址/数据标识、多点通信等场景),可以考虑以下几种替代方案:
使用USB转RS-485/RS-422芯片,这些接口通常支持9位模式;
在应用层模拟第9位(如使用保留位或特殊编码方式);
使用具有自定义类(Vendor Specific Class)的USB设备,自行定义通信协议,以支持9位帧格式。

总结:  
标准的USB CDC协议并不支持9个数据位的设置,因其规范中仅定义了5~8位的数据位选项。如需实现9位串口通信,需依赖于设备端与主机端的特殊实现或扩展支持,建议查阅所用芯片厂商的技术文档或SDK,确认是否支持非标准的9位模式,或考虑采用自定义类USB设备方案。

如有进一步具体应用场景或芯片型号,欢迎提供更多信息,我们可以协助您进一步分析解决方案。

国芯人工智能 技术支持团队  
2024年11月

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:346
  • 最近打卡:2025-11-02 14:55:10
已绑定手机

90

主题

3357

回帖

7523

积分

荣誉版主

无情的代码机器

积分
7523
发表于 2025-10-21 14:05:58 | 显示全部楼层
串口支持九位,USB-CDC数据转给串口,串口设置为9位模式即可


截图202510211404311523.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:544
  • 最近打卡:2025-10-31 09:14:02
已绑定手机

48

主题

2300

回帖

8120

积分

论坛元老

积分
8120
发表于 2025-10-21 14:09:49 | 显示全部楼层
USB-CDC是芯片通过USB接口跟电脑或者USB主机通信,传输数据8位。
USB-CDC转串口与其他设备通信的话,串口可设置9位模式。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-25 10:07:34
已绑定手机

14

主题

45

回帖

288

积分

中级会员

积分
288
发表于 2025-10-21 15:48:35 | 显示全部楼层
乘风*** 发表于 2025-10-21 14:09
USB-CDC是芯片通过USB接口跟电脑或者USB主机通信,传输数据8位。
USB-CDC转串口与其他设备通信的话,串口可 ...

Eof、Error、Break、Event、Xon、Xoff 这些串口特殊控制字符的参数,可以设置吗?
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-25 10:07:34
已绑定手机

14

主题

45

回帖

288

积分

中级会员

积分
288
发表于 2025-10-21 15:49:06 | 显示全部楼层
erci*** 发表于 2025-10-21 14:05
串口支持九位,USB-CDC数据转给串口,串口设置为9位模式即可

Eof、Error、Break、Event、Xon、Xoff 这些串口特殊控制字符的参数,可以设置吗?

点评

这有的是软件报文,有的是IO信号,需要核对软件需求,自行在软件内处理相关软硬件逻辑  详情 回复 发表于 2025-10-21 16:14
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:346
  • 最近打卡:2025-11-02 14:55:10
已绑定手机

90

主题

3357

回帖

7523

积分

荣誉版主

无情的代码机器

积分
7523
发表于 2025-10-21 16:14:57 | 显示全部楼层
ykeu*** 发表于 2025-10-21 15:49
Eof、Error、Break、Event、Xon、Xoff 这些串口特殊控制字符的参数,可以设置吗? ...

这有的是软件报文,有的是IO信号,需要核对软件需求,自行在软件内处理相关软硬件逻辑
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:28
  • 最近打卡:2025-10-25 10:07:34
已绑定手机

14

主题

45

回帖

288

积分

中级会员

积分
288
发表于 2025-10-21 16:22:18 | 显示全部楼层
erci*** 发表于 2025-10-21 16:14
这有的是软件报文,有的是IO信号,需要核对软件需求,自行在软件内处理相关软硬件逻辑
...

您好,请问有这方面的例程吗,这里面应该只有Break(中断信号)是硬件层的,其他都是软件控制,感谢

点评

相关定制业务,没有例程。 串口外设例程可以参考软件资源区对应型号实验箱等例程: [attachimg]118336[/attachimg]  详情 回复 发表于 2025-10-21 16:49
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:346
  • 最近打卡:2025-11-02 14:55:10
已绑定手机

90

主题

3357

回帖

7523

积分

荣誉版主

无情的代码机器

积分
7523
发表于 2025-10-21 16:49:54 | 显示全部楼层
ykeu*** 发表于 2025-10-21 16:22
您好,请问有这方面的例程吗,这里面应该只有Break(中断信号)是硬件层的,其他都是软件控制,感谢 ...

相关定制业务,没有例程。
串口外设例程可以参考软件资源区对应型号实验箱等例程:
截图202510211649437093.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-11-3 03:05 , Processed in 0.146290 second(s), 101 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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