前言:stall 仅仅限于device 应答,而host端是不会发送stall握手包的。关于stall 包的场景,usb2.0 spec中有详细的说明。且收到stall后,软件必须做出相应的处理才能使通信恢复正常。

一、STALL包分类:

参看usb2.0 spec,STALL包分为两类,一类是protocol STALL,一类是functional STALL。用通俗的话来说就是,当使用控制端点0时,对应的是使用的protocol STALL(虽然控制端点也可以作为functional STALL,但是spec 2.0 ch8.5.3.4 写了不建议这么做,我们也可以理解一般而言按端点这么划分开来);当使用其他端点时,对应的表示functional STALL。

1.控制端点收到STALL

当使用的是控制传输时,如果device 无法完成host的指令,则返回stall 在控制传输的数据或者状态阶段,但是与第二类functional STALL不同,这种返回stall并不表示设备发生错误。如果当前的端点发送IN或者OUT包,端点在会持续返回STALL,直到收到一个新的SETUP控制传输为止。因此控制通道收到STALL应答的解决方法是重新开启一次控制传输,也就是重新开启一次setup token的传输。一般而言,这种情况下返回STALL表示请求或者参数不能被device识别。 ------ch8.5.3.4

2.数据端点收到STALL

如果是非0端点传输时,设备收到未被支持的或者无效的请求,相应端点设备在数据阶段或者状态阶段返回STALL,则这种情况下这个端点故障。此时,host应该通过控制端点0发送clear feature 指令来清除端点的Halt feature实现重新启用该端点。(halt的理解就可以理解为那些可以打开关闭可通过clear/set feature的端点)。

二、STALL包实例:

在测试usb U盘设备时,有的OUT端点不支持获取格式化容量指令,返回STALL。程序的处理流程为:先通过控制端点0发送clear feature指令重新启用被挂起的设备OUT端点,然后发送获取故障原因指令重新恢复运行。

参考资料:
理解halt:
https://blog.csdn.net/fudan_abc/article/details/1694092

USB host关于收到STALL处理相关推荐

  1. TI Cortex-M4 USB Host CDC 驱动详解及源代码

    1. USB CDC介绍 USB的CDC类是USB通信设备类(Communication Device Class)的简称.CDC类是USB组织定义的一类专门给各种通信设备(电信通信设备和中速网络通信 ...

  2. 安卓USB开发教程 二 USB Host

    USB Host(主机模式) 当 Android 设备处于 USB 主机模式时,它充当 USB 主机,为总线供电,并枚举连接的 USB 设备.Android 3.1 及更高版本支持 USB 主机模式. ...

  3. 网络摄像头转usb接口_Arduino + USB Host Sheild 实现USB鼠标转PS/2接口

    制作缘由 公司内网只有PS/2接口,希望可以使用无线鼠标(貌似没有PS/2接口的).而那种USB转PS/2的转接头只是简单的连线,需要键盘或鼠标本身支持PS/2模式才可以正常工作,现代的USB鼠标接收 ...

  4. STM32 USB Host 同时连接多个设备样例(如鼠标和键盘)--原创

    STM32 USB Host 同时连接多个设备样例(如鼠标和键盘) 在网上搜了很多都是USB Host单独连接鼠标或键盘的样例, 而当前很多无线鼠标键盘都是并到一个USB口上的, 也就是同一个USB有 ...

  5. USB device和USB host

    USB,英文全称:Universal Serial Bus,即通用串行总线. 常常各种USB芯片同时具有host和device两种接口.host就是主的,可以起控制作用:device(slave)就是 ...

  6. Android usb host

    当你的Android主机是处于USB主模式下,它充当USB主机,开启设备并列举出所有已连接的USB设备.这种模式在Android 3.1及以上的版本支持. API预览 在开始开发USB Host之前, ...

  7. linux usb ehci,linux USB HOST之EHCI和OHCI

    1. 主机控制器(Host Controller) • UHCI: Universal Host Controller Interface (通用主机控制接口, USB1.0/1.1) • OHCI: ...

  8. 翻译Android USB HOST API

    翻译Android USB HOST API 源码地址:http://developer.android.com/guide/topics/connectivity/usb/host.html 译者注 ...

  9. 一步一步解决 kernel 2.6 usb host driver

    2.6在s3c2410上usb host不工作的直接结果就是提示110错误:  usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...

最新文章

  1. [Python爬虫] 之二十二:Selenium +phantomjs 利用 pyquery抓取界面网站数据
  2. 你还在用Swagger?试试这个神器!
  3. python基础之数据类型与变量
  4. 为什么要使用符号作为hash的键
  5. c 语言练习__去掉多余的空白字符_修正
  6. velocityjs 动画库 比jquery默认的animate强
  7. 处理工行b2c上海机构问题反思
  8. python pca降维_MLK | 机器学习的降维quot;打击quot;
  9. 配置计算机老是重启,电脑总是自动重启该怎么解决
  10. c语言期终试卷,谁有c语言的往年期中试卷么
  11. 机器学习基础(二十二)—— decision tree
  12. headless-virtualbox
  13. 恒定湿热试验条件及标准-环境试验中的湿热试验报告
  14. Inverting Visual Representations with Convolutional Networks论文理解
  15. tp6 使用 redis
  16. 拒绝反爬虫!教你搞定爬虫验证码
  17. 2014年3月21日51CTO微软MVP聚会照片
  18. 小学生学程序---百变服装
  19. 矩阵的主元+秩+矩阵等价
  20. SAP QM 检验批里某检验特性的取样数量跟检验计划设置不符?

热门文章

  1. FFmpeg命令行--视频转码
  2. java基础-----弱引用,软引用,强引用,虚引用
  3. android ble oad,android ble OTA升级(Ti OAD 方案)
  4. 字符串方法intern()详解
  5. 方便的邮箱密码登录邮箱方式分享
  6. 知乎推荐10个黑科技网站,相信你在朋友面前会一鸣惊人
  7. 2023第五届中国眼博会,北京眼睛健康展,北京护眼仪展
  8. 第十二讲-面向对象(二)作业
  9. Python爬取4K图片
  10. 【20190907】七校联考