STM32 CDC HOST初步调试

来源:互联网 发布:adobe是什么软件 编辑:程序博客网 时间:2024/06/08 04:17

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确实使用了产商自定义设备接口类型。