2013-03-24 656 views
0

我正在设计一个USB OTG板作为Android的扩展板。该电路板基于飞思卡尔KL25Z128VLK4。设计的大部分与Sparkfun的IOIO类似,但有一些扩展。如何在Android中切换USB模式?

  1. 通过从Android手机(Galaxy Nexus的)连接OTG电缆KL25Z 板,机器人充当USB主机和KL25Z充当设备B(CDC)。
  2. 通过反向连接OTG电缆,Android工作在AOA/ADK/ADB模式, 和KL25Z为VBUS提供电源并为Android充电。

在当前的设计中,交换角色主机/设备必须通过交换电缆连接手动完成。然而,后一种情况下,如果KL25Z无法提供足够的Android电流,KL25Z会将主机角色移交给Android,因此可以关闭5V/500mA的主电源,并且可以使用Android的VBUS以低功耗模式工作。

无论如何,我希望我的主板支持HOST/Device之间的切换模式,以及Android中的支持。

原则上,应该启动HNP协议来切换OTG中的A/B。但是,我不知道如何在Android端处理它。我的意思是我不知道Android SDK如何以编程方式支持HNP?涉及的任何API?任何文件,实验室和开放项目?

回答

1

截至目前,Android不支持HNP协议。做到这一点的唯一方法是重置板上的USB堆栈,并在每次想要切换模式时重新枚举。

+0

你的意思是,手动切换我的主板和Android设备之间的电缆? – 2013-07-12 02:32:14

+0

您不需要切换电缆。您可以将USB OTG ID引脚绑定到gpio。所以当你想让手机主机将ID引脚接地并重置KL25Z上的usb堆栈时。这需要修改一些电缆。 – Jason 2013-08-04 05:55:00