usb_control_msg()各参数详解

int usb_control_msg(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout)

- RequestType:D7D6D5D4D3D2D1D0
     D7=0主机到设备, =1设备到主机;
     D6D5 =00标准请求命令, 01 类请求命令,10用户定义的命令,11保留值
     D4D3D2D1D0= 0表示接收者为设备,1表示接收者为接口,2表示接收者为端点,3表示接收者为其他,其他值保留

- Request
    命令的序号(其实就是命令);所有的命令都是以不同编码值的方式传递给设备的,bRequest就表示USB命令的编码值。可以是USB标准命令,也可以用户自定义命令:

- Value
    2个字节,高字节是msg的类型(1为输入,2为输出,3为特性);低字节为msg的ID(预设为0)


- Index
    索引字段同样是2个字节,描述的是接口号

- Size
    msg的长度。当命令不需要传输数据时,此字段设为0

USB标准命令:
--------------------------------------------------------------
1.获取状态 Get Status (00H)
    A:[To Device]获取设备的状态:
   *.位0:自供电(0表示总线供电;1表示自供电).
   *.位1:远程唤醒(0表示不支持远程唤醒;1表示远程唤醒).
   *.位2~15:保留.
   *.一般选择总线供电,不支持远程唤醒,所以返回数据就是0x0000.
   B:[To Interface]获取接口的状态:
   *.接口状态的16位字节全部保留,所以返回数据就是0x0000.
   C:[To Endpoint]获取端点的状态:
   *.位0:Halt(0表示端点允许;1表示端点禁止).
   *.位1~15:保留(复位为0).
2.清除特性 Clear Feature (01H)
   A:[To Device]清除设备的远程唤醒功能,并返回一个空包.
   B:[To Endpoint]解禁端点.
3.设置特性 Set Feature (03H)
   A:[To Device]设置设备的远程唤醒功能,并返回一个空包.
   B:[To Endpoint]禁止端点.
4.设置地址 Set Address (05H)
   A:设置设备地址.
5.获取描述符 Get Descriptor (06H)
   A:[To Device]获取设备描述符:
   *.描述当前USB协议的版本号.设备端点0的FIFO大小.USB设备的ID号等.
   B:[To Configuration]获取配置描述符:
   *.描述USB设备接口个数及是否有自供电能力等.
   C:[To Interface]获取接口描述符:
   *.描述端点0以外的物理端点个数等信息.
   D:[To Endpoint]获取端点描述符:
   *.描述端点0各端点的传输类型和最大信息包大小和端点的传输方向(IN/OUT).
6.设置描述符(可选,无法更新) Set Descriptor (07H)
7.获取配置信息 Get Configuration (08H)
8.设置配置 Set Configuration (09H)
A:[To Configuration]设置配置描述符.
B:[To Interface]设置接口描述符.
C:[To Endpoint]设置端点描述符.
9.获取接口信息 Get Interface (0AH)    
10.设置接口 Set Interface (0BH)
11.SYNCH_FRAME(0CH)
用于设备设置和报告一个端点的同步帧.


USB非标准命令,即VENDOR自定义的命令如
------------------------------------------------------------------------------------------------------------------------------

bRequest                 SEND_ENCAPSULATED_COMMAND  = 0x00 (defined by VENDOR, could beany value) 
bRequestType         0x21 (host2dev/用户定义的命令/接收者为端点) 
description               this requests sends a packet within a specific encapsulation protocol
------------------------------------------------------------------------------------------------------------------------------

bRequest                 GET_ENCAPSULATED_RESPONSE = 0x01 (defined by VENDOR, could be any value) 
bRequestType         0xA1 (dev2host/用户定义的命令/接收者为端点)
description              this request gets a packet within a specific encapsulation protoco




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值