0

背景: FTDI+FPGA+RAM を Cortex チップに置き換えることを検討しており、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 とベンダー 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] mbed コードがランダム データを提供するように意図されていても、常に 0 を返します。

何か案は ?

4

1 に答える 1