USB標準請求

USB通信需要由端點(endpoint)和管道(pipe)來完成,端點相當於傳輸的地址,管道相當於傳輸的路徑。具體定義見USB2.0協議。

USB設備一旦連接到主機,首先就要與主機進行通信,把設備信息傳給Host,同時Host根據USB設備特性進行適當配置

之後纔可以正常使用,而這些工作都是由端點0(USB設備唯一的一個雙向端點)通過默認信息通道(有格式的信息通道)

完成的,這個過程主要是通過控制傳輸的11種標準請求進行。

/*USB設備請求數據結構*/
typedef struct _USB_device_request
{
 USB_U8 bmRequestType;  //請求類型
 USB_U8 bRequest;   //USB具體請求
 USB_U16 wValue;    //USB數據,根據不同的請求含義改變
 USB_U16 wIndex;    //USB請求索引,根據不同的請求含義改變
 USB_U16 wLength;   //數據字節數
}USB_DEVICE_REQUEST;


// Definitions of the bit fields in the bmRequestType field of a setup packet.
// 定義設置包中USB請求類型(bmRequestType)中各位字段.
// RT==RequestType
//
#define USB_RT_DEVICE_TO_HOST                   0x80 //D7:傳輸方向(設備到主機)
#define USB_RT_TYPE_MASK                        0x60    //D6..D5:保留
#define USB_RT_TYPE_STANDARD                    0x00 //D6..D5:標準
#define USB_RT_TYPE_CLASS                       0x20 //D6..D5:類
#define USB_RT_TYPE_VENDOR                      0x40 //D6..D5:廠商
#define USB_RT_RECIPIENT_MASK                   0x1F //D4..D0:接收者:4-31保留
#define USB_RT_RECIPIENT_DEVICE                 0x00 //D4..D0:接收者:0 設備 
#define USB_RT_RECIPIENT_INTERFACE              0x01 //D4..D0:接收者:1 接口
#define USB_RT_RECIPIENT_ENDPOINT               0x02 //D4..D0:接收者:2 端點
#define USB_RT_RECIPIENT_OTHER     0x03 //D4..D0:接收者:3 其它

USB的標準請求命令(bmRequest)
#define USB_R_GET_STATUS            0x00 //獲得設備,接口或者端點的某種狀態
#define USB_R_CLEAR_FEATURE         0x01 //清除設備、接口或端點的某種特徵。設備:清除其遠程喚醒功能
#define USB_R_SET_FEATURE           0x03    //主機要求啓動一個在設備、接口或端點上的特徵。  
#define USB_R_SET_ADDRESS           0x05 //爲設備設置一個惟一的地址
#define USB_R_GET_DESCRIPTOR        0x06 //獲得設備的某種標準描述符
#define USB_R_SET_DESCRIPTOR        0x07 //爲設備新增一個描述符,或更新一個已存在的描述符
#define USB_R_GET_CONFIGURATION     0x08 //獲得指定設備當前配置的值
#define USB_R_SET_CONFIGURATION     0x09 //激活設備的某個配置
#define USB_R_GET_INTERFACE         0x0A //獲得設備接口當前工作的選擇設置值(AlternateSetting)
#define USB_R_SET_INTERFACE         0x0B //主機激活設備的某個接口
#define USB_R_SYNCH_FRAME           0x0C //在實時傳輸中,設備的端點可以以一個次序傳輸不同大小的數據包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章