版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、简介STM32F105/7 USB主模式库的目的是为USB主模式应用程序开发提供一个框架。库代表了在STM32F105/7之上的 USB OTG周边底层驱动。它实现必要的软件块,目的是便于USB的主模式应用程序开发。 STM32F105/7USB主模式协议栈的库支持以下两个USB标准应用类:大批量存储类(MSC)用于访问USB闪存pendrives人机接口设备类(HID)用于键盘和鼠标设备目录1 USB的主模式包文件夹结构。.62 USB主模式的库结构.82.1库的结构框图.82.2库内核的描述。.92.2.1内核状态机。.92.2.2设备枚举。.102.2.3控制传输状态
2、机。.112.2.4 USB的I / O请求模块。.112.2.5主模式通道控制模块。.122.3类驱动程序。.132.3.1 USB大批量存储类(MSC)驱动程序。.132.3.2 USB人机接口设备类(HID)鼠标键盘设备驱动。.173库用户API和回调函数。.203.1库用户API。.203.2用户的回调函数。.203.2.1类的回调函数。.203.2.2独立类的回调函数。.224演示固件。. . 254.1大容量存储类演示。254.1.1软件初始化。254.1.2大容量存储设备枚举。254.1.3访问大容量存储器内容。264.1.4 Flash pendr
3、ive测试。264.2HID鼠标和键盘演示。274.2.1初始化准备。274.2.2鼠标或键盘设备枚举。274.2.3 .鼠标演示。284.2.4键盘演示。284.3演示脚本。285已知的限制。.296修订历史。.30list of表表1 内核文件7表2 class文件7表3 枚举请求11表4 USB的I / O请求模块12表5 主模式通道控制模块12表6 大容量存储类模块.13表7 MSC的内核模块15表8 MSC BOT模块15表9 MSC SCSI命令16表10 MSC文件系统接口功能16表11 efsl 主API17表12 HID类模块17表13 MSC内核模块的功
4、能18表14 鼠标和键盘初始化和HID Report解码功能19表15 测试U盘27表16 演示的足迹28表17文件修订历史30数字表图1。文件夹结构。.6图2。USB主模式库框图结构。.8图3。内核状态机。.9图4。设备枚举。.10图5。的MSC驱动器框图结构。.14图6。MS设备枚举。.25图7。MS设备内容的访问。.26图8。鼠标演示。.28图9。键盘演示。.281 USB主模式包文件夹结构STM32的USB主模式封装库具有以下文件结构:图1。文件夹结构封装库文件夹具有如下组织结构库 CMSIS:微微控制器软件接口标准文件 STM32_USB_HOST_Library: USB
5、主模式库文件 STM32_USB_HOST_Driver: STM32 USB2.0 OTG 外设低电平驱动 STM32F10x_StdPeriph_Driver:STM32标准外设驱动程序项目_USB_HOST_EXAMPLES/HID_KBrd_Mouse: 鼠标和HID键盘演示文件USB_HOST_EXAMPLES/MSC: 大容量存储类的演示文件公用事业STM32_EVAL/STM3210C_EVAL: STM3210C_EVAL evalboard功能函数( GPIO,液晶显示,时钟配置,)Third_Party/efsl: EFSL FAT文件系统,用
6、于大容量存储例程USB主模式库文件结构USB主模式库文件夹”stm32_usb_host_library”是由两个主要子文件夹构成:内核:该文件夹包含USB主模式库内核文件。这些文件实现必要的功能,状态机和数据结构所需的:设备的识别和枚举,USB控制传输管理,为解决控制,大批量或中断USB事务而设立的低级功能,USB主模式通道配置。类:这个文件夹包含USB类管理所必需的文件。USB主模式库支持两种USB类:MSC:大批量存储类HID:为启动鼠标和键盘设备的人机接口设备类下表详体说明了内核文件和类文件:表1。内核文件File Descriptionusbh_core.c / .h 使内核,设备枚
7、举和控制权转移的状态机生效usbh_stdreq.c / .h USB标准请求需要在设备枚举(USB 9章)usbh_ioreq.c /.h USB的I / O请求:USB事务包括控制,大批量和中断通道请求usbh_hcs.c /.h USB主模式控制信道(信道配置,分配,释放)usbh_def.h 在USB主模式库中广泛使用的宏定义表2。类文件Class File Descriptionusbh_hid_core.c /.h HID类管理HID usbh_hid_mouse.c ./h HID鼠标的具体例程usbh_hid_keyboard.c /.h HID键盘的具体例程usbh
8、_msc_core.c /.h 大批量存储类管理MSC usbh_msc_bot.c ./.h BOT”Bulk-Only传输协议的实现usbh_msc_scsi.c /.h SCSI标准命令的执行usbh_msc_fs_interface.c ./h 一个带有文件操作系统用于文件访问的接口2 USB主模式的库结构2.1库框图结构USB主模式库具有以下框图结构:图2. USB主模式库框图结构如上图所示, USB主模式库由两个主要部分组成:内核和类驱动程序。库的核心主要由五块构成:内核状态机设备枚举控制传输状态机USB的I / O请求USB主模式通道控制对于所有与类相关的操作,内核状态
9、机都是操作一个特定的类驱动。在USB主模式库目前的版本中,两类驱动程序-HID和MSC已经实现。这类驱动程序使用内核层对底层驱动通信进行服务。内核和类驱动程序与用户的应用程序交流都主要是通过定义回调函数来实现的。不同的主模式模块库描述如下。2.2描述库内核2.2.1内核状态机下图描述了库的状态机:图3。内核状态机内核状态机有8个状态:host_idle:主模式初始化后,内核在这个状态开始,在这个状态下为USB设备连接进行检测。这种状态也在当一个设备断开事件被检测到的时进入,同时也在当不可恢复错误发生时进入。host_issue_core_reset:当设备为发出一个USB总线复位请求则进入此状
10、态。host_dev_attached:内核进入这个状态,当一个设备连接。当一个全速或低速设备被检测到时,状态机移动到host_enumeration状态。host_enumeration:在这种状态中,内核根据一个基本的USB设备枚举进行。在枚举过程结束时,默认的配置(配置0)被选择。host_usr_input:这是一个紧跟在枚举后的中间状态,这个状态包括一个等待用户输入以便进行USB类操作。host_class_request:从这个状态开始,类驱动接管,类请求状态机为了处理所有的初始类控制请求被调用(例如:get_report_descriptor HID)。完成所需要的类请求后,内核
11、移动到host_class状态。host_class:在这种状态下,类状态机被调用类相关的操作(非控制和控制操作)。host_ctrl_xfer:,无论何时当有一个控制转移请求时进入此状态。host_error_state:无论何时从任何库状态机有一个不可恢复的错误时进入此状态;在这种情况下,一个用户调用回调函数(例如显示一条不可恢复的错误消息)。然后主模式库重新初始化。内核状态机的过程是由usbh_process功能函数实现。这个函数应该从应用程序的主循环周期调用。USB主模式库初始化功能由函数usbh_init实现。这个函数这个函数应该在初始化过程中由用户应用程序调用。更多这方面的细节在s
12、ection3提供。2.2.2设备枚举在检测完全速或低速设备之后,主库通过一个基本的设备枚举继续运行。下面的关系图显示了参与设备枚举的不同的步骤。图4。设备枚举枚举状态机是在库的功能函数USBH_HandleEnum中实现,这是从内核状态机过程调用。USBH_HandleEnum功能函数调用下面的库路径(在文件usbh_stdreq.c中实施):表3。设备枚举请求Function DescriptionUSBH_Get_CfgDesc 获取配置描述符请求USBH_Get_DevDesc 获取设备描述符请求USBH_Get_StringDesc 得到字符串描述符的请求USBH_GetDescri
13、ptor 一般取描述符请求USBH_SetCfg(1) 配置请求USBH_SetAddress2) 设置地址的请求USBH_ClrFeature 清除功能请求注:1 usbh_setcfg调用选择默认的配置(配置0)2 usbh_setaddress要求设置设备地址为0x1。用户回调函数将在用户枚举阶段结束时调用以使过程的描述信息(如显示的描述符的数据,例如)。为更多的细节,请参阅第3节。*2.2.3控制传输状态机当有控制传输需求时从内核或类驱动进入控制传输状态机,。该状态机实现了标准的控制转移阶段,即安装阶段,可选的数据阶段,最后,状态阶段。控制传输状态机实现的功能是在功
14、能函数USBH_HandleControl中。它是从内核状态机程序中调用。2.2.4 USB的I / O请求模块USB的I / O请求模块位于内核的低层。它的接口与关于控制,大批量,中断等的USB事务的USB底层驱动相连。表4显示在I / O请求模块的主要功能。这些功能在文件usbh_ioreq.c中实施。表4 USB的I / O请求模块Function DescriptionUSBH_CtlSendSetup 关于设置事务USBH_CtlSendData 关于控制数据输出阶段的事务USBH_CtlReceiveData 关于控制数据输入阶段的事务USBH_CtlReq 关于控制传输
15、(设置,数据,状态阶段)的高级功能USBH_BulkSendData 关于大批量输出的事务USBH_BulkReceiveData 关于大批量输入的事务USBH_InterruptSendData 关于中断输出事务USBH_InterruptReceiveData 关于中断输入事务2.2.5主模式通道控制模块主模式通道控制模块位于较低的内核层,它允许把主模式通道配置为一个特定的操作(控制,大批量或中断传输型)也允许设置一个选定的主模式通道为设备端点来创建一个USB通道。对于USB通道控制模块的主要功能是在表6定义。这些功能在文件usbh_hcs.c中实施。表5。主模式通道控制模块Functio
16、n DescriptionUSBH_Open_Channel 开放和配置一个新的主模式通道USBH_Modify_Channel 修改现有的主模式通道USBH_Alloc_Channel 分配一个主模式通道到设备的端点(一个USB通道创建)USBH_Free_Channel 释放一个主模式通道2.3类驱动程序在枚举的结束时,内核通过调用特定功能的类驱动程序来管理所有的与类相关的操作。请注意,某些类驱动的选择不是基于设备枚举的结果,而是当初始化主模式库通过调用函数usbh_init “预先定义的“。类驱动通过使用结构类型usbh_class_cb_typedef来实现:typedef struc
17、t _Device_cbUSBH_Status (*Init) (USB_OTG_CORE_HANDLE *pdev , USBH_DeviceProp_TypeDef *hdev);void (*DeInit) (USB_OTG_CORE_HANDLE *pdev , USBH_DeviceProp_TypeDef *hdev);USBH_Status (*Requests)(USB_OTG_CORE_HANDLE *pdev, USBH_DeviceProp_TypeDef *hdev); USBH_Status (*Machine) (USB_OTG_CORE_HANDLE *pdev
18、, USBH_DeviceProp_TypeDef *hdev); USBH_Class_cb_TypeDef;结构成员如下所述:初始化:此函数在类操作启动时调用以确保完成所有需要的初始化操作。这包括:解析接口和端点描述符(请注意当前的USB主模式库只支持一种接口),为非控制端点开放和分配主模式通道,调用用户回调函数(见第3节),以防止该设备不被支持的情况。去初始化:这个功能当重新初始化主模式为释放分配的主模式通道被调用。当一个设备拔出或在不可恢复的错误的情况下被调用。请求:执行类请求状态机的功能。在host_class_request状态下它被调用;其目的是实现类的初始化请求。机器:执行类内
19、核状态机。在host_class内核状态被调用。2.3.1 USB大批量存储类(MSC)驱动程序的目的是支持常见的USB接口的 u盘,使用BOT”Bulk-Only传输协议。以下模块,位于classMSC文件夹,用于实现MSC驱动:表6。大批量存储类模块Module Descriptionusbh_msc_core.c /.h MSC内核状态机的实现usbh_msc_bot.c ./.h BOT”Bulk-Only传输协议的实现usbh_msc_scsi.c /.h SCSI命令的实现usbh_msc_fs_interface.c ./h 文件操作系统访问文件的接口功能图表5显示了模
20、块之间的相互作用。图5。MSC驱动器结构框图=操作流程描述:MSC内核状态机通过必需的设备初始化来启动,这是:通过get_max_lun检测目前设备的逻辑单元的数目的类请求。请注意,只有一个逻辑单元的设备支持。bot_reset是发出复位设备BOT状态机的类请求。关于SCSI命令:mode_sense是为了检测设备是否写保护,read_capacity用于检测u盘容量。经过上述设备初始化,MSC内核状态机调用应用程序的用户回调函数。用户回调可以让文件系统访问任何类型的文件。此操作解释成一个逻辑页读取或写入操作。文件系统接口为文件系统和MSC驱动器提供连接。在SCSI水平,逻辑页读取或写入操作转
21、换为SCSI命令:READ(10) or WRITE(10)。这些命令“Bulk-Only Tranport” 协议传输到u盘。BOT层状态机是关于使用必要的USB内核I / O请求模块进行大批量输入输出传输。MSC模块描述如下。MSC内核模块:MSC内核模块在“usb_msc_core.c”实现MSC驱动,它通过usbh_class_cb_typedef定义msc_cbof结构类型(见2.3节)。USBH_Class_cb_TypeDef MSC_cb = USBH_MSC_InterfaceInit,USBH_MSC_InterfaceDeInit,USBH_MSC_ClassReques
22、t,USBH_MSC_Handle,;表7.MSC内核模块Function DescriptionUSBH_MSC_InterfaceInit 解析接口和端点描述符和配置主模式通道(大批量输入输出通道)USBH_MSC_InterfaceDeInit 去初始化路径(释放主模式通道)USBH_MSC_ClassRequest 在MSC的情况下,此功能只将库内核状态机转移到host_class状态USBH_MSC_Handle 执行MSC内核状态机USBH_MSC_Issue_BOT 关于BOT复位类请求USBH_MSC_Issue_GETMaxLUN 关于get_max_lun类请求USBH_M
23、SC_ErrorHandle MSC错误处理MSC BOT模块:MSC”Bulk-Only传输”(BOT)模块执行了传输协议通过发送SCSI命令(READ(10) or WRITE(10))。该模块在文件“usbh_msc_bot. c实现。关于BOT协议的详细信息,请参阅大批量存储类文件。BOT模块具有以下功能:表8。MSC BOT模块功能 描述usbh_msc_init 初始化状态机usbh_msc_handlebotxfer BOT传输状态机MSC SCSI模块:SCSI“小型计算机系统接口”模块在“usb_msc_scs
24、i .C”在BOT顶部。它在需要访问u盘时执行SCSI命令集。需要执行的命令:表9. MSC SCSI命令功能 描述usbh_msc_read10 逻辑块读命令usbh_msc_write10 逻辑块写入命令usbh_msc_testunitready 检查设备状态命令usbh_msc_readcapacity10 请求读取设备容量命令usbh_msc_modesense6 检查大容量存储设备写保护状态命令usbh_msc_requestsense 接收错误消息命令MSC文件系统接口模块MSC文件系统接口模块在“usbh_msc_fs_interface.C”允许文件系统与
25、MSC驱动器连接。本模块必须移植到选定的文件系统。当前的USB主模式库包来自开源的,支持EFSL FAT文件系统(见下一节对EFSL概述API)。文件系统接口实现的功能:表10.MSC文件系统接口功能功能 描述if_initinterface 允许初始化文件系统(例如获取u盘容量)if_readbuf 逻辑页读取功能接口if_writebuf 逻辑页写功能接口if_testunitready 测试单元是否准备好功能if_requestsense 使用SCSI接口功能命令来请求错误信息功能接口注:对EFSL文件系统,页面大小是固定的512个字节。对于更大的页面的U盘不支持。EFSL文件
26、系统概述EFSL”嵌入式文件系统库”是一个开放源代码的文件系统库。支持嵌入式设备和微软FAT12,16和32的文件系统。下表总结了EFSL主要api功能。Table 11. EFSL主要的APIFunction Prototype Descriptionefs_init esint8 efs_init(EmbeddedFileSystem *efs, eint8* opts); 初始化文件系统file_fopen esint8 file_fopen(File *file, FileSystem *fs, eint8 *filename, eint8 mode);打开一个文件file_fclos
27、e esint8 file_fclose(File *file); 关闭一个文件file_read euint32 file_read (File *file, euint32 size, euint8 *buf);读文件file_write euint32 file_write(File *file, euint32 size, euint8 *buf);写文件Rmfile esint16 rmfile(FileSystem *fs,euint8* filename);移除文件mkdir esint8 mkdir(FileSystem *fs,eint8* dirname);创建字典ls_o
28、penDir esint8 ls_openDir(DirList *dlist,FileSystem *fs,eint8* dirname);打开字典ls_getNext esint8 ls_getNext(DirList *dlist);获取另一个文件字典2.3.2 USB人机接口设备(HID)类驱动鼠标键盘设备V1.0 USB主机库中的HID类目的是实现支持HID鼠标和键盘设备。HID报告通过中断输入传输收到。以下模块,位于classHID文件夹,用于执行HID类:Table 12. HID class modules队列(模块) 描述usbh _ hid_
29、core.c / .h 这个模块执行HID类核心状态机usbh _hid_ mouse.c / H HID鼠标具体例程usbh _hid _ keyboard.c / .h HID键盘的具体例程各模块的主要功能如下。HID类核心:HID核心模块在“usb_hid_core.C”通过usbh_class_cb_typedef定义hid_cb类结构实现了HID类驱动程序(见2.3节)。USBH_Class_cb_TypeDef HID_cb = USBH_HID_InterfaceIn
30、it,USBH_HID_InterfaceDeInit,USBH_HID_ClassRequest,USBH_HID_Handle;下表总结了HID内核模块实现的功能。函数原型描述表13MSC核心功能模块Function DescriptionUSBH_HID_InterfaceInit 解析接口和端点描述符,设置一个主模式通道来获取一个中断输入通道(为了获取HID报告)USBH_HID_InterfaceDeInit 释放分配的中断输入通道USBH_HID_ClassRequest 实现需要的HID鼠标和键盘的设备的类请求状态机(如:获取HID报告描述符,设置空闲时间,设置协议)。USBH_
31、HID_Handle HID类核心状态机(处理中断输入传输)USBH_Get_HID_ReportDescriptor 获取HID报告描述符类请求USBH_ParseClassDesc 功能用于解析HID报告描述符USBH_Set_Idle 用于设置空闲时间的类请求USBH_Set_Report 用于发送报告输出数据(不是用于演示软件)的类请求USBH_Set_Protocol 用于设置HID协议:启动或报告的类请求1 usb_set_protocol被调用用来设置启动协议模式。HID鼠标和键盘的具体管理:检测鼠标或键盘装置通过在功能函数usbh_hid_interfaceinit中解析接口描
32、述符来完成。对于每种具体类型的设备的初始化和收到的数据报告的解码是由结构类型hid_cb_typedef声明的两个功能它的定义如下:typedef struct HID_cbvoid (*Init) (void); void (*Decode) (uint8_t *data); HID_cb_TypeDef上述结构在发现鼠标或键盘的情况下实施hid_mouse_cb和hid_mouse_cb声明如下:HID_cb_TypeDef HID_MOUSE_cb = MOUSE_Init,MOUSE_Decode,;HID_cb_TypeDef HID_KEYBRD_cb= KEYBRD_Init,K
33、EYBRD_Decode;表14。鼠标和键盘初始化和HID报告的解码功能功能 描述mouse_init 为USB鼠标初始化程序mouse_decode 为鼠标解码HID报告(解码鼠标X,Y的坐标,按下按钮)keybrd_init 为USB键盘 初始化程序1。azerty或QWERTY键盘的选择是通过在文件usbh_hid_keybrd.h中# qwerty_keyboard,# azerty_keyboard来声明的3库用户API和回调函数3.1库用户API库用户API功能局限于以下两个功能:void usbh_process(void):此功能实现的核心状态机程序。它要从
34、用户的主循环周期调用。usbh_init:这个函数应该被称为主机的USB硬件与库的初始化。下面为usbh_init的函数原型:void USBH_Init(USB_OTG_CORE_HANDLE *pdev,USBH_Class_cb_TypeDef *class_cb, USBH_Usr_cb_TypeDef *usr_cb)pdev:指向USB主机寄存器核心结构的指针(为了将来需要)class_cb:指针指向类结构USBH_Class_cb_TypeDef,它既可以指向MSC_cb类来操作MSC设备也可以指向HID_cb类操作HID鼠标/键盘设备。usr _cb:指向USBH_U
35、sr_cb_TypeDef类结构。这个结构定义独立类回调函数。(见3.2.2节)3.2用户的回调函数用户回调函数在用户模板文件usbh_usr.c中声明定义了两种类型的用户回调:与类的相关操作的回调函数(MSC或HID)与类操作相独立的回调函数;他们主要是在枚举阶段被调用。这些回调是一个USBH_Usr_cb_TypeDef结构类型中定义3.2.1类的回调函数MSC用户回调函数功能对于MSC,下面的回调函数被调用:int usr_msc_application(void)。类的初始化结束后,这个函数被MSC状态机调用的为了帮助用户访问文件操作系统。在这个回调函数,用户可以访问任何FA
36、T文件系统(文件打开,文件读,写文件)使用EFSL文件系统API。同时,用户可以访问一个与库MSC类驱动不同的出口结构变量,usbh_msc_param。这个变量提供关于大容量存储的关键信息。这个变量是使用一种类型massstorageparameter_typedef定义的结构,定义如下:typedef struct _MassStorageParameteruint32_t MSCapacity; /*MS device capacity in bytes */uint32_t MSSenseKey; /*Request Sense SCSI command returned value
37、*/uint16_t MSPageLength; /* MS device Page length */uint8_t MSBulkOutEp; /* Bulk OUT endpoint address */uint8_t MSBulkInEp; /*Bulk IN endpoint address */uint8_t MSWriteProtect; /*Write protection status, 0: non protected, 1:protected */ MassStorageParameter_TypeDef;HID用户的回调函数对HID类,以下定义的回调函数:void USR
38、_MOUSE_Init(void):用户的鼠标应用程序初始化void USR_KEYBRD_Init(void):键盘应用的用户初始化void USR_MOUSE_ProcessData(HID_MOUSE_Data_TypeDef *data):这个回调函数被调用当hid_mouse_data_typedef数据类型的输入参数有效时(见下面附注1)。void USR_KEYBRD_ProcessData (uint8_t data):这个回调被调用时,一个新的ASCII字符型。其特征是输入参数数据。注:1 HID_MOUSE_Data_TypeDef定义如下:typedef struct _
39、HID_MOUSE_Datauint8_t x; uint8_t y;uint8_t z; /* Not Supported */ uint8_t button; /*Bitmap showing pressed buttons 1:pressed, 0: non pressed */ HID_MOUSE_Data_TypeDef;3.2.2类独立的回调函数这类独立的回调函数是在一个结构类型定义usbh_usr_cb_typedef定义如下:typedef struct _USBH_USR_PROPvoid (*Init)(void); void (*DeviceAttached)(void)
40、; void (*ResetDevice)(void);void (*DeviceDisconnected)(void); void (*OverCurrentDetected)(void); void (*DeviceSpeedDetected)(uint8_t DeviceSpeed); void (*DeviceDescAvailable)(void *);void (*DeviceAddressAssigned)(void); void (*ConfigurationDescAvailable)(USBH_CfgDesc_TypeDef *,USBH_InterfaceDesc_Typ
41、eDef *,USBH_EpDesc_TypeDef *); void (*ManufacturerString)(void *); void (*ProductString)(void *); void (*SerialNumString)(void *); void (*EnumerationDone)(void); USBH_USR_Status (*UserInput)(void);void (*USBH_USR_DeviceNotSupported)(void); void (*UnrecoveredError)(void);USBH_Usr_cb_TypeDef;以上回调函数功能描
42、述如下。初始化:初始化时被usbh_init内核调用的功能。在这个功能,用户可以实现任何自己的应用程序相关的特定的初始化。deviceattached:当一个USB设备连接时被调用。它可以通过显示屏告诉用户任何有用的设备连接信息。devicereset:从主模式发出的USB复位命令。devicedisconnect:“当一个设备断开时调用。overcurrentdetected:对USB的VBUS电流进行检测时调用。devicespeeddetected:检测装置传输速率时调用devicedescavailable:设备描述符有效时调用deviceaddressassigned:当设备地址分配
43、时调用。configurationdescavailable:当设备,接口和端点描述符可用时调用描述符是可用的manufacturingstring:提取制造商字符串时调用。productstring:提取设备字符串时调用。serialnumstring:序列号字符串提取时调用。enumerationdone:枚举完成时调用。userinput:枚举的过程结束后,提示用户进一步的行动,如按下一个按钮启动主模式的类操作usbh_usr_devicenotsupported:被检测的设备是在不在当前类驱动程序支持时调用。unrecoverederror:在“host_error_state”状态时
44、调用内核的状态机。它允许用户处理任何错误,在液晶屏上显示一个错误的信息,例如。注:1设备的速率信息是通过devicespeed参数返回。可能的值是:0x1对应全速设备,0x2对应低速设备。2设备描述符的信息通过指针DeviceDesc返回,它指向usbh_devdesc_typedefdefined型结构如下:typedef struct _DeviceDescriptoruint8_t bLength;uint8_t bDescriptorType;uint16_t bcdUSB; /* USB Specification Number which device complies too *
45、/uint8_t bDeviceClass;uint8_t bDeviceSubClass; uint8_t bDeviceProtocol;uint8_t bMaxPacketSize;uint16_t idVendor; /* Vendor ID (Assigned by USB Org) */uint16_t idProduct; /* Product ID (Assigned by Manufacturer) */uint16_t bcdDevice; /* Device Release Number */uint8_t iManufacturer; /* Index of Manuf
46、acturer String Descriptor */uint8_t iProduct; /* Index of Product String Descriptor */uint8_t iSerialNumber; /* Index of Serial Number String Descriptor */uint8_t bNumConfigurations; /* Number of Possible Configurations */USBH_DevDesc_TypeDef;3设备配置信息(配置,接口和端点描述符)通过结构指针返回usbh_cfgdesc_typedef,usbh_int
47、erfacedesc_typedef和usbh_epdesc_typedefdefined定义如下:typedef struct _ConfigurationDescriptoruint8_t bLength;uint8_t bDescriptorType;uint16_t wTotalLength; uint8_t bNumInterfaces; uint8_t bConfigurationValue; uint8_t iConfiguration; uint8_t bmAttributes; uint8_t bMaxPower; USBH_CfgDesc_TypeDef;typedef struct _InterfaceDescriptoruint8_t bLength;uint8_t bDescriptorType;uint8_t bInterfaceNumber;uint8_t bAlternateSetting; /* Value used to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024项目融资合同协议书
- 2025年度中医食疗研究与推广合同4篇
- 2025年度特色餐饮连锁品牌授权合同3篇
- 2025年度生态修复工程承包商借款合同范本4篇
- 2025年度数据中心运维外包合同4篇
- 2025年度体育用品代理服务合同模板4篇
- 2025年度物流车辆环保排放检测合同4篇
- 2025年度人工智能技术应用与开发合同2篇
- 2024版全新销售担保合同范本下载
- 2025年度新能源汽车充电站车位销售与管理协议4篇
- 专升本英语阅读理解50篇
- 施工单位值班人员安全交底和要求
- 中国保险用户需求趋势洞察报告
- 数字化转型指南 星展银行如何成为“全球最佳银行”
- 中餐烹饪技法大全
- 灵芝孢子油减毒作用课件
- 现场工艺纪律检查表
- 医院品管圈与护理质量持续改进PDCA案例降低ICU病人失禁性皮炎发生率
- 新型电力系统研究
- 烘干厂股东合作协议书
- 法院服务外包投标方案(技术标)
评论
0/150
提交评论