LPC2378 usb slave bulk in

Discussion created by lpcware Employee on Jun 15, 2016
Content originally posted in LPCWare by bjorngulf on Wed Apr 09 10:07:41 MST 2014

I'm trying to send data from my lpc2378 to the usb over a bulk in endpoint. But the only thing i'm getting out of it are 0 bytes. The length of the data is correct. The full initialization of the uwb works. And i can read data from a bulk out endpoint. I'm using a olimex lpc-p2378 development board. Can somebody help me? I'm stuck here for three days and i can't seem to fix it.

Endpoint init:
USBReEp |= (0x1 << 5);
/* Load Endpoint index Reg with physical endpoint no.*/
USBEpInd = 5;
/* load the max packet size Register */
USBMaxPSize = 64;
/* check whether the EP_RLZED bit in the Device Interrupt Status register is set */
while (!(USBDevIntSt & (1<<8)));
/* Clear the EP_RLZED bit */
USBDevIntSt &= ~(1<<8);

endpoint read then a write:
uint8_t blkbuf[64]={0};
uint8_t msg[64]={0};
uint32_t size;
int USB_Status;

size = USB_ReadEP(0x02, blkbuf);

USBCtrl = ((2) << 2) | (1<<1);

USBTxPLen = 4;

USBCtrl = 0; 

USBDevIntClr=(1<<4);//clear CCEMPTY
USBCmdCode=0x00050500;//Select Endpointcommand
while(!(USBDevIntSt&(1<<4)));//wait for CCEMPTY
USBDevIntClr=(1<<4);//Clear CCEMPTY
USBDevIntClr=(1<<4);//clear CCEMPTY
USBCmdCode=0x00fa0500;//validate buffercommand
while(!(USBDevIntSt&(1<<4)));//wait for CCEMPTY
USBDevIntClr=(1<<4);//Clear CCEMPTY

wireshark log

Kind regards,