龙芯软件开发(38)- USB协议深入分析 设置USB地址
2023-09-14 09:10:39 时间
前面已经解释主控器怎么样发送设备描述符下来,然后设备返回相应的设备描述符。下一步主控器的动作是做什么呢?由于在USB总线上的设备有很多,为了区分不同的设备通讯,就需要给每个设备分配一个地址,这跟网络中的IP地址是一样的,或者跟MAC地址也是一样的。因而,接着下来就是主控器分配地址给设备,USB的设备地址是从1开始到127。下面就是接收到主控器发下来的数据包:
00 05 01 00 00 00 00 00
由
USB_SETUP_PACKET定义具体地分析这个数据,就可以知道应做什么样的响应了。下面就来解释这个操作。
先取得
bmRequestType的类型,也就是第一个字节,它是00。从USB协议里查看,它的方向位是主控器发送给设备,由D6D5位就知道它是USB协议里定义的标准请求,由D4-D0位知道它是USB设备接收这个包数据。
bRequest是05,从前面已经介绍的类型,就知道它是设置地址,如下:
SET_ADDRESS 5
所以这个包需要按设置地址的格式去解释后面的数据。
由于USB协议可以知道,USB的设备地址放在字段
wValue里,因它的值是01 00,按小端格式解释就是0x0001了。其它相应的字段
wIndex和
wLength应都是0,如果是其它非0的数据,是没有定义的。
USB的串行引擎通过这个地址来判断是否接收总线上的数据,如果发送的地址跟它一致,就会接收主控器发过来的数据,当然从这个设备发送出去的数据也带有这个地址,因此就可以让主控器识别不同的USB设备数据了。
相关文章
- 计算机网络基础(路由器的作用 MAC地址 IP地址 IP地址分类 子网掩码 网段,等长子网划分)
- centos7使用nmcli设置ip地址
- 网工必备网络排错管理工具之IP_MAC地址工具
- 71张图详解IP 地址、IP 路由、分片和重组、三层转发、ARP、ICMP
- RV1126调试(3)-mac地址改为从uboot env传递
- Auto CAD2015软件下载地址及安装教程--cad所有版本!
- Adobe Premiere 2020 软件安装教程-PR软件全版本下载地址
- Redis下载:快速扩展你的内存(redis扩展下载地址)
- 探索Linux世界:查询本机IP地址(linux查看本机地址)
- Linux系统中的UUID地址:了解它的原理与作用(linuxuuid)
- 地址Linux下如何快速查看本机MAC地址(linux查看本机mac)
- Linux系统下查看IP地址的方法(linux如何查看ip地址)
- MySQL免费下载及安装步骤 如何下载MySQL汉化包,配置MySQL环境 详细教程及下载地址请戳
- 掌握Redis地址简单步骤教程(如何获取redis地址)
- 共享友谊,共用Redis地址(共用redis地址)
- 快速轻松更改Redis链接地址(修改redis链接地址)
- PHP为表单获取的URL地址预设http字符串函数代码
- Delphi书籍15本网盘下载地址整理