现象使用mimxrt1064,usb虚拟串口时,可以识别usb设备但是无法虚拟出串口
使用了adum4160,将隔离d-,d-,gnd短接以后正常
使用dmesg查看错误时日志输出
[80710.561266] usb 1-3: USB disconnect, device number 42
[80713.526192] usb 1-3: new full-speed USB device number 43 using xhci_hcd
[80713.683012] usb 1-3: config 1 interface 1 altsetting 0 endpoint 0x2 has invalid maxpacket 512, setting to 64
[80713.683029] usb 1-3: config 1 interface 1 altsetting 0 endpoint 0x82 has invalid maxpacket 512, setting to 64
[80713.683619] usb 1-3: New USB device found, idVendor=f055, idProduct=9802, bcdDevice= 1.00
[80713.683631] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[80713.683638] usb 1-3: Product: Hitbot-MED
[80713.683644] usb 1-3: Manufacturer: MicroPython
[80713.683650] usb 1-3: SerialNumber: 84BC485DD7494E2E
[80713.686135] usb 1-3: can't set config #1, error -32
后续分析发现mimxrt1064使用的时high speed
adum4160只支持full speed或者low speed
将mimxrt1064 MicroPython,tusb_config.h文件改为
// #define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | OPT_MODE_HIGH_SPEED)
#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | OPT_MODE_FULL_SPEED)
// #define CFG_TUD_CDC_RX_BUFSIZE (512)
// #define CFG_TUD_CDC_TX_BUFSIZE (512)
#define CFG_TUD_CDC_RX_BUFSIZE (64)
#define CFG_TUD_CDC_TX_BUFSIZE (64)
编译后运行仍然出现如上错误
修改tusb_config.c
//#define USBD_CDC_IN_OUT_MAX_SIZE (512)
#define USBD_CDC_IN_OUT_MAX_SIZE (64)
编译后非隔离方式,识别为full speed,CDC正常识别
测试完毕,在full speed的隔离的情况下可以满足要求