使用控制端点通讯的HID协议

来源:本站
导读:目前正在解读《使用控制端点通讯的HID协议》的相关信息,《使用控制端点通讯的HID协议》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《使用控制端点通讯的HID协议》的详细说明。
简介:本文主要介绍使用状态机来处理控制传输,实现使用控制端点通讯的HID协议

USB枚举过程说难也不难,只要把需要支持的standard request都支持了就ok。

但是如果需要用控制端点来做通讯,比如一些HID设备,就需要进一步考虑枚举过程的可靠性了。

看到过不少USB的代码,在枚举或者说控制端点传输方面,更多的是来一个packet,处理一个packet,一般来说,如果控制传输没有data out的过程,这样处理还是比较简单的。

但是如果控制端点传输需要data in也需要data out,就必须注意控制传输的每个stage(setup/data/status)都需要小心处理。

比如,会出现两个packet的标志位同时置位的情况:

1、out packet和setup packet同时到来:在一个data in后,pc发下来一个status out,紧接着就会发下一个setup packet。

2、out packet和IN packet同时到来:在一个data out后,pc紧接着发下来一个status in。

3、setup packet和out packet同时到来:setup packet和后面一个data out同时接收到。

以上3种情况,如果不判断来的先后,就会出现误处理。

曾经有一款产品经过whdl测试,也在很多电脑上做过测试,但在客户的一个电脑上出现通讯错误的问题,后来经查,发现这台电脑的usb控制器是OHCI,而不是常用的UHCI,OHCI各个packet发的速度快,会有上述3种情况发生,而固件是来一个packet处理一个packet,不考虑先后顺序,导致出现误处理。

以上问题最简单可靠的解决方法就是用状态机,在什么状态下才处理相应的packet。比如把控制传输分为以下几个阶段:

wait setup、wait data in、wait data out、wait status in、wait status out

这样就不会出现误处理的问题。

后来所有的产品usb枚举/控制传输都采用这种状态机的方式,usb设备发货超过千万量级,都没有出现问题。

提醒:《使用控制端点通讯的HID协议》最后刷新时间 2024-03-14 01:14:30,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《使用控制端点通讯的HID协议》该内容的真实性请自行鉴别。