打印

USB开发系列——使用控制传输的HID通讯需要注意的事情

[复制链接]
2381|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
insignal|  楼主 | 2012-8-30 09:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 insignal 于 2012-8-30 10:02 编辑

以下文字内容版权归北京飞易来科技有限公司所有,未经许可,请勿转载!


HID通讯可以使用中断端点做IN/OUT,这种方式固件实现起来比较简单,清晰,没有太多的限制。
但如果用控制端点做IN/OUT,除了上一讲提到的注意packet的处理顺序外,还需要注意:
1、HID描述符中规定了每个transfer所能发送的最大长度,这个长度的设置需要综合考虑实际应用中所要传输的数据量。
   1.1 如果这个长度过大(比如256),但每次实际需要传输的数据量又很小(比如8字节),那就相当于每次PC都需要向设备发送248(=256-8)个无用的数据,造成带宽的极大浪费。
   1.2 如果这个长度过小(比如8),但每次实际需要传输的数据量又相对较大(比如128字节),需要16(=128/8)次transfer才能完成,而每次transfer都需要经历setup/data/status三个stage,也会造成带宽的浪费。

2、上述1.2情况下,可以通过数据级联的协议来组织数据。

3、使用控制传输实现的HID协议,难以在固件上实现对PC应用程序多进程(或多线程)的支持。如果再加上1.2情况下需要级联数据,那就是不可能支持了。在这种情况下,就需要在PC机上增加互锁机制来支持多进程(或多线程),否则就会造成设备执行错误的命令,应用程序收到混乱的数据。

枚举和控制传输的内容结束。下一次讲讲u盘设计的内容。

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:★所有产品免驱动 ▲USB转SPI/I2C/UART芯片 ▲模拟USB键盘鼠标芯片 ▲USB继电器/光耦 ★freeeasy-life.com

8

主题

232

帖子

1

粉丝