将 LM3S9B96 用作 USB 器件

我在使用 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);