打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
usb中断传输原理

2018年09月14日 14:15:47 

   这段时间学习LPC11Uxx系列的USB-HID,研究官方的USB库文件和HID文件发现对于hiduser里面的GetReport和SetReport只在端点0的响应函数中有调用,采用USB抓包工具 Bus Hound发送指令时也可发现,如果选择HID-Compliant Device,只能发送控制类的指令,而对于实际的数据传输需要另外配置端点进行传输。

   USB 的传输事务类型可在端点描述符中配置,不同的端点可以配置成不同类型的传输事务,但端点0默认是控制传输,上电连接USB即可启用,不需要配置。

   HID设备类一般配置数据传输端点为中断传输,由于USB不支持硬件中断,所以USB的中断传输实际上是主机在一定的时间不断地主动轮询设备检查其是否有数据需要传输,对此有3个重要参数需要在端点描述符中进行配置:

  • 传输类型

  • 轮询时间间隔

  • 每次传输的最大数据包大小

/* Endpoint, HID Interrupt In */USB_ENDPOINT_DESC_SIZE,            /* bLength */USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType */HID_EP_IN,                         /* bEndpointAddress */USB_ENDPOINT_TYPE_INTERRUPT,       /* bmAttributes */WBVAL(0x0040),                     /* wMaxPacketSize */0x20,          /* 16ms */          /* bInterval (轮询时间间隔)*//* Endpoint, HID Interrupt Out */USB_ENDPOINT_DESC_SIZE,            /* bLength */USB_ENDPOINT_DESCRIPTOR_TYPE,      /* bDescriptorType */HID_EP_OUT,                        /* bEndpointAddress */USB_ENDPOINT_TYPE_INTERRUPT,       /* bmAttributes(传输类型) */WBVAL(0x0040),                     /* wMaxPacketSize(传输数据包的最大大小) */0x20,          /* 16ms */          /* bInterval */0                                  /* bLength */

USB中断传输事务流程图

 对于IN事务,每次轮询时间间隔内,主机主动发送IN令牌(包括设备地址和端点号),然后切换到接收数据状态,等待设备发送数据,如果设备有数据要返回,则把一个数据包放到总线上。

对于OUT事务,当主机发送数据时,USB设备会进入中断函数,根据地址和端点号信息调用相应的端点响应事件函数,从而进行相关的处理。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
[圈圈原创]如何修改STM32的USB例程为自己所用
USB设备描述符完全解析
USB描述符
stm32f4USB项目开发详解
USB技术白皮书
【转】USB的枚举过程 与 USB基础知识
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服