English
Language : 

PIC24FJ256GB106-I Datasheet, PDF (199/328 Pages) Microchip Technology – 64/80/100-Pin, 16-Bit Flash Microcontrollers with USB On-The-Go (OTG)
PIC24FJ256GB110 FAMILY
17.1 USB Buffer Descriptors and the
BDT
Endpoint buffer control is handled through a structure
called the Buffer Descriptor Table (BDT). This provides
a flexible method for users to construct and control
endpoint buffers of various lengths and configurations.
The BDT can be located in any available, 512-byte
aligned block of data RAM. The BDT Pointer
(U1BDTP1) contains the upper address byte of the
BDT, and sets the location of the BDT in RAM. The user
must set this pointer to indicate the table’s location.
The BDT is composed of Buffer Descriptors (BDs)
which are used to define and control the actual buffers
in the USB RAM space. Each BD consists of two, 16-bit
“soft” (non-fixed-address) registers, BDnSTAT and
BDnADR, where n represents one of the 64 possible
BDs (range of 0 to 63). BDnSTAT is the status register
for BDn, while BDnADR specifies the starting address
for the buffer associated with BDn.
Depending on the endpoint buffering configuration
used, there are up to 64 sets of buffer descriptors, for a
total of 256 bytes. At a minimum, the BDT must be at
least 8 bytes long. This is because the USB specifica-
tion mandates that every device must have Endpoint 0
with both input and output for initial setup.
Endpoint mapping in the BDT is dependent on three
variables:
• Endpoint number (0 to 15)
• Endpoint direction (Rx or Tx)
• Ping-pong settings (U1CNFG1<1:0>)
Figure 17-2 illustrates how these variables are used to
map endpoints in the BDT.
In Host mode, only Endpoint 0 buffer descriptors are
used. All transfers utilize the Endpoint 0 buffer descriptor
and Endpoint Control register (U1EP0). For received
packets, the attached device’s source endpoint is
indicated by the value of ENDPT3:ENDPT0 in the USB
status register (U1STAT<7:4>). For transmitted packet,
the attached device’s destination endpoint is indicated
by the value written to the Token register (U1TOK).
FIGURE 17-2:
BDT MAPPING FOR ENDPOINT BUFFERING MODES
PPB1:PPB0 = 00
No Ping-Pong
Buffers
PPB1:PPB0 = 01
Ping-Pong Buffer
on EP0 OUT
PPB1:PPB0 = 10
Ping-Pong Buffers
on all EPs
Total BDT Space:
128 bytes
Total BDT Space:
132 bytes
Total BDT Space:
256 bytes
EP0 Rx
Descriptor
EP0 Tx
Descriptor
EP1 Rx
Descriptor
EP1 Tx
Descriptor
EP15 Tx
Descriptor
EP0 Rx Even
Descriptor
EP0 Rx Odd
Descriptor
EP0 Tx
Descriptor
EP1 Rx
Descriptor
EP1 Tx
Descriptor
EP15 Tx
Descriptor
EP0 Rx Even
Descriptor
EP0 Rx Odd
Descriptor
EP0 Tx Even
Descriptor
EP0 Tx Odd
Descriptor
EP1 Rx Even
Descriptor
EP1 Rx Odd
Descriptor
EP1 Tx Even
Descriptor
EP1 Tx Odd
Descriptor
PPB1:PPB0 = 11
Ping-Pong Buffers
on all other EPs
except EP0
Total BDT Space:
248 bytes
EP0 Rx
Descriptor
EP0 Tx
Descriptor
EP1 Rx Even
Descriptor
EP1 Rx Odd
Descriptor
EP1 Tx Even
Descriptor
EP1 Tx Odd
Descriptor
Note:
Memory area not shown to scale.
© 2008 Microchip Technology Inc.
EP15 Tx Odd
Descriptor
Preliminary
EP15 Tx Odd
Descriptor
DS39897B-page 197