USB驱动

本文详细介绍了USB技术,包括其基本概念、拓扑结构、电气属性、包结构与传输过程,以及USB设备描述符和驱动开发流程。重点阐述了USB数据传输的不同类型,如批量、同步、中断和控制传输。
摘要由CSDN通过智能技术生成

USB驱动视频

USB中文网

一、基本概念

  • 通用串行总线
  • usb1.0 ,1.5Mbps,低速设备(LS)
  • usb1.1 ,12Mbps,全速设备(FS)
  • usb2.0,480Mbps,高速设备(HS)。同时2.0支持LS、FS、HS
  • usb3.0,5Gbps,极速设备
  • usb3.1,10Gbps,超速设备

二、拓扑结构

  • Usb是一种主从设备,通信只能发生在主从之间。
  • 集线器(hub)是usb主机拓展接口,电脑默认有usb根hub。
  • usb2.0协议,规定最多扩展7层hub,设备总数不超过127。
  • usb设备地址是7bit,范围是1-127,0地址不能用

三、电气属性

  1. usb传输特性
  • usb在低速和全速模式下,采用的是电压传输模式;在高速模式下,采用的是电流传输模式。
  • usb的实际传输速率比理论值要低,因为实际传输时,有很多协议开销
  • 具体的数据传输任务由usb控制器实现
  1. usb热拔插检测机制
    在这里插入图片描述
  • usb的host的D+D-接口都连接了15K的下拉电阻,slave的D+D-外接了1.5K的上拉电阻。
  • 当host与slave连接时,cpu在host接口的D+检测到高电平,说明是全速或高速设备
  • cpu在host接口的D-检测到高电平,说明是低速设备

三、 usb包结构和传输过程

usb的四种传输类型:

  • 批量传输、同步传输、中断传输、控制传输
  • 批量、同步、中断传输,每完整传输一次数据称作一次事务
  • 控制传输包括三个过程:建立过程和状态过程分别是一个事务,数据过程则可能包含多个事务。

批量传输

用于数据量大,但实时性要求不高的场合

一次批量事务有三个阶段:

  • 端点号记录了哪一种传输方式
  • 批量输入时:设备收到主机应答,设备继续发送数据,PID(DATA0)累加为PID(DATA1)
  • 发送后,未收到应当,会重新发,多次未收到,则启动退出机制退出
    在这里插入图片描述
    中断传输
  • 这里的中断不是物理中断,而是由主机保证在不大于某个时间间隔内安排一次传输。主机实际上是靠轮询实现的
  • 中断传输和批量传输的结构基本一样
    同步传输
  • 用于数据量大,实时性要求高,能容许少量的数据错误的场合。并有可能占用批量传输等的带宽,而优先满足同步传输的需要。
  • 不能保证传输的数据%100正确,所以数据错误时,并不进行重传,也没有应答包,CRC错误时,由软件决定怎么处理。
    控制传输
  • 主要用于主从命令配置
  • 建立过程:使用一个建立事务,SETUP+DATA0+ACK,建立过程实际就是输出数据
  • 数据过程:可以没有数据过程,也可以有多笔数据事务,是由建立过程中的设置命令决定的

四、USB设备描述符及其枚举过程
描述符
描述了设备的各种行为和具体的参数类型等,能够让主机明确应该加载什么样的驱动,程序和设备之间进行怎样的操作

  • 设备描述符

设备所描述的USB协议版本号、设备类型、端点0的最大包大小、厂商ID和产品ID、可能的配置数量

  • 配置描述符

设备对主机提出的配置需求,包括配置的编号、供电方式、接口数、是否支持远程唤醒、电流需求量等

  • 接口描述符

  • 端点描述符

  • 字符串描述符

四、 USB驱动开发

主要有两类USB驱动开发

* USB设备驱动程序(USB device drivers):控制器端驱动(USB主机驱动),控制插入其中的USB设备
* USB器件驱动程序(USB gadget drivers):设备端驱动(USB设备驱动),控制该设备如何与主机通信 

开发流程:

  • 参考usb-skeleton.c,官方代码

  • 定义一个struct usb_driver,并初始化

  • 通过usb_register()注册

  • 通过usb_unregister() 卸载

  • 完成usb_device_id 与设备匹配的条件

  • USB数据传输过程
    在这里插入图片描述

  • usb主机控制器获得 usb_device 信息,传递给 USB core,然后自动调用usb_driver

