1. 芯片平台: STM32F207VE
2. 使用Cube产生USB host CDC的工程
3. USB CDC设备使用基于FDTI FT232R的USB Dongle
将程序download到PCB上,发现USB并未工作。查看hUsbHostFS变量,其gState的状态为HOST_ABORT_STATE,枚举的状态(EnumState)为ENUM_GET_SERIALNUM_STRING_DESC。 USB设备初始化就失败了。
4. 将usbh_conf.h中的USBH_DEBUG_LEVEL设置为1. 使用Semihost输出的方式(PCB上并未将SWO脚引出到调试接口)。IAR的Terminal IO输出的信息如下:
USB Device Attached
PID: 6001h
VID: 403h
Address (#1) assigned.
Manufacturer : EnOcean GmbH
Product : EnOcean USB 300 DB
Serial Number : FTB416E
Enumeration done.
This device has only 1 configuration.
Default configuration set.
No registered class for this device.
基本信息其实都已经识别出来了,但是似乎是USB Class 不支持。
5. 搜索网路上的资料,发现有一个帖子上说,类似于Silabs或则FTDI,他们的USB转串口的芯片,经常性使用产商自定义设备,而不是标准的CDC类。帖子的链接如下:http://www.keil.com/forum/20569/
“Virtual COM ports may derive from a vendor specific device using a custom PC driver. For example, FTDI and SiLabs apply vendor specific devices for their USB-UART chips.”
6. 使用帖子上说的UVCView软件查看,bInterfaceClass: 0xFF -> Vendor Specific Device 。FT232R确实使用了产商自定义设备接口类型。