Datasheet
PIC24FJ128GC010 FAMILY
DS30009312B-page 278 2012-2013 Microchip Technology Inc.
19.5.3 SEND A FULL-SPEED BULK DATA
TRANSFER TO A TARGET DEVICE
1. Follow the procedure described in Section 19.5.1
“Enable Host Mode and Discover a Connected
Device” and Section 19.5.2 “Complete a Con-
trol Transaction to a Connected Device” to
discover and configure a device.
2. To enable transmit and receive transfers with
handshaking enabled, write 1Dh to U1EP0. If
the target device is a low-speed device, also set
the LSPD (U1EP0<7>) bit. If you want the hard-
ware to automatically retry indefinitely if the
target device asserts a NAK on the transfer,
clear the Retry Disable bit, RETRYDIS
(U1EP0<6>).
3. Set up the BD for the current (even or odd) TX
EP0 to transfer up to 64 bytes.
4. Set the USB device address of the target device
in the address register (U1ADDR<6:0>).
5. Write an OUT token to the desired endpoint to
U1TOK. This triggers the module’s transmit
state machines to begin transmitting the token
and the data.
6. Wait for the Token Complete Interrupt Flag,
TRNIF. This indicates that the BD has been
released back to the microprocessor and the
transfer has completed. If the Retry Disable bit
(RETRYDIS) is set, the handshake (ACK, NAK,
STALL or ERROR (0Fh)) is returned in the BD
PID field. If a STALL interrupt occurs, the
pending packet must be dequeued and the error
condition in the target device cleared. If a detach
interrupt occurs (SE0 for more than 2.5 µs), then
the target has detached (U1IR<0> is set).
7. Once the Token Complete Interrupt Flag occurs
(TRNIF is set), the BD can be examined and the
next data packet queued by returning to Step 2.
19.6 OTG Operation
19.6.1 SESSION REQUEST PROTOCOL
(SRP)
An OTG A-device may decide to power down the V
BUS
supply when it is not using the USB link through the
Session Request Protocol (SRP). Software may do this
by configuring a GPIO pin to disable an external power
transistor, or voltage regulator enable signal, which con-
trols the V
BUS
supply. When the V
BUS
supply is powered
down, the A-device is said to have ended a USB session.
An OTG A-device or embedded host may repower the
V
BUS supply at any time (initiate a new session). An
OTG B-device may also request that the OTG A-device
repower the VBUS supply (initiate a new session). This
is accomplished via Session Request Protocol (SRP).
Prior to requesting a new session, the B-device must first
check that the previous session has definitely ended. To
do this, the B-device must check for two conditions:
1. V
BUS supply is below the session valid voltage.
2. Both D+ and D- have been low for at least 2 ms.
The B-device will be notified of Condition 1 by the
SESENDIF (U1OTGIR<2>) interrupt. Software will
have to manually check for Condition 2.
The B-device may aid in achieving Condition 1 by dis-
charging the V
BUS supply through a resistor. Software
may do this by setting VBUSDIS (U1OTGCON<0>).
After these initial conditions are met, the B-device may
begin requesting the new session. The B-device begins
by pulsing the D+ data line. Software should do this by
setting DPPULUP (U1OTGCON<7>). The data line
should be held high for 5 to 10 ms.
The B-device then proceeds by pulsing the V
BUS
supply. Software should do this by setting PUVBUS
(U1CNFG2<4>). When an A-device detects SRP sig-
naling (either via the ATTACHIF (U1IR<6>) interrupt or
via the SESVDIF (U1OTGIR<3>) interrupt), the
A-device must restore the VBUS supply by properly
configuring the general purpose I/O port pin controlling
the external power source.
The B-device should not monitor the state of the V
BUS
supply while performing VBUS supply pulsing. When the
B-device does detect that the V
BUS supply has been
restored (via the SESVDIF (U1OTGIR<3>) interrupt),
the B-device must reconnect to the USB link by pulling
up D+ or D- (via the DPPULUP or DMPULUP bit).
The A-device must complete the SRP by driving USB
Reset signaling.
Note: USB speed, transceiver and pull-ups
should only be configured during the
module setup phase. It is not recom-
mended to change these settings while
the module is enabled.
Note: When the A-device powers down the
V
BUS supply, the B-device must discon-
nect its pull-up resistor from power. If the
device is self-powered, it can do this by
clearing DPPULUP (U1OTGCON<7>) and
DMPULUP (U1OTGCON<6>).