This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

multiple USB endpoints



I am trying to use usblib to speed development of my device. My device must be an exact duplicate of an existing device which has two bulk IN endpoints and one bulk OUT endpoint.

I have incorporated usblib and am communicating on EP1. Now I want to add support for the second IN endpoint. And I don't quite see how to do this. What documentation I can find, "StarterWare USB - Texas Instruments Embedded Processors Wiki.mht", seems to imply support for multiple endpoints.  But I cannot find any examples or suggestions about how this might be done.  And, on examing usblib code (particularly USBDBulkCompositeInit), it appears that multiple endpoints is not possible with this Starterware.

I hope someone will enlighten me on this question.

P.S.  Apparently the "qs-scope" example, referenced in the current StellarisWare documentation, may answer my questions but I am having no luck obtaining the thing...

  • Kurt,

    I have a similar application that uses multiple endpoints. I'm using an AM335x part and I leveraged the example code in

    AM335X_StarterWare_02_00_00_06\examples\evmAM335x\usb_device_host_msc for the EVM. Since my device is

    vendor specific and not a mass storage device, I ripped out all of the upper layers of the protocol stack related to mass storage and SCSI.

    But I was able to reuse all of the lower layers of the USB stack from the example.

    My app consists of a usb device side and a usb host side. If your app only uses a usb device then I would suggest starting with the usb_dev_msc example.

    This example is also available if you happen to be using a beaglebone board (see AM335X_StarterWare_02_00_00_06\examples\beaglebone\usb_dev_msc)

    The msc examples contain code that allows use of DMA for transferring packets, if you need the performance.

    Another option is to leverage the usb_dev_bulk example. But that only uses programmed I/O for transferring packet data.