使用:TM4C1294NCPDT
外设库:TivaWare 2.1.4.178
我正在尝试为我们的 FSE 人员提供一种简单的方法、以便使用笔记本电脑上的 LMI Flasher 实用程序在现场更新我们的产品固件。
为简单起见、在代码中、设置 CPU 时钟后(如果按下按钮、我执行此操作)、我想深入 ROM_UpdateUSB (0)函数以开始更新。
当我运行代码并查看设备管理器(抱歉、win10)时、我看到"Unknown USB Device (Device Descriptor Request Failed)"(未知的 USB 设备(设备描述符请求失败)。 我尝试使用 SW-TM4C-2.1.4.178.patch-1.0更新驱动程序、但 Windows 告诉我您的设备的最佳驱动程序已安装。 我甚至像以前的帖子所建议的那样尝试卸载现有驱动程序、但这没有帮助。
我在下面发布了我的代码、以防我在代码中做不到正确的事情。 我希望排除我的代码是问题、然后我可以将注意力转向我的 PC。
如果有任何建议,将不胜感激? 谢谢!
include "inc/hw_memmap.h"
#include "driverlib/rom.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/rom_map.h"
#include "driverlib/usb.h"
#include "usblib/usblib.h"
器
件#include "usblib/usblib.h"
uint32_t SysClock;
uint32_t ui32PLLRate;
//
//从 PLL 以120MHz 运行。
//
SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_main | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
//
//将 CPU 时钟和 PLL 频率告知 USB 库。 这是一个
// TM4C129器件的新要求。
//
SysCtlVCOGet (SYSCTL_XTAL_25MHz、\ui32PLLRate);
USBDCDFeatureSet (0、USBLIB_Feature_CPUCLK、&SysClock);
USBDCDFeatureSet (0、USBLIB_Feature_USBPLL、&ui32PLLRate);
//
//启用用于更新的其他 GPIO 外设。
//
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
//
MAP_GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);
MAP_GPIOPinTypeUSBAnalog (GPIO_PORTL_BASE、GPIO_PIN_6 | GPIO_PIN_7);
//
//启用和复位 USB 外设。
//
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_USB0);
MAP_SysCtlPeripheralReset (SYSCTL_Periph_USB0);
MAP_USBCLOCK 使能(USB0_BASE、8、USB_CLOCK _INTERNAL);
//
//等待大约一秒钟。
//
MAP_SysCtlDelay (SysClock / 3);
//
//在 NVIC 级别重新启用中断。
//
MAP_IntMasterEnable();//在 NVIC 级别启用中断
//
//在 ROM 中调用 USB 引导加载程序。
//
ROM_UpdateUSB (0);
while (1)
{
}
}