通过python作为HID与LPC1768通信

2024-05-13 18:20:58 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在我想通过libUSB通信(CDC或HID。。。评估)

我从这个例子开始:https://developer.mbed.org/cookbook/USBHID-bindings-&USBHID_TestCase程序编译并运行。在

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

第一个问题是py脚本有:

mbed_vendor_id = 0x1234 
mbed_product_id = 0x0006

同样是mbedUSB设备:USBHID有公司名称:

^{pr2}$

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

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

发布:lsusb-vvv-d0x0d28: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代码旨在提供随机数据。在

有什么主意吗?在


Tags: indevidbulkproductoutendpointinterface