背景:我正在评估用 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 代码旨在提供随机数据。
有任何想法吗 ?