Configuring  the Endpoints as Bulk, Isochronous or Interrupt in FX1/FX2/FX2LP

Question: How to configure the endpoints as bulk, isochronous or interrupt?

 

Answer:

The configuration of the endpoint should be done in two places.

1) In dscr.a51 file:

The endpoint type is defined in the descriptors of the device. For the EZUSB series, the "dscr.a51" file is where you set the endpoints and other features, including VID/PID/DID descriptors. This file is used by Keil when creating the hex file. Examine some of these files included with the examples and you should have no problem modifying one and using it for your project.

2) In periph.c  file ( eg. bulkloop.c in bulkloop project):

EPxCFG registers should be configured according to the type of transfer, size of endpoint, buffer size.

Where x - stands for endpoint numbers like 2,4,6 or 8.

Infomation about EPxCFG is available in the "Section 15 - Registers" in the technical reference manual (TRM link http://www.cypress.com/?rID=38232. To understand the endpoint FIFO architecture refer the application note in the link Endpoint FIFO Architecture of EZ-USB FX1/FX2LP(TM) - AN4067