0

背景:我正在评估用 Cortex 芯片替换 FTDI+FPGA+RAM,并且正在使用 LPC1768 开发卡。

LED 闪烁?[x] 通过虚拟通信端口 [x] 进行通信

现在我正在考虑通过 libUSB 进行通信(CDC 或 HID ......评估)

我首先尝试了这个示例:https ://developer.mbed.org/cookbook/USBHID-bindings- & USBHID_TestCase程序编译并运行。

问题出在 python 方面(使用 linux 示例和 libUSB)。

第一个问题是 py 脚本有:

mbed_vendor_id = 0x1234 
mbed_product_id = 0x0006

同样 mbed USBDevice:USBHID 具有:

USBHID(uint8_t output_report_length = 64, uint8_t input_report_length = 64, uint16_t vendor_id = 0x1234, uint16_t product_id = 0x0006, uint16_t product_release = 0x0001, bool connect = true);

即相同的产品和供应商ID。但是... lsusb 在不同的位置列出了 NXP 芯片组。

Bus 003 Device 008: ID 0d28:0204 NXP LPC1768

发出:lsusb -vvv -d 0x0d28:0204我可以看到这张卡暴露的 4 个设备(好),这与一个简单的 python 测试用例相匹配

import usb
mbed_vendor_id = 0x0d28
mbed_product_id = 0x0204
dev = usb.core.find(idVendor=mbed_vendor_id,idProduct=mbed_product_id)

检查dev现在填充了什么:

dev[0]
<CONFIGURATION 1: 500 mA>


dev[0][(0,0)]
<INTERFACE 0: Mass Storage>
[0] <ENDPOINT 0x82: Bulk IN>
[1] <ENDPOINT 0x2: Bulk OUT>
[2] <ENDPOINT 0x0: Control OUT>


dev[0][(1,0)]
<INTERFACE 1: CDC Communication>
[0] <ENDPOINT 0x83: Interrupt IN>
[1] <ENDPOINT 0x0: Control OUT>

dev[0][(2,0)]
<INTERFACE 2: CDC Data>
[0] <ENDPOINT 0x4: Bulk OUT>
[1] <ENDPOINT 0x84: Bulk IN>
[2] <ENDPOINT 0x0: Control OUT>


dev[0][(3,0)]
<INTERFACE 3: Human Interface Device>
[0] <ENDPOINT 0x81: Interrupt IN>
[1] <ENDPOINT 0x1: Interrupt OUT>
[2] <ENDPOINT 0x0: Control OUT>

所以 0 是大容量存储 -> 示例中的 python 脚本不起作用。我一直在尝试通过 dev[0][3,0] 进行通信,并将端点指定为 dev[0][3,0][0] 我可以写入但可以从 dev[0][3,0][ 读取1] 始终返回 0,即使 mbed 代码旨在提供随机数据。

有任何想法吗 ?

4

1 回答 1

1

USB 测试用例代码使用 lpc1768 ic 上的 usb 控制器,而不是 mbed 板的接口芯片。该代码使用 mbed 板上的引脚 31 和 32。希望这可以帮助。

于 2015-07-27T05:01:15.643 回答