Products with micro-AB receptacles can act as either host or device. The host or device role is determined by the cable orientation and the ID pin is floating for device and grounded for host role. While the host/device role can be changed dynamically using Host Negotiation Protocol (HNP), the HNP is not widely used. Most products that claim to be on the go (OTG) capable are actually dual role capable. Dual role devices (DRDs) have a static host or device role depending on cable orientation and do not support OTG with dynamic role switching. This distinction is useful to keep in mind when designing a Type-C Dual Role Port product.
As stated, Type-C cables have no orientation and the receptacle does not use an ID pin. Therefore, the host/device role is determined by pull resistors Rp and Rd. A connection between two Type-C devices requires that one device is configured as a host and the other remains as a device. For static Dual Role Port, host or device role can be decided before the cable is connected—for example, the user can configure the host mode before connecting a thumb drive, a keyboard or similar device.
To implement a Dual Role Port with Type-C functionality, designers need to consider the following in addition to the implementation points for high-speed devices and hosts.
- Enable either Pullup resistors (Rp) or Pulldown resistors (Rd) depending on host or device role
- Configure host or device role.
- Role can be based on user input, context sensitive application or other method.
- Ignore PHY ID pin signal and configure the controller for host or device role.
- Alternatively, connect the PHY ID pin to GND for host and leave “floating” for the device. This might be needed depending on DRP controller configuration and capability. With proper use of standard GPIO, no external circuitry is required.
- In host mode, detect voltage on CC1 and CC2 to determine device attach.
- In host mode, supply Vbus to receptacle via load switch.
Type-C protocol and state machines exist for determining initial host/device role if the product does not have a static configuration. Dynamic role reversal is possible using power delivery communication messages. Dynamic role switching is more user-friendly but adds complexity; however, support chips exist that reduce implementation complexity.