usb与 hid, 串口 趣谈

目的

写这篇博客主要目的是为了解决我以前对于usb , hid , 串口这三者之前具体区别没彻底区分弄清楚, 导致概念上依然存在错误理解。

下面将会梳理我对这三个概念理解。

串口

串口,原名叫做串行接口(Serial Interface)别名叫COM口(串行通讯端口( cluster communication port ))。PC 机一般有两个串行口COM 1 和COM 2 。串行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的通信时,应使用串行口。通常COM 1 使用的是9 针D 形连接器,也称之为RS-232接口,而COM 2 有的使用的是老式的DB25针连接器,也称之为RS-422接口,不过已经很少使用。只要进行串行通讯的应该都属于串口

              RS-232 D型9针连接器

在这里插入图片描述

         RS-232 DB25针连接器(即RS-422)

在这里插入图片描述

特点是:

1. 串口叫做串行接口,也称串行通信接口,
2. 主要用于串列式逐位元数据传输。常见的为一般电脑
3. 按电气标准及协议来分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接外挂程式、电缆或协议。
4. USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。
5. 距离短、速率低。
6. 结构简单、支持热插拔

SATA 接口:

SATA的全称是Serial Advanced Technology Attachment(串行高级技术附件,一种基于行业标准的串行硬件驱动器接口),是由Intel、IBM、Dell、APT、Maxtor和Seagate公司共同提出的硬盘接口规范。

SATA即指Serial ATA,串行ATA,相对于常见的IDE接口(一种PATA接口,Parallel ATA,并行ATA)。这是一种完全不同于并行ATA的新型硬盘接口类型,由于采用串行方式传输数据而得名。SATA总线使用嵌入式时钟信号,具备了更强的纠错能力,与以往相比其最大的区别在于能对传输指令(不仅仅是数据)进行检查,如果发现错误会自动矫正,这在很大程度上提高了数据传输的可靠性。串行接口还具有结构简单、支持热插拔的优点。如今,SATA分别有SATA 1.5Gbit/s、SATA 3Gbit/s和SATA 6Gbit/s三种规范。

特点:

1. 硬盘接口规范
2. 采用串行方式传输数据
3. 嵌入式时钟信号,具备了更强的纠错能力, 提高数据传输的可靠性

USB接口

Universal Serial Bus(通用串行总线) 简称USB,是如今电脑上应用较广泛的接口规范,由Intel、Microsoft、Compaq、IBM、NEC、Northern Telcom等几家大厂商发起的新型外设接口标准。USB接口是电脑主板上的一种四针接口,其中中间两个针传输数据,两边两个针给外设供电。USB接口速度快、连接简单、不需要外接电源,最新USB3.0可达5.0Gbps;电缆最大长度5米。USB2.0电缆有4条线,2条信号线,2条电源线,可提供5伏特电源;USB3.0接口有9条线,6条(3对)信号线,3条电源线(2.0和3.0部分各有一条GND线,共用Vbus线)。USB电缆还分屏蔽和非屏蔽两种,屏蔽电缆传输距离较长,价格较贵;非屏蔽电缆传输距离短,因为易受干扰,但价格便宜;USB通过串联方式最多可串接127个设备;支持热插拔。

是一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。

USB接口规范接口速度
USB1.01.5Mbps/192KBps
USB1.112Mbps/1.5MBps
USB2.0480Mbps/60MBps
USB3.05Gbps/640MBps

特点:

1. 通用串行总线, 电脑上应用较广泛的接口规范, 新型外设接口标准, 输入输出接口的技术规范, 是一种串口总线标准
2. 采用串行方式传输数据, 支持热插拔
3. 接口速度快、连接简单、不需要外接电源

博客来源

HID

USB HID
USB-HID设备6-HID报告描述符详解
HID 入门学习:HID 简介
HID类设备属于人机交互操作的设备。用于控制计算机操作的一些方面,如USB鼠标,USB键盘,USB游戏操纵杆,USB触摸板,USB轨迹球、电话拨号设备、VCR遥控等等设备。使用HID设备的一个好处就是,操作系统自带了HID类的驱动程序,而用户无需去开发很麻烦的驱动程序,只要直接使用API调用即可完成通信。所以很多简单的USB设备,喜欢枚举成HID设备,这样就可以不用安装驱动而直接使用。

HID(Human Interface devices),人机接口设备。是USB 中常见的设备类型,是直接与人交互的USB 设备,例如键盘(Keyboard)、鼠标(mouse)、游戏手柄(joysticks)等

在这里插入图片描述
在USB设备中,HID设备的成本较低。另外,HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。

HID 设备特点

  1. 交换的数据储存在称为报表(Report)的结构内,设备的固件必须支持HlD报表的格式。主机通过控制和中断传输,来传送和接收报表数据,报表的格式非常灵活。
控制传输:接收和回应来自主机的 usb 控制和 类数据请求;
在 HID 类驱动程序轮询时传输数据(Get_Report Request ); 
接收来自主机的数据 中断传输:从设备接收异步(未请求)数据;将低延迟数据传输到设备
  1. 每一笔事务可以携带小量或中量的数据。
低速设备: 每一笔事务最大是8B,一个报表可以使用多笔事务。全速设备:每一笔事务最大是64B。高速设备:每一笔事务最大是1024B。

下面讲讲3个HID设备类特定描述符:HID描述符、报告描述符、实体描述符
1、HID描述符
  HID描述符关联于接口描述符,因而如果一个设备只有一个接口描述符,则无论它有几个端点描述符,HID设备只有一个HID描述符。HID设备描述符主要描述HID规范的版本号、HID通信所使用的额外描述符、报表描述符的长度等。表2所示为HID描述符的结构:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、报告描述符

