打印
[ZLG-ARM]

再问:2148可以实现多个设备同时工作吗?

[复制链接]
1625|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mcu51|  楼主 | 2008-2-20 11:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


我是初学者选型。
我不是要扩展别的设备,而是希望一个2148能同时当作3个设备使用.
1.模拟一个usb鼠标
2.模拟一个usb键盘
3.另外同时还可以和上位机的自定义软件进行数据通讯.

相关帖子

沙发
simon21ic| | 2008-2-20 18:52 | 只看该作者

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

可以去看一下Composite设备的资料
如果你要选型的话,甚至8位的普通AVR就可以实现USB接口(HID设备的话性能上应该没问题)
http://forums.obdev.at/viewtopic.php?p=4258#4258

使用特权

评论回复
板凳
zlgarm| | 2008-2-20 19:15 | 只看该作者

usb设备

mcu51 您好!
    LPC2148可以做您描述的三个设备,但是同时实现就很困难了,因为,识别USB设备是主机发的命令,一旦确定了设备的性质,主机就只是对这种具体设备执行操作。要实现另一个设备功能只能是拔掉然后插上让主机从新识别设备。
                                   By zlgarm_lijintao

使用特权

评论回复
地板
americ| | 2008-2-20 20:17 | 只看该作者

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


endpoint需要 分别指定。


不过,对于初学者,建议仅仅使用USB-UART设备(可以去掉速度设置,从而没有限制),剩下的,UART自己定义协议,即可!




使用特权

评论回复
5
simon21ic| | 2008-2-20 21:57 | 只看该作者

符合设备太复杂了

Compond设备的原理其实是实现一个USB Hub,然后在这个Hub上可以连接多个设备,通过这种方式来实现的多设备同时使用
Composite HID则简单很多,只需要描述多个ReportID就可以支持多种类型的Report包

使用特权

评论回复
6
simon21ic| | 2008-2-21 00:03 | 只看该作者

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

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

使用特权

评论回复
7
mcu51|  楼主 | 2008-2-23 12:58 | 只看该作者

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

谢谢simon21ic详细的解答!我决定试一下。
zlgarm_lijintao的回答与你的不同,光看他的回答,我可能就放弃了。
Boot Interface可以不做,因为是在windows下工作。
现在决定模拟3个HID设备:
1.模拟一个usb鼠标
2.模拟一个usb键盘
3.模拟一个usb串口,用于自定义数据通讯。
这样应该很容易做了吧。

使用特权

评论回复
8
simon21ic| | 2008-2-23 13:27 | 只看该作者

USB串口可能不太容易

鼠标和键盘使用HID类的话
另一个设备最好也是HID类,这样可以Composite成一个设备
http://www.obdev.at/products/avrusb/bootloadhid.html,这里有一个HID类的Bootloader例子,包括驱动代码

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