[ZLG-ARM] 再问:2148可以实现多个设备同时工作吗?

[复制链接]
 楼主| mcu51 发表于 2008-2-20 11:34 | 显示全部楼层 |阅读模式
<br /><br />我是初学者选型。<br />我不是要扩展别的设备,而是希望一个2148能同时当作3个设备使用.<br />1.模拟一个usb鼠标<br />2.模拟一个usb键盘<br />3.另外同时还可以和上位机的自定义软件进行数据通讯.
simon21ic 发表于 2008-2-20 18:52 | 显示全部楼层

诶,不是已经回答过你了吗?

可以去看一下Composite设备的资料<br />如果你要选型的话,甚至8位的普通AVR就可以实现USB接口(HID设备的话性能上应该没问题)<br />http://forums.obdev.at/viewtopic.php?p=4258#4258
zlgarm 发表于 2008-2-20 19:15 | 显示全部楼层

usb设备

mcu51&nbsp;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;LPC2148可以做您描述的三个设备,但是同时实现就很困难了,因为,识别USB设备是主机发的命令,一旦确定了设备的性质,主机就只是对这种具体设备执行操作。要实现另一个设备功能只能是拔掉然后插上让主机从新识别设备。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_lijintao
americ 发表于 2008-2-20 20:17 | 显示全部楼层

复合设备,可以同时工作!

<br />endpoint需要&nbsp;分别指定。<br /><br /><br />不过,对于初学者,建议仅仅使用USB-UART设备(可以去掉速度设置,从而没有限制),剩下的,UART自己定义协议,即可!<br /><br /><br /><br /><br />
simon21ic 发表于 2008-2-20 21:57 | 显示全部楼层

符合设备太复杂了

Compond设备的原理其实是实现一个USB&nbsp;Hub,然后在这个Hub上可以连接多个设备,通过这种方式来实现的多设备同时使用<br />Composite&nbsp;HID则简单很多,只需要描述多个ReportID就可以支持多种类型的Report包
simon21ic 发表于 2008-2-21 00:03 | 显示全部楼层

LZ如果是初学的话,我就说的再清楚一点

比如,需要实现一个USB接口的鼠标和键盘,首先需要考虑是否需要支持Boot(有些USB接口的键盘,在Linux的启动程序Grub中无法使用【这时操作系统还未运行,Grub直接通过BIOS来获取输入和输出】,就是因为这个设备不支持Boot,也就是说不支持直接通过BIOS来控制)。<br />HID设备的接口描述符中的bInterfaceClass一定是0bx03,表明是HID设备接口,而bInterfaceSubClass则制定设备是否是Boot&nbsp;Interface。<br />如果bInterfaceSubClass为1的话,则是BootInterface【可以不通过HID&nbsp;Report描述符来定义数据,因为解释Report描述符需要比较多的代码,不适合放在BIOS里】,如果定义是BootInterface的话,bInterfaceProtocol为1或者2来定义这个接口描述符是鼠标还是键盘。这种方法是我上次回答你时说的,通过使用多个接口描述符来支持多个设备【如果需要BootInterface的话,只能这么做】。<br />如果不需要BootInterface的话,则简单很多,只需要一个接口描述符就可以了,区分鼠标还是键盘事件是通过不同的ReportID来实现的,Report描述符中可以通过使用2个Usage来实现,其中一个使用Usage(MOUSE)指名数据包发送给鼠标驱动处理;另一个使用Usage(KEYBOARD)指名数据包由键盘驱动处理。<br />如果你还需要其他的USB设备的话,也可以在增加一个Usage来定义你自己的额外的HID设备。
 楼主| mcu51 发表于 2008-2-23 12:58 | 显示全部楼层

谢谢simon21ic详细的解答!我决定试一下。

谢谢simon21ic详细的解答!我决定试一下。<br />zlgarm_lijintao的回答与你的不同,光看他的回答,我可能就放弃了。<br />Boot&nbsp;Interface可以不做,因为是在windows下工作。<br />现在决定模拟3个HID设备:<br />1.模拟一个usb鼠标<br />2.模拟一个usb键盘<br />3.模拟一个usb串口,用于自定义数据通讯。<br />这样应该很容易做了吧。<br />
simon21ic 发表于 2008-2-23 13:27 | 显示全部楼层

USB串口可能不太容易

鼠标和键盘使用HID类的话<br />另一个设备最好也是HID类,这样可以Composite成一个设备<br />http://www.obdev.at/products/avrusb/bootloadhid.html,这里有一个HID类的Bootloader例子,包括驱动代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部