0

我正在尝试了解 Android 开放式附件,因为我是 ARM 编程的新手。所以我想把所有东西都从头开始,使用免费的开源工具和代码。

  1. 编译器:yagarto GNU ARM
  2. NXP LPC1768 演示板:来自一家名为“waveshare”的公司
  3. USB 驱动程序示例:NXP hostlite
  4. 安卓手机为NEXUS 4,安卓4.2.2版本

参考示例 NXP hostlite 小而清晰。但我无法在我设计的代码中正确设置附件。

描述:

  1. 插入检测,USB复位----OK
  2. 读取设备描述符----OK
  3. 将地址设置为1,将maximum-pakcet-size更改为64 ----- OK
  4. 读取协议,它返回 0x0002 。这意味着支持 AOA v2。 - - 好的
  5. 写识别字符串,其中5个,-----确定
  6. 设置附件模式。我可以看到在我的日志打印输出中有一个端口断开连接,然后是一个端口连接中断通知,----所以看起来这个命令也可以
  7. 但是当我现在尝试读取设备描述符时,它会在发送 TD_SETUP 时向我返回一个 5 的完成代码。CC = = 5 表示停止或无响应。所以我无法判断VID、PID是否OK。 - - 失败

根据AOA协议,设置附件模式后,设备会重新枚举自己。

所以我的问题是:我应该怎么做重新枚举?

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

1 回答 1

0

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

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


附件模式前的设备描述符:

00:12

01:01

02:00

03:02

04:00

05:00

06:00

07:40

08: D1

09:18 _

0A:E1

0B:4E

0C:28

0D:02

0E:01

0F:02

10:03

11:01

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

00:12

01:01

02:00

03:02

04:00

05:00

06:00

07:40

08: D1

09:18 _

0A:00

0B:二维

0C:28

0D:02

0E:01

0F:02

10:03

11:01

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

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

配置描述符:

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

09

02、配置描述符

20

00

01、1个接口

01、1个配置

00

80

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


09

04、接口描述符

00

00

02、2个端点

法郎

法郎

00

05


07

05、端点描述符

81合1

02、散装

40,最大大小 64 字节

00

00


07

05、端点描述符

02出2

02、散装

40,最大大小 64 字节

00

00

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

于 2013-05-27T18:09:53.337 回答