OUT Endpoints stop working when the ENH_PKT bit in the REVCTL register is set

Question: Why do OUT Endpoints stop working when the ENH_PKT bit in the REVCTL register is set?

 

Answer:

The EZ-USB Technical Reference Manual recommends that you set the ENH_PKT bit and DYN_OUT bit in the REVCTL register. When the ENH_PKT bit is set, the EPxBCH and EPxBCL registers cannot be used to arm the OUT endpoints. Instead we have to use OUTPKTEND register to arm the OUT endpoints. If ENH_PKT bit is set and you arm the OUT endpoints using EPxBCL and EPxBCH registers, these OUT endpoints will not be armed and hence the endpoints will not function as desired. However if you don’t set the ENH_PKT bit then you may use EPxBCL and EPxBCH registers to arm the OUT endpoints. But many features which are enabled only when the ENH_PKT bit is set will not be available. The list of things that cannot be done when ENH_PKT bit is not set can be found in the register definition of REVCTL register in the TRM.