0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简单归纳USB设备开发必备的基础知识

Geehy极海半导体 来源:Geehy极海半导体 2023-10-16 10:20 次阅读

二、USB的低速模式和全速模式,采用的是电压传输模式。高速模式,则采用的是电流传输模式。

a、USB传输速率:USB1.1是12M/s;USB2.0是480M/s (其他通信接口:PS2 10M/s;并口 8M/s; R-232 20KB/S)高速 480M/s,全速12M/s,低速1.5M/s

b、平时无数据传输时,总线处于空闲状态。当需要传输一次事务时,主机发送一个令牌包,它可以是OUT令牌包、IN令牌包或者是PING令牌包,其中PING令牌包是USB2.0高速模式输出特有的,全速模式和低速模式没有这个令牌包。

c、USB拓扑结构,一个HOST做多可接6层,每层最多允许接5个Device,总共同时可接127个Device(实际不会做到那么多)。

d、 USB信号编码方式:反向不归零编码(0变1不变)

三、USB描述符间的关系

a、设备描述符--决定了有多少种配置

b、配置描述符--定义了有多少个接口

c、接口描述符--定义了该接口有多少个端点

d、(类特殊描述符,如果有,在接口描述符之后)

e、端点描述符--定义端点的大小、类型

(主机首先会获取设备描述符,再获取配置描述符,再获取接口描述符,根据配置描述符中的配置集合总长度,一次将配置描述符、接口描述符、类特殊描述符(如果有)、端点描述符一次读回)

f、字符串描述符--是单独获取,主机发送字符串描述符请求以及字符串索引号、语言ID来获取对应的字符串描述符。

四、USB设备的枚举过程

a、检测到USB插入,就对设备进行复位,复位后USB设备再总线上的地址为0。USB主机往地址0的设备的端点0发送设备描述符的标准请求(控制传输的建立过程)。然后,USB设备收到请求,按照主机要求返回设备描述符给到主机。主机成功获取并确认正确后就返回一个0长度的确认数据包给设备,从而进入到下一阶段的设置地址阶段。

b、主机对设备再复位一次。这时进入设置地址阶段。USB主机往地址0发出一个设置地址的请求(控制传输的建立过程),新设备地址包含在建立过程的数据包中。主机分配一个地址给刚插入的设备。USB设备收到这个建立过程后,就进入到状态过程,因为这个控制传输没有数据过程。设备等待主机请求状态返回一个输入令牌包,收到输入令牌包后,设备就返回0长度的状态数据包。主机收到并确认,返回ACK应答包给设备,设备收到ACK后就开始启用新地址。

c、主机再次获取设备描述符(使用新设备地址,而不是地址0)。需要获取全部18字节的设备描述符,如果端点0最大包小于18字节,主机则对此请求数据输入,发送多个IN令牌包。

d、主机获取配置描述符,再根据配置描述符的描述获取配置集合总长度(获取配置集合)。配置集合包括配置描述符、接口描述符、类特殊描述符(如果有)、端点描述符等。后三个不能单独获取,要以集合方式返回。

e、此外,字符串描述符,报告描述符等,有的话都是要单独获取的。

五、USB包结构

包的6部分组成

a、同步字段(SYNC)--同步域告诉USB的串行接口引擎数据要开始传输了。同步主机端和设备端的数据时钟

b、包标识符(PID)--标识包的类型,总共8位,USB协议只用到4位(PD0~3),另外4位是PD0~3的取反,用来校验PID。

c、USB协议规定四类包

1、令牌包(token packet.PID1~0为01)

2、数据包(data packet.PID1~0为11)

3、握手包(handshake packet.PID1~0为10)

4、特殊包(special packet.PID1~0为00)

d、地址字段(ADDR)

e、数据字段(DATA,包括帧号)

f、检验字段(CRC)

g、包结束(EOP)--全速、低速设备的EOP是一个大约为2个数据位宽度的单端0(SE0)信号。SE0就是D-D+都是低电平。

