LM3S9B92 USB 全速模式



使用9B92的USB实例代码,usb_dev_bulk并使用光盘发布的驱动,使用BusHound监测,发现其工作在Low-Speed模式。

现在的问题是怎么让9b92的usb工作在Full-Speed模式下呢?

  • 1. USB低速模式时,D+和D-有一个15K的下拉电阻,全速时,D+有一个1.5K的上拉电阻。

    2. 当设备插入HUB端时,主机通过检测D+是否被拉到到3V来判断外接的是全速设备还是低速设备。在

       LM3S系列MCU中,该上拉电阻集成到芯片内部。如果你想判断设备是否设置正确可以用万用表测试下

       D+的管脚即可。

    3. LM3S9B92的USB设备中的USBTEST寄存中有个FORCEFS位,该位用来强制USB控制器工作在全速或低速模式,该位上电复位值为0,即上电默认为低速模式。

    4. 在TI提供的USB库文件,usbdbulk.c文件中有个数组用来对USB设备进行配置,

    数组名:

    unsigned char g_pBulkDeviceDescriptor[] =

    {

       18,                         // Size of this structure.

       USB_DTYPE_DEVICE,           // Type of this structure.

       USBShort(0x110),            // USB version 1.1 (if we say 2.0, hosts assume

                                   // high-speed - see USB 2.0 spec 9.2.6.6)

       USB_CLASS_VEND_SPECIFIC,    // USB Device Class

       0,                          // USB Device Sub-class

       0,                          // USB Device protocol

       64,                         // Maximum packet size for default pipe.

       USBShort(0),                // Vendor ID (VID).

       USBShort(0),                // Product ID (PID).

       USBShort(0x100),            // Device Version BCD.

       1,                          // Manufacturer string identifier.

       2,                          // Product string identifier.

       3,                          // Product serial number.

       1                           // Number of configurations.

    };

    其中usbshort(0x110) 就是来配置USB设备是否工作在全速或低速。