我在使用 LM3S9B96 和 CCS 工具。我希望将 LM3S9B96 当作 USB 器件使用,因此在我的定制电路板上使用了下列引脚:
1) 将 LM3S9B96 的 USBOVBUS、USBDP、USBDM 引脚分别连接至 USB B 型插槽的 VCC、Data + 和 Data 接头上。
2) 另外,根据产品说明书的建议连接 USB0VBIAS。
我的问题是:
1) 上述硬件设置是否正确?或者,我们是否需要为 USB 器件使用更多的引脚?
2) 要让 USB 引导加载器在 USB 器件的配置下工作,是否要对其进行修改?如果是,请您说明具体应该怎么做。
引导加载器启动后将从 USBID 引脚采样,以确定支持 OTG 的设备模式。如果 USBID 引脚被配置为输出,引导加载器将不会工作,因为它启动后仍然会从 USBID 引脚采样,并始终认为这个引脚不是输出引脚。因此必须对引导加载器的代码进行调整,从而在启动时强制设置设备模式。
请您按照下面的操作对位于 C:\StellarisWare\boot_loader 目录下的 bl_usbfuncs.c 文件进行调整,然后再试?对Rev C 的设备,这样可以在 OTG 部件上强行设置设备模式,但不适用于 Rev B。
在 USBBLInit(空)函数的定义里,填入下面用绿色重点标注的代码。请重新编译您的驱动程序 lib,随后再次构建您的项目。
//
// 根据 bl_config.h 的设置确定是采用自主供电状态还是总线供电状态。
//
#if USB_BUS_POWERED
g_sUSBDeviceState.ucStatus |= USB_STATUS_SELF_PWR;
#else
g_sUSBDeviceState.ucStatus &= ~USB_STATUS_SELF_PWR;
#endif
//
// 将 USB 控制器模式设置为设备。
//
HWREGB(USB0_BASE + USB_O_GPCS) = USB_GPCS_DEVMODOTG | USB_GPCS_DEVMOD;
//
// 通过软连接来附加器件。
//
HWREGB(USB0_BASE + USB_O_POWER) |= USB_POWER_SOFTCONN;
//
// 启用 USB 中断。
//
HWREG(NVIC_EN1) = 1 << (INT_USB0 - 48);