【发布时间】:2012-07-05 11:43:15
【问题描述】:
设备支持 USB OTG。以下是场景:
当设备连接到 PC 时,该设备充当从设备。 (设备如何知道它必须充当从设备?)
当设备连接到打印机时,该设备充当主机。 (设备如何知道它必须充当主设备?)
当设备连接到 OTG 时执行的步骤是什么? 这个机制如何实现(简述)?
【问题讨论】:
标签: usb linux-device-driver device-driver usb-otg
设备支持 USB OTG。以下是场景:
当设备连接到 PC 时,该设备充当从设备。 (设备如何知道它必须充当从设备?)
当设备连接到打印机时,该设备充当主机。 (设备如何知道它必须充当主设备?)
当设备连接到 OTG 时执行的步骤是什么? 这个机制如何实现(简述)?
【问题讨论】:
标签: usb linux-device-driver device-driver usb-otg
USB OTG 设备的确切行为在 specification 中描述,您可以在 usb.org 找到。压缩包中有一个名为 USB_OTG 的 PDF。
第 6 节中的主机协商协议介绍了两个 OTG 设备如何决定哪一个获取嵌入式主机。基本上,这是通过驱动 D+ 线上的上拉和下拉电阻来存档的。
注意:在谈论 USB 时,不使用术语主/从。主机称为host,为总线供电,而从机称为device。在 OTG 的情况下(一般情况下,请参阅规范以了解例外情况),这两个部分都可以成为主机或设备。当主机被主机协商协议找出来后,这部分就变成了所谓的嵌入式主机。
【讨论】:
在您提到的两种情况下,USB设备能够通过电缆知道是主机还是设备。 USB 电缆(非 C 型)不对称。一侧是主机,另一侧是设备。连接器上有一个称为 ID 引脚的引脚,它在设备侧浮动并在主机侧接地。这允许每一侧的 USB 控制器知道它连接到电缆的哪一侧,从而知道它在连接时应该扮演哪个角色(主机或设备)。这些类型的设备称为双重角色设备。
如果您有这样的设备,那么您可以将其插入普通主机(如您的笔记本电脑),它将充当设备。您可以将其插入常规设备(如打印机),它将充当主机。这一切都基于电缆。
如果您将两个双重角色 OTG 设备相互插入。它们的初始角色由电缆以相同的方式确定。
在确定初始角色后,他们可以通过主机协商协议 (HNP) 将角色从最初由电缆确定的角色交换。
就实现这一点而言。没有简单的方法来解释它。每个控制器都是不同的,您必须阅读控制器数据手册和编程模型才能实现所有这些程序。以及对 USB 和 OTG 规范本身有很好的了解。
http://usb.org 是一个不错的起点,您可以在其中找到所有规格。
【讨论】: