Other Parts Discussed in Thread: C2000WARE
Hi,
Recently I've been trying to upload my programs to my costume made board using "TMS320F28069UPNT" in order to make the product firmware updatable whenever there's a new version released at the customer side. I've checked successfully my USB hardware functionality with the "usb_dev_serial" example and bunch of other examples to make sure the USB is functional and working fine. Then I tried to use the USB bootloader by reading "F2806x_USBBL_UG.pdf" and going to the steps mentioned in the document, according to this document I've flashed the "boot_loader" project from MWare in "C:\ti\c2000\C2000Ware_2_01_00_00\device_support\f2806x\MWare\boot_loader" to my microcontroller and installed the windows driver "boot_usb.inf" located in "C:\ti\c2000\C2000Ware_2_01_00_00\utilities\windows_drivers" which supposedly is the latest Windows driver for DFU porpuses.
Now in my windows device manager, I can clearly see the driver installed as below:
now when I try to use "dfuprog -e" command using the dfuprog program located at "C:\ti\c2000\C2000Ware_2_01_00_00\utilities\tools\f2806x\dfuprog\Release" I see:
I understood this is a pretty common problem existing among C2000 users with windows as I saw in the forum after searching for almost 2 days. Based on the C2000 forum I also tried to do the followings:
1-deactivating windows 10 signature requirement
2- uninstall and install the windows drivers
3- using CONTROLSUIT version of dfuprog.exe
It worth mentioning, since in my device I use internal clock, I had to activate PPL2 clocking to USB and eliminating the TI sample code clock inside "ConfigureUSB(void)" function which is designed for those Launchpads equipped with external crystal as below ( I did the same for usb_dev_serial examples and so on to make them work )
void
ConfigureUSB(void)
{
/*
//
// Enable the main oscillator.
//
EALLOW;
SysCtrlRegs.CLKCTL.bit.XCLKINOFF = 1;
SysCtrlRegs.CLKCTL.bit.XTALOSCOFF = 0;
SysCtrlRegs.CLKCTL.bit.OSCCLKSRC2SEL = 0;
SysCtrlRegs.CLKCTL.bit.OSCCLKSRCSEL = 1;
//
// DELAY_US while the main oscillator starts up.
//
DELAY_US(10);
//
// Set the crystal frequency, switch to the main oscillator, and enable the
// PLL.
//
// Setup PLL for 80Mhz
// Calculate the appropriate multiplier with the given crystal frequency
//
while(SysCtrlRegs.PLLSTS.bit.MCLKSTS);
SysCtrlRegs.PLLSTS.bit.DIVSEL = 0;
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLCR.bit.DIV = 80000000UL/CRYSTAL_FREQ;
while(!SysCtrlRegs.PLLSTS.bit.PLLLOCKS);
SysCtrlRegs.PLLSTS.bit.MCLKOFF = 1;
SysCtrlRegs.PLLSTS.bit.DIVSEL = 3;
//
// DELAY_US while the PLL locks.
//
DELAY_US(10);
//
// Setup PLL2 for 60Mhz operation
// Calculate the appropriate multiplier with the given crystal frequency
//
SysCtrlRegs.PLL2CTL.bit.PLL2CLKSRCSEL = 2;
SysCtrlRegs.PLL2CTL.bit.PLL2EN = 1;
SysCtrlRegs.PLL2MULT.bit.PLL2MULT = 120000000/CRYSTAL_FREQ;
while(!SysCtrlRegs.PLL2STS.bit.PLL2LOCKS);
*/
/**Added by me**/
InitSysCtrl();
// In this example:
// PLL2 = INTOSC1 (10 Mhz) * 12 / 2 = 60 MHz
// In general, for more accuracy, source PLL2 with a crystal or
// external clock source.
//
//InitPll2(PLL2SRC_INTOSC1, 12, PLL2_SYSCLK2DIV2DIS);
InitPll2(0, 12, 0);
EALLOW;
// Enable USB Clock
//
SysCtrlRegs.PCLKCR3.bit.USB0ENCLK = 1;
// Enable PHY
GpioCtrlRegs.GPACTRL2.bit.USB0IOEN = 1;
EDIS;
EALLOW; //only for boot_load code to follow the same order!!!!!
/*****/
InitPieCtrl();
InitPieVectTable();
EDIS;
//
// If the target device has a mux to allow selection of USB host or
// device mode, make sure this is set to device mode.
//
#ifdef USB_HAS_MUX
SetUSBMux();
#endif
//
// Configure the USB interface and put the device on the bus.
//
ConfigureUSBInterface();
}
So as you might be understood by now I need :
1- To understand where's the problem? Is it the windows drivers? how can I mitigate them?
2- To know whether if there's any other way to update the firmware on C2000 microcontrollers with USB? ( preferably more stable methods)
Regards
My code composer version : Version: 9.3.0.00012
| TMS320F28069UPNT |


