EPXFIFOBCH/L Registers of FX2LP – KBA219002

Version: **

 

Question:

What do the EPXFIFOBCH and EPXFIFOBCL registers contain and how can they be used? 

 

Answer:

The EPXFIFOBCH and EPXFIFOBCL registers contain the number of bytes received from the interface domain. One way of using it is to commit a short packet, which is sent from the external master at the end of a long transfer. To do this, use the following code snippet in TD_Poll of the slave firmware: 

if( (( EPXFIFOBCH<<8) | (EPXFIFOBCL)) < 0x200) //if the packet is short(here x is the IN endpoint which //receives data from external master)

{

                  SYNCDELAY;

                  EPXFIFOCFG = 0x00;                  //change from Auto mode to Manual mode

                  SYNCDELAY;

                  INPKTEND = 0x0X;                    //commit the short packet

                  SYNCDELAY;

                  EPXFIFOCFG = 0x0C;                  //back to Auto mode

                  SYNCDELAY;

}

Here, to commit the short packet the FIFO configuration is changed from Auto to Manual mode. Then, it is converted back to Auto mode if the master continues the long transfer.