使用9B92的USB实例代码,usb_dev_bulk并使用光盘发布的驱动,使用BusHound监测,发现其工作在Low-Speed模式。
现在的问题是怎么让9b92的usb工作在Full-Speed模式下呢?
使用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设备是否工作在全速或低速。