105
AT85C51SND3B
7632D–MP3–01/07
Figure 61. Detach a device in Full-speed:
Remote Wake-Up
The “Remote Wake-up” (or “upstream resume”) request is the only operation allowed to
be sent by the device on its own initiative. Anyway, to do that, the device should first
have received a DEVICE_REMOTE_WAKEUP request from the host.
First, the USB controller must have detected the “suspend” state of the line: the
remote wake-up can only be sent after a SUSPI interrupt has been triggered.
The firmware has then the ability to set RMWKUP to send the “upstream resume”
stream. This will automatically be done by the controller after 5ms of inactivity on the
USB line.
When the controller starts to send the “upstream resume”, the UPRSMI interrupt is
triggered (if enabled). If SUSPI was set, SUSPI is cleared by hardware.
RMWKUP is cleared by hardware at the end of the “upstream resume”.
If the controller detects a good “End Of Resume” signal from the host, an EORSMI
interrupt is triggered (if enabled).
STALL Request
For each endpoint, the STALL management is performed using 2 bits:
–
STALLRQ (enable stall request)
–
STALLRQC (disable stall request)
–
STALLI (stall sent interrupt)
To send a STALL handshake at the next request, the STALLRQ request bit has to be
set. All following requests will be handshak’ed with a STALL until the STALLRQC bit is
set.
Setting STALLRQC automatically clears the STALLRQ bit. The STALLRQC bit is also
immediately cleared by hardware after being set by software. Thus, the firmware will
never read this bit as set.
Each time the STALL handshake is sent, the STALLI flag is set by the USB controller
and the EPINTx interrupt will be triggered (if enabled).
The incoming packets will be discarded (RXOUTI and RWAL will not be set).
The host will then send a command to reset the STALL: the firmware just has to set the
STALLRQC bit and to reset the endpoint.
Special Consideration for
Control Endpoints
A SETUP request is always ACK’ed.
If a STALL request is set for a Control Endpoint and if a SETUP request occurs, the
SETUP request has to be ACK’ed and the STALLRQ request and STALLI sent flags are
automatically reset (RXSETUPI set, TXINI cleared, STALLI cleared, TXINI cleared...).
This management simplifies the enumeration process management. If a command is
not supported or contains an error, the firmware set the STALL request flag and can
return to the main task, waiting for the next SETUP request.
EN=1
D +
UVREF
D -
Detach, then
Attach
EN=1
D +
UVREF
D -