欢迎来到天天文库
浏览记录
ID:37913557
大小:203.00 KB
页数:13页
时间:2019-06-02
《USB通信相关知识》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、端点状态USB设备与主机的通信可以通过对USB端点状态的控制来完成。USB设备端点可以定义3个不同状态:空闲(Idle)状态、停止(Halt)状态和读/写(W/R)状态。USB硬件抽象层提供USB_ConfigureEndpoint、USB_Write、USB_Read、USB_EndOfTransfer、USB_Stall、USB_HaIt和USB_ClearHalt七个功能函数对设备的状态进行管理,端点的状态转换过程如图4所示。1、USB_ConfiguIreEndpoint负责配置端点的最大包长度和传输方向,并将端点状态设置为空闲状态。2、端点进入空闲状态,如果上层调用USB_W
2、rite进行数据发送,将发送缓冲区指向要发送的数据,设置端点状态为写状态,等待USB主机接收数据(真正的数据传输在中断服务程序中进行)。写完成后,端点回到空闲状态。3、数据接收与发送类似。4、如果设备出现某种错误,主机会向设备发送Set_Feature命令,设备接收到Set_Feature命令,执行USB_Halt进入停止状态。5、端点处于停止状态时,如果接收到Clear_Feature,则执行USB—ClearHalt清除Halt标志,进入Idle状态。6、如果USB设备由于某种原因无法对当前命令进行处理(如不能识别命令,或者没有准备好进行数据传输),则执行USB_Stall通知主机
3、发生错误,但端点的状态不变。USB设备状态1、连接状态(Attached)USB设备已经连接注主机或集线器的下行端口上,但USB总线的还没有提供,这时其处于连接状态。2、上电状态(Powered)当USB设备已连接至某集线器的下行端口,且已得到USB总线电源,但它还没有被复位时,其将处于上电状态,这时还不能对任何USB事物处理做出响应。尽管自供电设备至连接至某集线器的下行端口前就可能已经上电了,但这时对USB来说,其仍处于连接状态,且只有至该集线器的电源建立时间过后(不管USB设备是否使用这个,其建立时间总是有的),USB才会认为其处于上电状态。3、缺省状态(Default)USB设备
4、会响应集线器下行端口发出的复位信号,并进行复位操作。在复位结束后,USB设备将进入缺省状态,这时其可从USB总线上获取小于100mA的电流,并可使用缺省设备地址来对某些USB事物处理做出响应。在USB设备复位操作完毕后,它将采用正确的传输速率(低速/全速)和主机进行通信。低速/全速传输速率的检测是通过USB设备连接在D--/D+线上的上拉电阻实现的。4、地址状态(Address)在USB设备复位结束后,主机会为其分配一个唯一的设备地址,当它还没有被配置时,其将处于地址状态。在这之后,USB设备将不再使用缺省设备地址,而是使用这个新的地址来响应主机发出的事务处理。即使当USB设备处于挂起
5、状态,它仍会保持该唯一的设备地址不变。5、配置状态(Configured)USB设备在使用前必须被配置,即正确处理主机发出的SetConfiguration(x)请求(x代表非0的配置)。在配置操作完成后,USB设备将处于配置状态,这时客户软件可以和其功能单元进行数据传输,并为主机提供额外的功能。配置操作将使USB设备中与该配置有关的所有寄存器都返回至缺省状态,如块端点的数据触发位被置为0值。6、挂起状态(Suspended)为节省USB系统的功率消耗,当USB设备值3ms内没有检测到总线活动时,它将自动进入挂起状态,这时其仍会保持原有的设备地址和配置值。USB设备在连接后的任何时刻、
6、任何状态都可能被挂起。为使USB脱离挂起状态,必须对其进行恢复。USB总线上的任何非空闲信号都将使挂起的USB设备得到恢复。另外,具有远程唤醒功能的USB设备,自己也可以启动系统的恢复操作,但当USB设备复位时,其远程唤醒功能必须被禁止。标准USB描述符的类型1、设备描述符(DeviceDescriptor)typedefcodestruct{BYTEbLength;BYTEbDescriptorType;WORDbcdUSB;BYTEbDeviceClass;BYTEbDeviceSubClass;BYTEbDeviceProtocol;BYTEbMaxPacketSize0;WOR
7、DidVendor;WORDidProduct;WORDbcdDevice;BYTEiManufacturer;BYTEiProduct;BYTEiSerialNumber;BYTEbNumConfigurations;}device_descriptor;2、设备限定描述符(Device_QualifierDescriptor)3、配置描述符(ConfigurationDescriptor)typedefcodestruct{BYTEbLen
此文档下载收益归作者所有