STM32-USB学习笔记(一) USB基础

本文介绍了STM32中USB的基础知识,包括USB插入检测、身份识别和USB通讯协议详解。USB插入检测通过DM和DP线的电平差检测设备插入。身份识别涉及描述符和枚举过程,描述符存储设备信息,枚举过程包括设备的初始化和地址设置。通讯协议部分详细阐述了传输、事务和包的概念,以及控制、批量、中断和同步四种传输类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USB基础知识扫盲

前言

本文将从USB的 插入检测身份识别数据传输三个方面对USB通讯整个过程扫盲,其中有些知识点的详细信息会放在文章最下面的附录中供查看,从而保证文章的整体简洁。在进入主题之前,首先了解一下USB的一些基础知识

USB的分类

  • 按接口类型分

    • 控制器/主机(controller/host)
    • 设备(peripheral)
    • OTG(on-the-go),通过id线确定作为主机还是作为设备
  • 按照USB速度分

    • 低速(low speed)
    • 全速(full speed)
    • 高速(high speed)

一、USB插入检测

USB接口一般是4根线,VCC GND DM(D-) DP(D+)
  • A:USB是如何检测到设备插入的
  • Q:主机端将DM DP接入下拉电阻;设备端根据不同速度,将DM DP的某一根接上拉电阻,插入时通过压差即可判定是否插入

    • 低速设备:在DM线上接入上拉
    • 全速设备:在DP线上接入上拉
    • 高速设备:在DP线上接入上拉,在主机对设备进行复位后进一步的确认,详情

二、USB身份识别

对于插入的USB设备,主机需要发送比较短的请求来确认设备的身份、类型、速度等信息,这个过程称之为 枚举
2.1 描述符

设备的“身份”信息存储在描述符中。每个USB设备中都有如下描述符。需要注意的是

  • 一个USB设备只能有一个设备描述符
  • 其他描述符都可以有多个,对应复合设备,例如USB键鼠
  • 设备描述符(device description)

    • 配置描述符(config description)

      • 接口描述符 (interface description)

        • 端点描述符 (endpoint description)
        • 端点描述符
      • 接口描述符

        • 端点描述符
    • 配置描述符

      • 接口描述符

        • 端点描述符
2.2 枚举过程
  1. 等待稳定:主机通过电平差检测到设备,等待100ms让设备电平趋于稳定
  2. 首次复位:HUB发起复位,让设备进入初始的地址0模式
  3. 首次查询设备描述符:GET_DESCRIPTOR 主机查询设备描述符,只要前8字节 ==> 80 06 01 00 00 00 12 00
  4. 二次复位:在接收到设备描述符前8个字节后,再次重启设备
  5. 设置地址:SET_ADDRESS 主机下发设置地址命令,设备获取新地址 ==> 00 05 01 00 00 00 00 00
  6. 二次查询设备描述符:GET_DEVICE_DESCRPTOR获取整个18字节的设备描述符 ==> 80 06 01 00 00 00 12 00
  7. 获取配置描述符:GET_CONFIGURATION 获取9字节配置描述符 ==> 80 06 02 00 00 00 09 00
  8. 完成配置:SET_CONFIGURATION,
2.3 描述符详解
搞懂了描述符,调好了枚举,就完成了USB通讯的一大半,下面就对描述符进行详细的探索
设备描述符 18 配置描述符 9 接口描述符 9 终点描述符 7
bLength 1 bLength 1 bLength 1 bLength 1
bDescriptorType 1 bDescriptorType 1 bDescriptorType 1 bDescriptorType 1
bcdUSB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值