EZ-USB FX3 Technical Reference Manual, Document Number: 001-76074 Rev. *F 119
Universal Serial Bus (USB)
role change, the initial host suspends the USB bus, watches for the B-device to disconnect, and then connects itself as a
peripheral. At this point, normal USB communication occurs, only now the peripheral acts as the host, and vice versa. When
the B-device is finished serving as the host, it returns control to the A-device in the same manner.
At the beginning, the B-device is the peripheral and thus has its D+ pull-up resistor enabled. The A-device stops bus traffic,
suspending the bus. The B-device USB device logic recognizes the suspend as the first step of transferring control of the bus,
disables its D+ pull-up resistor, and enables its USB host logic. After the D+ line falls (is pulled down by the D+ pull-down
resistor) to 0, the A-device recognizes the disconnect request and enables its D+ pull-up to connect as a peripheral. The B-
device host logic detects the connect request and generates an interrupt to the processor, which then generates traffic to the
A-device through the USB host logic.
After the B-device is finished serving as the host, it repeats the transfer process that the A-device performed, suspending the
USB bus, waiting for the disconnect interrupt, disabling its USB host logic and enabling its USB device logic, and connecting
to the USB bus.
The sequence of events and operations for a device (A or B) to give control of the USB bus to the other device follows:
1. Suspend the USB bus.
2. Wait for the disconnect interrupt.
3. Disable the USB host logic, and enable the USB device logic.
4. Connect to the USB bus through the USB device logic.
The A-device must first send a SetFeature(b_hnp_enable) command to the B-device to enable it to become the host.
The sequence for a device (either A or B) to become the USB host follows:
1. Wait for the suspend interrupt from the USB device logic.
2. Disconnect from the USB bus by disabling the D+ pull-up.
3. Disable the USB device logic and enable the USB host logic.
4. Wait for a connect interrupt from the USB host logic.
5. Generate a USB bus reset and begin enumerating the peripheral.