zoukankan      html  css  js  c++  java
  • USB学习笔记连载(十二):USB描述符

    USB设备是端口,接口,配置的集合,USB协议是以各种USB描述符来表征USB设备的功能。计算机通过这些描述符来获得USB设备的功能。

    USB描述符包括: USB标准设备描述符,USB集线器描述符。HID描述符,这里主要讲解USB描述符。

    USB标准设备描述符包括:设备描述符,端点描述符,接口描述符,配置描述符,设备限定描述符,其他描述符。这些所有的描述符都在 官方固件中的 dscr.a51 文件中,注意!!!!!

      1.设备描述符

    wps8CBD.tmp

      一共18个字节,14个字段。在官方给的固件程序中的描述如下图:

      image image   上图中42行是用宏定义描述符长度,一共18个字节。

       43行描述符类型,其固定为01H,现也用一个宏定义;

       44行是表示该USB设备所遵循的USB规范版本号,  一般为0002H,对于高速USB,版本为USB2.0,设置为0200H。

      45行设备类别,对于显示类别(04H),01H(CRT显示器),02H(平面显示器),03H(3D显示器),官方固件设置为00H。46行也一样,

      47行是协议子类,该字段为0时,表示不使用任何设备类协议。

      48行最大数据包大小,对于全速设备,8/16/32/64,对于高速设备,设置为64.

      51行到53行是设置上设备的VID&PID&Version ID,这个修改可以重新配置USB的签名,请参看博客《USB驱动安装及固件程序编写》

    其他不用设置,保持默认即可。

       2.配置描述符

    wps4789.tmp

    USB配置描述符9个字节,8个字段。在官方固件中给出了如下描述:

    image

    71和72固定。

    73和74分别是USB配置总的信息长度。

    75行是接口数量,最少为1.

    77行配置字符串,若是没有配置字符串,为0。

    注意78行是USB设备配备属性。第6位置1为使用总线电源,第5位置1表示支持远程唤醒功能,第0~4位置为0即可,第7位置为1.注意,笔者设计的板卡是从USB端取电,应该配置78行为10100000b。

    79行是USB设备运行时所需要消耗的最大电流。以2mA为单位。这里更改为250mA,因为USB口能够提供的最大电流为500mA。

       3.字符串描述符

    image 修改162到187内容即可。

    4.接口描述符

    image

    注意一下128行的端点数,除了0端点以外,还有2,4,6,8四个端点。其中2和4能作为输出和输入,6和8能作为输出和输入。

    5.端点描述符

    image

    此部分的设置和接口描述符中的端点数要一一对应,若是使用了一个端点,那么需要更改接口描述符中的128行,设为1.若是使用了两个端点,则设为2,一次类推。

    官方固件上面给了两个端点数,一个作为入,一个作为出。

    还要注意138行和147行,此设置是端点类型,USB传输类型,包括 中断传输,控制传输,块传输,同步传输。

    其中 控制传输:少量数据,无传输时间要求,传输有严格保证;

    块传输:大数据量,无传输时间要求和传输速率要求;

    同步传输:大量数据,速率恒定,有周期性;

    中断传输:少量或中量数据,有周期性要求;

    6.设备限定符

    image 和设备描述符差不多。

    7.其他速率配置描述符

    官方给的固件中,将上述的6种描述符集合在速率配置描述中,有全速和高速两个状态。如下图所示:

    image image

    image

    image

    以上是对描述符的简单介绍,这些是学习其他方面的基础。

  • 相关阅读:
    centos7 修复引导
    Django 过滤器
    Django 面向对象orm
    Django models字段查询谓词表
    linux常用的监控命令
    常用SQL语句
    python实现FTP服务器
    用python做一个图片验证码
    rsync
    jsonp的理解
  • 原文地址:https://www.cnblogs.com/raymon-tec/p/5356092.html
Copyright © 2011-2022 走看看