English
Language : 

PIC24FJ256GB110-I Datasheet, PDF (205/328 Pages) Microchip Technology – 64/80/100-Pin, 16-Bit Flash Microcontrollers with USB On-The-Go (OTG)
PIC24FJ256GB110 FAMILY
6. Check the state of the JSTATE and SE0 bits in
U1CON. If the JSTATE bit (U1CON<7>) is ‘0’,
the connecting device is low speed. If the con-
necting device is low speed, set the low
LSPDEN and LSPD bits (U1ADDR<7> and
U1EP0<7>) to enable low-speed operation.
7. Reset the USB device by setting the RESET bit
(U1CON<4>) for at least 50 ms, sending Reset
signaling on the bus. After 50 ms, terminate the
Reset by clearing RESET.
8. To keep the connected device from going into
suspend, enable SOF packet generation to keep
by setting the SOFEN bit.
9. Wait 10 ms for the device to recover from Reset.
10. Perform enumeration as described by Chapter 9
of the USB 2.0 specification.
17.5.2
COMPLETE A CONTROL
TRANSACTION TO A CONNECTED
DEVICE
1. Follow the procedure described in
Section 17.5.1 “Enable Host Mode and Dis-
cover a Connected Device” to discover a
device.
2. Set up the Endpoint Control register for
bidirectional control transfers by writing 0Dh to
U1EP0 (this sets the EPCONDIS, EPTXEN, and
EPHSHK bits).
3. Place a copy of the device framework setup
command in a memory buffer. See Chapter 9 of
the USB 2.0 specification for information on the
device framework command set.
4. Initialize the buffer descriptor (BD) for the
current (EVEN or ODD) Tx EP0, to transfer the
eight bytes of command data for a device
framework command (i.e., a GET DEVICE
DESCRIPTOR):
a) Set the BD data buffer address (BD0ADR)
to the starting address of the 8-byte
memory buffer containing the command.
b) Write 8008h to BD0STAT (this sets the
UOWN bit, and sets a byte count of 8).
5. Set the USB device address of the target device
in the address register (U1ADDR<6:0>). After a
USB bus Reset, the device USB address will be
zero. After enumeration, it will be set to another
value between 1 and 127.
6. Write D0h to U1TOK; this is a SETUP token to
Endpoint 0, the target device’s default control
pipe. This initiates a SETUP token on the bus, fol-
lowed by a data packet. The device handshake is
returned in the PID field of BD0STAT after the
packets are complete. When the USB module
updates BD0STAT, a transfer done interrupt is
asserted (the TRNIF flag is set). This completes
the setup phase of the setup transaction as
referenced in chapter 9 of the USB specification.
7. To initiate the data phase of the setup transac-
tion (i.e., get the data for the GET DEVICE
descriptor command), set up a buffer in memory
to store the received data.
8. Initialize the current (EVEN or ODD) Rx or Tx
(Rx for IN, Tx for OUT) EP0 BD to transfer the
data.
a) Write C040h to BD0STAT. This sets the
UOWN, configures Data Toggle (DTS) to
DATA1, and sets the byte count to the
length of the data buffer (64 or 40h, in this
case).
b) Set BD0ADR to the starting address of the
data buffer.
9. Write the token register with the appropriate IN
or OUT token to Endpoint 0, the target device’s
default control pipe (e.g., write 90h to U1TOK for
an IN token for a GET DEVICE DESCRIPTOR
command). This initiates an IN token on the bus
followed by a data packet from the device to the
host. When the data packet completes, the
BD0STAT is written and a transfer done interrupt
is asserted (the TRNIF flag is set). For control
transfers with a single packet data phase, this
completes the data phase of the setup transac-
tion as referenced in chapter 9 of the USB
specification. If more data needs to be
transferred, return to step 8.
10. To initiate the status phase of the setup transac-
tion, set up a buffer in memory to receive or send
the zero length status phase data packet.
11. Initialize the current (even or odd) Tx EP0 BD to
transfer the status data.:
a) Set the BDT buffer address field to the start
address of the data buffer
b) Write 8000h to BD0STAT (set UOWN bit,
configure DTS to DATA0, and set byte
count to 0).
12. Write the Token register with the appropriate IN
or OUT token to Endpoint 0, the target device’s
default control pipe (e.g., write 01h to U1TOK for
an OUT token for a GET DEVICE DESCRIP-
TOR command). This initiates an OUT token on
the bus followed by a zero length data packet
from the host to the device. When the data
packet completes, the BD is updated with the
handshake from the device, and a transfer done
interrupt is asserted (the TRNIF flag is set). This
completes the status phase of the setup trans-
action as described in chapter 9 of the USB
specification.
Note: Only one control transaction can be
performed per frame.
© 2008 Microchip Technology Inc.
Preliminary
DS39897B-page 203