引导加载器启动后将从 USBID 引脚采样,以确定支持 OTG 的设备模式。如果 USBID 引脚被配置为输出,引导加载器将不会工作,因为它启动后仍然会从 USBID 引脚采样,并始终认为这个引脚不是输出引脚。因此必须对引导加载器的代码进行调整,从而在启动时强制设置设备模式。
请您按照下面的操作对位于 C:StellarisWareboot_loader 目录下的 bl_u***funcs.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);