USB2.0定义的各种PID

b497bd40-69a7-11ee-939d-92fbcf53809c.jpg

六、USB四种传输类型

a、批量传输(批量事务bulk transation)

i、一次批量事务有三个阶段:令牌包阶段、数据包阶段、握手包阶段。每个阶段都是独立的包。

ii、批量输出事务

1、发一个OUT令牌包(包含设备地址、端点号)

2、发一个数据包(数据包类型看数据切换位)。地址和端点匹配的设备就收下这个数据包。

3、主机切换到接受模式,等设备返回握手包。

* 返回ACK或者NYET(高速模式下),设备解码令牌包、数据包都正确无误,并且有足够缓冲区来保存数据。

* 返回NAK,数据正确,并且没有能力接收下一次传输,没有足够的缓冲区保存数据。

* 返回STALL,设备数据正确,但是端点处于挂起状态。

* 设备检测数据有错误,不做响应,让主机等待超时

iii、批量输入事务

1、发一个IN令牌包(包含设备地址、端点号)

2、主机切换到接受状态,等待设备返回数据。

b、中断传输

跟硬件中断是不一样的,不是设备发出的一个中断请求,而是主机设备主动保证在不大于某个时间间隔内安排一次传输。

中断传输用于传输数据量不大,对时间比较严格的设备中。如HID设备的鼠标、键盘等。

c、同步传输

数据量大,实时性高的场合。数据出错不重传,没有应答包。

d、控制传输

i、有三个过程:建立过程,可选的数据过程,状态过程

建立过程--使用建立事务(一个输出数据的过程),和批量传输的输出事务有几个点不一样。令牌包不一样,建立过程使用的是SETUP令牌包,数据包类型不一样,SETUP只能使 用DATA0包,握手包不一样,只能使用ACK应答(除非出错不应答)

数据过程--(可选,控制传输可能没有数据过程),可以包含一笔或者多笔数据事务,和批量传输的批量事务一样。控制写传输中,数据过程的所有数据事务都是输出。控制读传输中,数据过程的所有数据事务都是输入。

状态过程--也是一笔批量事务,跟数据过程相反,控制写传输在状态过程是一个批量输入事务。控制读传输在状态过程是一个批量输出事务。状态过程只是用DATA1包。

ii、控制传输要保证数据传输的完整性。如设备枚举过程,各种描述符的获取、地址信息、设备配置信息等都是控制传输。

b4adf984-69a7-11ee-939d-92fbcf53809c.jpg

七、端点类型和传输类型的关系

a、一个具体的端点,只能工作在一种传输模式下。工作在什么模式下的端点,就叫做什么端点。如控制端点、批量端点。

b、端点0是每一个USB设备都默认的控制端点。上电就存在且可用。

八、传输类型和端点的最大包长

a、控制传输的端点

低速模式:固定8字节

高速模式:固定64字节

全速模式:8、16、32、64字节可选

b、同步传输的端点

低速模式:不支持同步

高速模式:上限1024字节

全速模式:上限1023字节

c、中断传输的端点

低速模式:上限8字节

高速模式:上限1024字节

全速模式:上限64字节

d、批量传输的端点

低速模式:不支持批量传输

高速模式:固定512字节

全速模式:8、16、32、64字节可选







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • USB接口
    +关注

    关注

    9

    文章

    701

    浏览量

    55657
  • crc
    crc
    +关注

    关注

    0

    文章

    199

    浏览量

    29467
  • ACK
    ACK
    +关注

    关注

    0

    文章

    28

    浏览量

    11149
  • USB设备
    +关注

    关注

    0

    文章

    57

    浏览量

    16336
  • 硬件中断
    +关注

    关注

    0

    文章

    11

    浏览量

    6852

原文标题:APM32芯得 EP.24 | 简单归纳USB设备开发必备的基础知识