五、USB数据传输

USB请求块——URB
URB是用于描述与USB设备通信所用的基本载体和核心数据结构。

在这里插入图片描述

USB数据传输过程:
(USB设备驱动——>USB core——>USB主机控制器——>USB设备)

  • 创建一个URB,usb_alloc_urb
  • 初始化URB。【中断传输】usb_fill_int_urb;【批量】usb_fill_bulk_urb;【控制】usb_fill_control_urb;【同步】手动初始化URB
  • 提交URB,usb_submit_urb
  • 等待数据处理结果回调函数,
  • 释放URB,usb_free_urb

USB基础

问1:USB设备插到电脑上,连接的是什么设备?
答:是USB控制器,是USB控制器内嵌的root hub

问2:主机插上USB设备后,为什么能知道设备的具体驱动?
答:主机的USB总线(控制器)驱动程序,会识别出插入的USB设备,并给设备找到对应的驱动程序

问3:USB设备总类非常多,为什么一接入电脑,就能识别出它的种类?
答:USB设备插入主机,主机会通过协议规范查询设备信息(描述符),设备返回描述符给主机。

问4:电脑上的USB设备很多,怎么分辨它们?
答:每插入一个USB设备,主机的USB控制器都会给它分配一个地址,主机每次访问设备,都会发出对应的地址

问5:USB设备刚接入PC,还没有地址编号,那么PC怎么把分配的地址编号告诉它
答:新接入的设备,默认地址是0

USB设备的状态切换过程

  • USB设备插入,被控制器识别
  • USB控制器发复位信息给USB设备
  • 设备进入默认的工作状态,同时主从商量能否工作于高速模式?
  • 控制器发送分配的地址给设备。

低速/全速信号电平

  • 差分1: D+ > Voh && D- < Vol
  • 差分0: D- > Voh && D+ < Vol
  • 单边0(SE0): D+ < Vol && D- < Vol
  • 单边1(SE1): D+ < Voh && D- < Voh
    在这里插入图片描述

高速设备如何判断插拔

  • 主机hub控制器检测 D+ 是高电平,将判断插入的设备是全速还是高速设备,步骤如下:
  • hub端口会发出SE0信号,这就是复位信号
  • 设备如果支持高速模式,就会返回K信号给Hub,
  • 主机hub如果支持高速模式,会返回K-J信号(多个)给设备
  • 若hub和设备都支持高速模式,设备就会把D+的上拉电阻断开,
    那断开D+,设备断开了,怎么判断呢
    若hub发送信号,反射回的信号无法衰减,说明设备已经断开。

数据信号

数据包组成:SOP + SYNC + Packet Content + EOP

低速/全速的SOP和EOP

  • SOP:Start Of Packet,D+和D-从idle状态变为K状态的瞬间
  • SYNC:3对KJ信号+2个K信号。用于传输时钟信号(传输速率)
  • EOP

高速的SOP

NRZI与位填充
NRZI(反向不归0编码):要发送数据0,波形翻转;要发送数据1,波形不变。
位填充:以NRZI规则发送数据,当连续发6个1时,在后面加0,防止出错。

USB协议层数据格式

数据包格式
SOP + SYNC + Packet Content + EOP

  • Packet Content 格式:
    PID + 地址&端点 + 帧号 + 数据 + CRC。 (地址 、 帧号 、 数据不是同时出现)

  • PID

    • 由8位组成,前四位表示PID,后四位是对PID的取反。
    • 4位可表示四大类,即16个小类包。
    • 四大类:令牌类,数据类、握手类、特殊类。由bit1:0来表示

事务
主机:令牌包,数据包
设备:握手包ACK

USB传输

  • 批量传输
    • 保证数据的可靠性,不要求实时性。比如U盘
    • 由一个事务实现
  • 中断传输
    • 保证数据的可靠性,要求实时性。可用于传输少量数据的场合,比如鼠标
    • 由一个事务实现
  • 实时传输
    • 不保证数据的可靠性,要求实时性。比如摄像头
    • 由一个事务实现
  • 控制传输
    • 由建立事务、批量事务组成,所有的USB设备都必须支持控制传输,用于"识别/枚举"
    • 由多个事务组成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值