HID设备的报告描述符比较复杂也比较难理解。

报告描述符的语法不同于USB标准描述符,它是以项目(items)方式排列而成,无一定的长度。HID的报告描述符已经不是简简单单的描述某个值对应某个固定意义了,它已经能够组合出很多种情况,并且需要PC上的HID驱动程序提供parser解释器来对描述的设备情形进行重新解释,进而组合生成出本HID硬件设备独特的数据流格式,所以我觉得可以把它理解为“报告描述符脚本语言”更为贴切。我们使用“报告描述符”专用脚本语言,让用户来自己定义他们的HID设备都有什么数据、以及这些数据各个位(bit)都有什么意义。

有关报告描述符的详细信息可参考USB HID协议,USB 协会提供了一个HID 描述符编辑工具称作HID Descriptor Tool,用它可方便生成我们的报告描述符。

3、实体描述符

实体描述符被用来描述设备的行为特性。实体描述符是可选的描述符,HID设备可以根据其本体的设备特性选择是否包含实体描述符。表5所示为HID的实体描述符结构。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

扩展

如下是常见串口:

RS-232:D型9针串口
在这里插入图片描述

RCA:常见的一种音/视频接线端子
在这里插入图片描述

RS-485:
在这里插入图片描述

VGA:使用模拟信号的视频输出标准,15针
在这里插入图片描述

HDMI:高清晰度多媒体接口,数字化视频/音频接口
在这里插入图片描述

DVI:Digital Visual Interface,中文称为“数位视讯接口”
在这里插入图片描述

Lightning:苹果高速多功能I/O接口
在这里插入图片描述

DOCK:苹果之前的充电数据线
在这里插入图片描述

Micro USB:USB 2.0标准的一个便携版本,节省空间,高寿命和强度
在这里插入图片描述

RJ45:俗称的网线接口。RJ45是布线系统中信息插座(即通信引出端)连接器的一种,连接器由插头(接头、水晶头)和插座(模块)组成,插头有8个凹槽和8个触点。计算机网络的RJ45是标准8位模块化接口的俗称
在这里插入图片描述

RJ11:俗称电话线接口,和网线不同的是只有4根针脚,RJ45为8根。
在这里插入图片描述

STM32F103C8 Serial(UART) to USB HID Keyboard Mouse 串口USB键盘鼠标 (1) 使用Composite Device 组合(复合)设备 (1.1) 1个Device -> 1个 Configuation -> 2个Interfance (Keyboard & Mouse) (1.2) Keyboard Interfance -> HID (boot mode) -> 2个Endpoint(IN_0x81 & OUT_0x01) -> KeyboardReportDescriptor(不使用Report ID) (1.3) Mouse Interfance -> HID (boot mode) -> 1个Endpoint(IN_0x82) -> MouseReportDescriptor(不使用Report ID) (1.4) 使用HID boot模式, 不使用Report ID, 以便兼容在 计算器设定BIOS模式 中的操作 (2) 串口接收 命令 (2.1) UART协议: 115200, n, 8, 1 (2.2) 1帧发送字符串格式, 以 '{'开始; '}'结束; ','分隔. 共9个10进制数字 例如: {1,2,3,4,5,6,7,8,9} (2.3) 第9位 区分 Keyboard(64) 或是 Mouse(128) 命令 例如: {0,0,0,0,0,0,0,0,64} --- 发送Keyboard命令 {0,0,0,0,0,0,0,0,128} --- 发送Keyboard命令 (3) 发送Keyboard键盘命令时 : 第1~8位 分别如下 (3.1) 第1位 : Key_Release = 0x00, Left_Control = 0x01, Left_Shift = 0x02, Left_Alt = 0x04, Left_GUI = 0x08, Right_Control = 0x10, Right_Shift = 0x20, Right_Alt = 0x40, Right_GUI = 0x80, 例如: {8,0,0,0,0,0,0,0,64} --- 发送 Win_Key键 {128,0,0,0,0,0,0,0,64} --- 发送 WinApp_Key键 {32,0,0,0,0,0,0,0,64} --- 发送 右Shift键 (3.2) 第2位 : 保留,不使用,一律填0 (3.3) 第3~8位 : 可以同时发送6个Keyboard按键 例如: {0,0,4,5,6,7,8,9,64} --- 发送 'abcdef'键 {2,0,4,5,6,7,8,9,64} --- 按住 左Shift 发送 'abcdef'键 => 'ABCDEF' {0,0,0,5,0,7,0,9,64} --- 发送 'bdf'键 (0表示 无按键) 按键码 可参阅: (HID Usage ID) http://download.microsoft.com/download/1/6/1/161ba512-40e2-4cc9-843a-923143f3456c/translate.pdf https://www.hiemalis.org/~keiji/PC/scancode-translate.pdf https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2 http://www.usb.org/developers/hidpage/Hut1_12v2.pdf (4) 发送Mouse鼠标命令时 : 第1~8位 分别如下 (4.1) 第1位 : Button_Release = 0x00, Left_Button = 0x01, Right_Button = 0x02, Mid_Button = 0x04, 例如: {1,0,0,0,0,0,0,0,128} --- 点击 左键 {2,0,0,0,0,0,0,0,128} --- 点击 右键 {4,0,0,0,0,0,0,0,128} --- 点击 中键 (4.2) 第2~4位 : 移动(X,Y), 滚轮(Wheel) X: -127~127:左右移动鼠标 Y: -127~127:上下移动鼠标 Wheel: -127~127:上下转动滚轮 例如: {0,20,-10,0,0,0,0,0,128} --- 鼠标 右移20,上移10 {0,0,0,-30,0,0,0,0,128} --- 滚轮-30 (4.2) 第5~8位 : 保留,不使用,一律填0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值