文章出处:【微信号:geehysemi,微信公众号:Geehy极海半导体】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C语言基础知识科普

    C语言是单片机开发中的必备基础知识,本文列举了部分STM32学习中比较常见的一些C语言基础知识
    发表于 07-21 10:58 1904次阅读

    电子工程师必备基础知识手册

    本帖最后由 gk320830 于 2015-3-7 17:27 编辑 电子工程师必备基础知识手册
    发表于 08-15 22:59

    FPGA基础知识,初学者必备

    FPGA基础知识,初学者必备
    发表于 11-27 15:03

    HarmonyOS开发必备知识

    这篇文档带领大家掌握HarmonyOS开发的一些必备基础知识:1、应用基础知识;2、应用配置文件;3、资源文件;4、应用数据管理;5、应用权限管理注:文档和视频中所有的图片及代码截图皆
    发表于 09-10 17:39

    数控电源必备基础知识--软件测试的艺术

    数控电源必备基础知识--软件测试的艺术资料来自网络资源
    发表于 05-04 22:57

    【资料】HarmonyOS开发必备基础知识

    HarmonyOS开发必备基础知识回复帖子查看资料下载链接:[hide][/hide]
    发表于 08-12 11:47

    USB基础知识

    USB基础知识 USB的重要关键字: 1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送
    发表于 05-02 13:44 1173次阅读

    电子工程师必备基础知识

    电子工程师必备基础知识(一) 运算放大器通过简单的外围元件,在模拟电路和数字电路中得到非常广泛的应用。运算放大器有好些个型号,在详细的性能参数上有几个差别,但原理和应用方法一样。
    的头像 发表于 04-24 12:35 1.3w次阅读

    硬件工程师必备要了解哪些基础知识

    硬件工程师必备基础知识 目的:基于实际经验与实际项目详细理解并掌握成为合格的硬件工程师的最基本知识
    发表于 10-30 08:00 0次下载

    OpenVINO开发配置应必备哪些基础知识

    通过第一篇文章我们已经了解什么是OpenVINO,它的诸多功能与全应用场景支持人工智能落地的能力。本篇我们将重点介绍OpenVINO开发流程与开发必备基础知识与相关API函数对象。
    的头像 发表于 05-18 09:10 1834次阅读
    OpenVINO<b class='flag-5'>开发</b>配置应<b class='flag-5'>必备</b>哪些<b class='flag-5'>基础知识</b>?

    Arduino入门必备基础知识(基础认证考前总结)

    Arduino入门必备基础知识(基础认证考前总结)
    发表于 11-15 20:51 16次下载
    Arduino入门<b class='flag-5'>必备</b><b class='flag-5'>基础知识</b>(基础认证考前总结)

    12张图读懂模电、数电必备的电路基础知识(入门必备)

    12张图读懂模电、数电必备的电路基础知识(入门必备)
    发表于 02-10 11:12 201次下载
    12张图读懂模电、数电<b class='flag-5'>必备</b>的电路<b class='flag-5'>基础知识</b>(入门<b class='flag-5'>必备</b>)

    电子工程师必备基础知识

    电子发烧友网站提供《电子工程师必备基础知识.pdf》资料免费下载
    发表于 11-20 11:29 36次下载
    电子工程师<b class='flag-5'>必备</b><b class='flag-5'>基础知识</b>

    经典设计经验笔记,电子工程师必备基础知识

    电子发烧友网站提供《经典设计经验笔记,电子工程师必备基础知识.pdf》资料免费下载
    发表于 11-21 11:13 15次下载
    经典设计经验笔记,电子工程师<b class='flag-5'>必备</b><b class='flag-5'>基础知识</b>

    鸿蒙开发设备开发基础知识

    鸿蒙开发基础知识讲解
    的头像 发表于 01-29 18:44 1024次阅读
    鸿蒙<b class='flag-5'>开发</b>【<b class='flag-5'>设备</b><b class='flag-5'>开发</b><b class='flag-5'>基础知识</b>】