PIC16C745/765
10.6
Buffer Descriptor Table (BDT)
To efficiently manage USB endpoint communications
the USB implements a Buffer Descriptor Table (BDT)
in register space. Every endpoint requires a 4 byte
Buffer Descriptor (BD) entry. Because the buffers are
shared between the MCU and the USB, a simple
semaphore mechanism is used to distinguish which is
allowed to update the BD and buffers in system mem-
ory. The UOWN bit is cleared when the BD entry is
“owned” by the MCU. When the UOWN bit is set to 1,
the BD entry and the buffer in system memory is
owned by the USB. The MCU should not modify the
BD or its corresponding data buffer.
The Buffer Descriptors provide endpoint buffer control
information for the USB and MCU. The Buffer Descrip-
tors have different meaning based on the value of the
UOWN bit.
The USB Controller uses the data stored in the BDs
when UOWN = 1 to determine:
•
•
•
•
Data0 or Data1 PID
Data toggle synchronization enable
Number of bytes to be transmitted or received
Starting location of the buffer
The MCU uses the data stored in the BDs when
UOWN = 0 to determine:
•
•
•
Data0 or Data1 PID
The received TOKEN PID
Number of bytes transmitted or received
Each endpoint has a 4 byte Buffer Descriptor and
points to a data buffer in the USB dual port register
space. Control of the BD and buffer would typically be
handled in the following fashion:
•
The MCU verifies UOWN = 0, sets the BDndAL to
point to the start of a buffer, if necessary fills the
buffer, then sets the BDndST byte to the desired
value with UOWN = 1.
•
When the host commands an in or out transac-
tion, the Serial Interface Engine (SIE) performs
the following:
- Get the buffer address
- Read or write the buffer
- Update the USTAT register
- Update the buffer descriptors with the packet
ID (PID) value
- Set the data 0/1 bit
- Update the byte count
- Clear the UOWN bit
•
The MCU is interrupted and reads the USTAT,
translates that value to a BD, where the UOWN,
PID, Data 0/1, and byte count values are checked.
DS41124A-page 68
Advanced Information
1999 Microchip Technology Inc.