1. USB虚拟串口简介

USB虚拟串口属于USB通信设备类。在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口。在系统内部,USB控制器提供了一个批量传输IN端点和一个批量传输的OUT端点,用于数据的接收和发送,模拟串口的RX和TX线。另外USB控制器还提供中断IN端点,发送当前串口的状态,实现对串口传输的控制。串口设备的数据,由系统的串口采集,在芯片内完成USB包的封装,通过USB总线上传至主机,再由相应的串口应用程序进行处理。对用户来说,看到的是基于串口的数据采集和传输,而实际上实现的是基于USB协议包的数据传输。

1.1      USB CDC协议简介

USB的CDC类是USB通信设备类(Communication Device Class)的简称。CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信设备)使用的USB子类。根据CDC类所针对通信设备的不同,CDC类又被分成以下不同的模型:USB传统纯电话业务(POTS)模型,USB ISDN模型和USB网络模型,其中USB传统纯电话业务模型又可分为直线控制模型(Direct Line Control Model)、抽象模型、电话模型,如图 1.1所示。本文讨论的虚拟串口就属于USB 传统纯电话业务模型下的抽象控制模型。

图 1.1 CDC分类

1.2      Linux下USB虚拟串口框架

如图 1.2所示,Linux实现了gadget.h定义的统一接口,然后上层的各种gadget driver(如serial.c等)调用这一套统一的接口可以去实现不同类型的功能,如USB串口、U盘、USB以太网等等。

图 1.2 USB虚拟串口框架

在Linux中通过USB虚拟的其他设备都需要经过Gadget层的绑定,最终与虚拟的相关设备进行绑定。有关Gadget的绑定流程在之前的文档中已做过详细介绍,在此不做过多阐述。

USB 虚拟串口简介相关推荐

  1. android usb虚拟串口,USB 虚拟串口简介

    1. USB虚拟串口简介 USB虚拟串口属于USB通信设备类.在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口.在系统内部,USB控制器提供了一个批量传输IN端点和一个批量传输的OUT ...

  2. 【正点原子STM32连载】第五十八章 USB虚拟串口(Slave)实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  3. STM32CUBEMX F103 HAL库开发之 USB虚拟串口

    今天心血来潮想写点东西 做比赛这么久了,应该写点东西,一是为了给自己学的知识一个总结,二是可以锻炼自己的写作能力与表达能力,帮助他人避免自己走过的坑 stm32 USB VPC虚拟串口简介 很多stm ...

  4. USB虚拟串口实验_STM32F1开发指南——USB学习笔记

    前言 STM32F103系列芯片都自带USB接口,不过STM32F103的USB都只能用来做设备,而不能用作主机. 目录: 53.1 USB简介 USBF103自带的USB符合USB2.0规范.   ...

  5. linux内核配置usb虚拟串口,Linux USB虚拟串口设备

    Linux内核中usb设备侧驱动程序分成3个层次:UDC驱动程序.Gadget API和Gadget驱动程序.UDC驱动程序(USB控制器)直接访问硬件,控制USB设备和主机间的底层通信,向上层提供与 ...

  6. STM32 USB虚拟串口原理(上)

    USB虚拟串口是使用USB的CDC(CDC为communication device class(virtual port com))类实现的一种通讯接口.使用STM32自带的USB slave功能可 ...

  7. stm32usb做虚拟串口和键盘_关于stm32f103的USB虚拟串口程序移植

    手边有个项目要用到USB传数据到主机,虽然有很多种方式,但最后还是选择了USB虚拟串口模式,将数据上传至pc端: 然而这就涉及到了移植问题,在keil下官方已经给出了一个完整的USB TO VCOM的 ...

  8. 【荔枝派zero】usb虚拟串口实现

    参考http://zero.lichee.pro/完成基本系统搭建 实现USB虚拟串口需要配置内核 make ARCH=arm menuconfig进入内核配置菜单,并进入到下面路径: ->De ...

  9. stm32f103gd32的usb虚拟串口,打印类printer组合设备

    stm32f103&gd32的usb虚拟串口+打印类printer组合设备@TOC stm32f103&gd32的usb虚拟串口,打印类printer组合设备 由于gd32和stm32 ...

最新文章

  1. springboot-6-整合jdbc
  2. python 函数返回值的特殊情况
  3. 计算缺失的元素 java_计算包含缺失值的相关系数
  4. ORACLE 11g 使用ROWNUM完美解决ORA-00600:内部错误代码
  5. 改变vim注释的颜色
  6. python——正则表达式
  7. 【独家】玩流量,先读懂数据再说吧!PM玩转流量课程笔记大放送
  8. 更改UISearchBar button属性
  9. C语言程序设计实验最短路径,7最短路径C语言程序设计.pdf
  10. 工作124:报错可以直接查看下面红字寻找对应的报错
  11. Sql语句实现某列每条记录与同列最大值的差值计算
  12. 靠模仿红牛成为饮料界的“黑马”,东鹏特饮的未来如何谱写?
  13. 如何判断手机是否支持ASTC格式的贴图
  14. python seo cms_「SEO帝国」 SEO中讲的 CMS是什么意思
  15. Manjaro为包管理器pacman和yaourt\yay 添加多线程下载
  16. MATLAB代码保存为word,MATLAB怎么保存为Word?
  17. D-Link DP-LINK302打印服务器WIN7版软件
  18. linux踢人命令 pkill踢人用法
  19. arm oe linux gnueabi 系统,[MDM9X07] ME3610/3630开发环境快速搭建
  20. S-属性定义与L-属性定义

热门文章

  1. 『Java CVE』CVE-2022-33980: Apache Commons Configuration 读文件RCE
  2. filter和find的区别
  3. KUDU和IMPALA的结合使用
  4. springboot项目 o.s.b.d.LoggingFailureAnalysisReporter 错误解决方法
  5. 【李宏毅】机器学习-RNN
  6. 企业发布重要通知短信收不到该怎么办
  7. 量子计算的基本概念:量子位、量子纠缠、量子比特、量子算法
  8. 谈老人机却不是老人机
  9. MAC地址和IP地址说明
  10. 航测新旗舰|大疆M300+赛尔102S