How determine end of USB bulkOut transfer

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How determine end of USB bulkOut transfer

480 Views
simonepuschmann
Contributor II

Hello

I have programmed a custom USB interface for a LPC1778. To send and receive data I used bulk transfer. Actually, everything works fine, but I have problems when receiving data packets > USB_FS_MAX_BULK_PACKET (= 64) bytes. A complete message can then consist of several 64 byte USB data packets. My problem is, that I do not know when the complete USB message was received and can be processed. In most cases, the length of the last data packet will be != 64 bytes and the data can be concatenated until then. But this works only as long as the whole package is not a multiple of 64.

Does anyone have any idee?


/* USB bulk EP_OUT endpoint handler */
ErrorCode_t lusb_BulkOUT_Hdlr(USBD_HANDLE_T hUsb, void *data, uint32_t event)
{
    /* We received a transfer from the USB host. */
    switch (event)
    {
    case USB_EVT_OUT:
        usb_rx_length = USBD_API->hw->ReadEP(hUsb, LUSB_OUT_EP, usb_rx_buffer + usb_rx_byte_counter);

    
        if (usb_rx_length < USB_FS_MAX_BULK_PACKET){               // only works if total packet size is not nultiple of 64!
            usb_rx_bulk_out_ready = 1;
        }


        usb_rx_byte_counter += usb_rx_length;
        usb_rx_bulk_counter++;
        break;

    case USB_EVT_OUT_NAK:
        break;
    }

    return LPC_OK;
}

Tags (1)
0 Kudos
1 Reply

353 Views
jeremyzhou
NXP Employee
NXP Employee

Hi ,
Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.
To provide the fastest possible support, I'd highly recommend you to refer to the USB CDC demos in LPCOpen library (https://www.nxp.com/downloads/en/software/lpcopen_2_10_keil_iar_ea_devkit_1788.zip ) for details.
Have a great day,
TIC

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos