在Nexus 4上设置配件模式失败

时间:2013-05-27 04:50:38

标签: android accessory nexus-4

我正在尝试了解Android开放配件,因为我是ARM编程的新手。所以我想从底层开始,使用免费的开源工具和代码。

  1. 编译器:yagarto GNU ARM
  2. 恩智浦LPC1768演示板:来自一家名为" waveshare"
  3. 的公司
  4. USB驱动程序示例:NXP hostlite
  5. Android手机是NEXUS 4,Android 4.2.2版本
  6. 参考示例NXP hostlite小而清晰。但是我无法在我设计的代码中正确设置附件。

    描述:

    1. 插入检测和USB重置----确定
    2. 读取设备描述符----确定
    3. 将地址设置为1,将maximum-pakcet-size更改为64 -----确定
    4. 读取协议,返回0x0002。这意味着支持AOA v2。 ----行
    5. 写出识别字符串,其中5个,-----确定
    6. 设置配件模式。 我可以看到端口断开然后连接端口 在我的Log打印输出中断,----所以看来这样 命令也没关系
    7. 但是当我现在尝试读取设备描述符时,它会返回一个 发送TD_SETUP时,完成代码为5。 CC = = 5 意味着失速或没有反应。所以我无法判断VID,PID是否正常 或不。 ----失败
    8. 根据AOA协议,在设置配件模式后,设备将重新枚举自身。

      所以我的问题是:我应该怎样做才能重新列举?

      1. 等到那里完成自己;我需要延迟吗?
      2. 或重置设备,然后再次读取设备描述符?(我不是 这么认为,因为返回的VID / PID不正确。)
      3. 或者您想与我分享任何建议。

1 个答案:

答案 0 :(得分:0)

我发现:在重新枚举期间,绝对需要端口重置。否则,它将无法正常工作! 没有正式文件提及它。我的一位熟悉USB的朋友告诉我,重置会使设备达到相同的初始状态。但它不在此应用程序环境中。现在我可以成功设置为Android附件模式并连接NXP AOADemo apk。

呀!接下来,我将在设备和主机端更改程序。我需要的是一个小小的演示。


附件模式前的

设备描述符:

0点12

01:01

2时

03:02

04:00

05:00

06:00

7点40

08:的 D1

09:的 18

0A:的 E1

0B:的 4E

0C:28

0D:02

0E:01

0F:02

10:03

11:01

进入附件模式后的设备描述符:

0点12

01:01

2时

03:02

04:00

05:00

06:00

7点40

08:的 D1

09:的 18

0A:<强> 00

0B:的 2D

0C:28

0D:02

0E:01

0F:02

10:03

11:01

VID 18D1,PID 2D00。我没有打开调试模式,所以PID是2D00,没问题。不像他们在另一篇文章中所说的那样。

======================================

配置描述符:

-------解析------------

09

02,配置描述符

20

00

01,1接口

01,1配置

00

80

FA,最大电流供应需要500mA


09

04,接口描述符

00

00

02,2个端点

FF

FF

00

05


07

05,端点描述符

81 in 1

02,批量

40,最大大小为64字节

00

00


07

05,端点描述符

02 out 2

02,批量

40,最大大小为64字节

00

00

-------结束解析------