40.6.6 Endpoint Configuration

The endpoint 0 is always a control endpoint, it must be programmed and active in order to be enabled when the End Of Reset interrupt occurs.

To configure the endpoints:

  • Fill the configuration register (UDPHS_EPTCFG) with the endpoint size, direction (IN or OUT), type (CTRL, Bulk, IT, ISO) and the number of banks.
  • Fill the number of transactions (NB_TRANS) for isochronous endpoints.
Note: For control endpoints the direction has no effect.
  • Verify that the EPT_MAPD flag is set. This flag is set if the endpoint size and the number of banks are correct for this endpoint and compared to the FIFO maximum capacity and the maximum number of allowed banks.
  • Configure the endpoint control flags and enable them in UDPHS_EPTCTLENBx as described in UDPHS_EPTCTLDISx.

Control endpoints can generate interrupts and use only 1 bank.

All endpoints (except endpoint 0) can be configured either as Bulk, Interrupt or Isochronous. See the table USB Transfer Events.

The maximum packet size they can accept corresponds to the maximum endpoint size.

Note: The endpoint size of 1024 is reserved for isochronous endpoints.

The size of the DPRAM is 8 Kbytes. The DPR is shared by all active endpoints. The memory size required by the active endpoints must not exceed the size of the DPRAM.

SIZE_DPRAM = SIZE _EPT0

+ NB_BANK_EPT1 x SIZE_EPT1

+ NB_BANK_EPT2 x SIZE_EPT2

+ NB_BANK_EPT3 x SIZE_EPT3

+ NB_BANK_EPT4 x SIZE_EPT4

+ NB_BANK_EPT5 x SIZE_EPT5

+ NB_BANK_EPT6 x SIZE_EPT6

+... (see UDPHS_EPTCFGx)

If a user tries to configure endpoints with a size the sum of which is greater than the DPRAM, then the EPT_MAPD is not set.

The application has access to the physical block of DPR reserved for the endpoint through a 64-Kbyte logical address space.

The physical block of DPR reserved for the endpoint is remapped all along the 64-Kbyte logical address space. The application can write a 64-Kbyte buffer linearly.

Figure 40-5. Logical Address Space for DPR Access

Configuration examples of UDPHS_EPTCTLDISx for Bulk IN endpoint type follow below.

  • With DMA
    • AUTO_VALID: Automatically validate the packet and switch to the next bank.
    • EPT_ENABL: Enable endpoint.
  • Without DMA:
    • TXRDY: An interrupt is generated after each transmission.
    • EPT_ENABL: Enable endpoint.

Configuration examples of Bulk OUT endpoint type follow below.

  • With DMA
    • AUTO_VALID: Automatically validate the packet and switch to the next bank.
    • EPT_ENABL: Enable endpoint.
  • Without DMA
    • RXRDY_TXKL: An interrupt is sent after a new packet has been stored in the endpoint FIFO.
    • EPT_ENABL: Enable endpoint.