English
Language : 

PIC24FJ256DA210 Datasheet, PDF (244/408 Pages) Microchip Technology – 64/100-Pin, 16-Bit Flash Microcontrollers with Graphics Controller and USB On-The-Go (OTG)
PIC24FJ256DA210 FAMILY
18.2 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.
Note:
Since BDnADR is a 16-bit register, only
the first 64 Kbytes of RAM can be
accessed by the USB module.
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 18-8 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 Descrip-
tor and Endpoint Control register (U1EP0). For received
packets, the attached device’s source endpoint is
indicated by the value of ENDPT<3:0> 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 18-8:
BDT MAPPING FOR ENDPOINT BUFFERING MODES
PPB<1:0> = 00
No Ping-Pong
Buffers
PPB<1:0> = 01
Ping-Pong Buffer
on EP0 OUT
PPB<1:0> = 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
PPB<1:0> = 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 is not shown to scale.
DS39969B-page 244
EP15 TX Odd
Descriptor
EP15 TX Odd
Descriptor
 2010 Microchip Technology Inc.