Other Parts Discussed in Thread: C2000WARE
Hi,
We are having some difficulty getting the USB software for the TMS320F28378S working properly. We've done our best to follow the usb_ex4_dev_bulk.c example in C2000 Ware, however it is a bit challenging since many of the important functions are commented out.
The code we are using to initialize the USB software looks like below. If we set a breakpoint in either INT_myUSB0_ISR, USBBufferEventCallback, or RxHandler, the breakpoint is never hit -- even if we disconnect / connect the host several times.
static tUSBDBulkDevice usb_bulk_device =
{
SECRET_VID,
SECRET_PID,
125,
USB_CONF_ATTR_SELF_PWR,
RxHandler,
(void *)&g_sRxBuffer,
USBBufferEventCallback,
(void *)&g_sTxBuffer,
g_pStringDescriptors,
sizeof(g_pStringDescriptors),
};
interrupt void INT_myUSB0_ISR(void)
{
USB0DeviceIntHandler();
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);
}
void ConfigureUSB()
{
static void* pvdevice = NULL;
GpioCtrlRegs.GPBAMSEL.bit.GPIO42 = 1; // Enable USB operation on GPIOs
GpioCtrlRegs.GPBAMSEL.bit.GPIO43 = 1; // Enable USB operation on GPIOs
GPIO_SetupPinOptions(43, GPIO_INPUT, GPIO_PULLUP);
InitAuxPll(XTAL_OSC, 3, 0, 0); // XTAL oscillator is 20 MHz, need 60 MHz Pll output
USBBufferInit(&g_sTxBuffer);
USBBufferInit(&g_sRxBuffer);
Interrupt_register(INT_USBA, INT_myUSB0_ISR);
USBStackModeSet(0, eUSBModeForceDevice, ModeCallback);
pvdevice = USBDBulkInit(0, &usb_bulk_device);
}
We can verify with an oscilloscope that there is traffic on the USB D+- lines. The host recognizes that a USB device has been connected since D+ is pulled up, however since the device software does not respond, the USB drivers indicate "device descriptor request failed".
Any guidance here is greatly appreciated.
Thanks!