AN495: CP2112 Interface Specification

AN495
CP211 2 I NTERFACE S PECIFICATION
1. Introduction
The Silicon Laboratories CP2112 is a USB device that adheres to the USB-defined Human Interface Device class
specification. HIDs communicate with a USB host through the use of reports. This document is a specification for
the reports supported by the CP2112 and describes the configurable parameters.
Silicon Laboratories provides dynamic libraries that adhere to this specification for the following operating systems:

Windows®
Mac®
This document is intended for the following:


Users who are using an operating system that is not supported by the dynamic libraries and who need to
implement their own interface.
 Users who want to integrate the device interface into their application.
User Application
(Implementing CP2112
Interface Specification)
HID Driver
(Provided by OS)
USB Root Hub
USB
PC
CP2112 HID USB-to-SMBus Bridge
SMBus Devices
Figure 1. System Architecture Diagram
Rev. 0.2 8/10
Copyright © 2010 by Silicon Laboratories
AN495
AN495
1.1. Additional Documentation

CP2112 data sheet:
http://www.silabs.com/products/interface/hidusbtosmbus
 Dynamic libraries that adhere to this CP2112 Interface specification are available for the following operating
systems:
Windows
7/Vista/XP
Mac OS X

AN496: CP2112 HID USB-to-SMBus API Specification documents the Windows and Mac DLL. The document
and libraries are available at:
http://www.silabs.com/products/interface/hidusbtosmbus
 HID Device Class Definition:
http://www.usb.org/developers/hidpage/
1.2. Default Values for Parameters Stored in PROM and Pin Settings
Table 1 lists the default values for the one-time configurable parameters stored in the PROM of the CP2112.
Table 2 lists the default values for the GPIO, Suspend, and SMBus pins. The GPIO pins are configured in RAM and
should be reconfigured each time the device is reset. The suspend and SMBus pins are non-configurable.
Table 1. Default PROM Values
Parameter
Default Value
VID
0x10C4
PID
0xEA90
Power
0x32 (100 mA)
Power Mode
Bus Powered
Release Number
0x0100 (Release Version 01.00)
Manufacturing String
Silicon Laboratories
Product String
CP2112 HID USB-to-SMBus Bridge
Serial String
0001
Lock Byte
0xFF*
*Note: The lock bytes indicate which parameters have already been programmed.
See "7.1. Get/Set Lock Byte" on page 17 for more details.
2
Rev. 0.2
AN495
Table 2. Default Pin Settings
Parameter
Default Config Value
GPIO0_TXT
Open-Drain
GPIO1_RXT
Open-Drain
GPIO2
Open-Drain
GPIO3
Open-Drain
GPIO4
Open-Drain
GPIO5
Open-Drain
GPIO6
Open-Drain
GPIO7_CLK
Open-Drain
SDA
Open-Drain
SCL
Open-Drain
Suspend
Push-Pull Output
Suspend
Push-Pull Output
Rev. 0.2
3
AN495
1.3. Default SMBus Configuration
Table 3 lists the default settings for the SMBus. These settings are used at device power-up or reset.
Table 3. SMBus Settings
4
Parameter
Default Value
Clock Speed
0x0186A0 (100 kHz)
Device Address
0x02
Auto Send Read
0x00 (Disabled)
Write Timeout
0x00 (Disabled)
Read Timeout
0x00 (Disabled)
SCL Low Timeout
0x00 (Disabled)
Retry Time
0x00 (No Limit)
Rev. 0.2
AN495
2. Report Overview
Communication with the CP2112 is performed using HID Reports as defined in the HID Device Class Definition.
The class definition is available for download from http://www.usb.org/developers/hidpage/.
2.1. Reports Response
The CP2112 responds to reports in different ways, depending on whether the report configures a parameter on the
device using a Set Report or requests data from the device using a Get Report. A list of all supported reports is
available in "3. Report ID List" on page 6.
2.1.1. Set Reports
In response to a Set Report, the CP2112 will not return any report or acknowledgement of a report. To verify that a
report has completed successfully, use the corresponding Get Report to obtain the data. The delay imposed by the
HID protocol between reports guarantees that there will be no race condition between the execution of a Set
Report and Get Report verification. A Set Report will always complete before the device receives the Get Report.
2.1.2. Get Reports
If a report requests data from the device and the report is valid, the device will return a report with the requested
data. If the report is invalid, the device will stall.
2.2. Data Format
In all of the reports, the first byte of the data portion of the payload is the Report ID. In the report definitions in this
document, the Report ID is stored in index 0 of the payload and is not explicitly listed in the table. All data content
in the report starts at index 1. The reports have a maximum length of 64 bytes, indexed from 0 to 63. For any multibyte values sent in the reports, the values are sent most-significant byte first.
Rev. 0.2
5
AN495
3. Report ID List
Table 4. Report IDs
Report ID
Report Name
Page
Device Configuration (Feature Request)
0x01
Reset Device
7
0x02
Get/Set GPIO Configuration
8
0x03
Get GPIO
9
0x04
Set GPIO
9
0x05
Get Version Information
9
0x06
Get/Set SMBus Configuration
10
Data Transfer (Interrupt Transfer)
0x10
Data Read Request
11
0x11
Data Write Read Request
11
0x12
Data Read Force Send
12
0x13
Data Read Response
12
0x14
Data Write
13
0x15
Transfer Status Request
13
0x16
Transfer Status Response
14
0x17
Cancel Transfer
15
USB Customization (Feature Requests)
6
0x20
Get/Set Lock Byte
17
0x21
Get/Set USB Configuration
18
0x22
Get/Set Manufacturing String
18
0x23
Get/Set Product String
19
0x24
Get/Set Serial String
19
Rev. 0.2
AN495
4. Device Configuration Reports
4.1. Reset Device
Report ID: 0x01
Direction: Feature Request Out
Name
Offset
Size
Value
Reset Type
1
1
0x01
Description
Reset with re-enumeration
Reset Device is used to restart the device from the USB host. The device re-enumerates on the USB bus, and all
SMBus configuration settings are reset to their default values. If any value other than 0x01 is sent with the Reset
Type field of the command, the command will be ignored.
For certain operating systems, such as Windows, initiating a device reset and re-enumerating will make the
device's handle stale. The user application is responsible for handling this “surprise disconnect” event. See
“AN496: CP2112 HID USB-to-SMBus API Specification” for more information regarding surprise disconnects.
Rev. 0.2
7
AN495
4.2. Get/Set GPIO Configuration
Report ID: 0x02
Direction: Feature Request In/Out
Name
Offset
Size
Value
Description
Direction
1
1
0x00
0 = input
1 = output
Push-Pull
2
1
0x00
0 = open-drain
1 = push-pull
Special
3
1
0x00
Enables special functions of GPIO pins.
See Table 5.
Clock Divider
4
1
0x00
0 = 48 MHz Clock Output
All other values will output a clock signal
determined by Equation 1 below.
Get/Set GPIO Configuration is used to configure the eight GPIO pins as input/output and open-drain/push-pull
through the Direction and Push-Pull fields. GPIO0 corresponds to bit zero (the least significant bit), and GPIO7
corresponds to bit seven (the most significant bit). For pins that are configured as an input, push-pull mode is
ignored.
Special is used to enable special functionality on GPIO0_TXT, GPIO1_RXT, and GPIO7_CLK. By setting a bit in
the Special byte of this report, the functionality is enabled. Table 5 has more information regarding the special
functionality.
Table 5. Special Function Summary
Bit in Special Byte of Get/Set
GPIO Configuration
GPIO Pin
Value
Description
Bit 0
GPIO7_CLK
0
1
GPIO Pin
Clock Output - Push-Pull Output
Bit 1
GPIO0_TXT
0
1
GPIO Pin
TX Toggle - Push-Pull Output
Bit 2
GPIO1_RXT
0
1
GPIO Pin
RX Toggle - Push-Pull Output
Bit 3 - Bit 7
—
—
Not Used
Clock Divider specifies the clock output frequency on GPIO7_CLK when the clock output is enabled. If Clock
Divider is 0, a 48 MHz clock will be output on GPIO7_CLK. Otherwise, Equation 1 can be used to determine the
clock output.
48 MHz
GPIO7_CLK Clock Frequency = ----------------------------------------------2  ClockDivider
Equation 1. GPIO Clock Frequency Output
8
Rev. 0.2
AN495
4.3. Get GPIO Values
Report ID: 0x03
Direction: Feature Request In
Name
Offset
Size
Value
Latch Value
1
2
*
Description
Current latch values
If a pin is configured as a GPIO input pin, the corresponding Latch Value bit represents the input value. If a pin is
configured as a GPIO output pin, the corresponding Latch Value bit represents the logic level driven on the pin.
GPIO0_TXT corresponds to bit zero (the least significant bit), and GPIO7_CLK corresponds to bit seven (the most
significant bit).
4.4. Set GPIO Values
Report ID: 0x04
Direction: Feature Request Out
Name
Offset
Size
Value
Description
Latch Value
1
1
*
Latch value
Latch Mask
2
1
*
Pin to set to new latch value
Set GPIO Values sets the values for GPIO pins.
The desired value for the pin is configured in Latch Value. To drive a “1” on an output pin, the corresponding bit
should be set to “1”. To drive a “0” on an output pin, the corresponding bit should be set to “0”.
The Report sets new values only for output pins that have a “1” in the corresponding bit position in Latch Mask. If
the corresponding bit in Latch Mask is set to “0”, a new pin value will not be set, even if the pin is configured as an
output pin.
The Report does not affect any pins that are not configured as outputs.
4.5. Get Version Information
Report ID: 0x05
Direction: Feature Request In
Name
Offset
Size
Value
Part Number
1
1
0x0C
Device Version
2
1
Varies
Description
Device part number
Part Number indicates the device part number. The CP2112 returns 0x0C.
Device Version is the version of the device. This value is not programmable over the HID interface.
Rev. 0.2
9
AN495
4.6. Get/Set SMBus Configuration
Report ID: 0x06
Direction: Feature Request In/Out
The values in bold are the default values.
Name
Offset
Size
Value
Description
Clock Speed
1
4
0x186A0
*
Device Address
5
1
0x02
Bits 7–1 make up device address (least
significant bit is masked)
Auto Send Read
6
1
0x00
0x01
Disabled
Enabled
Write Timeout
7
2
0x0000
*
No Timeout
0–1000 ms timeout value
Read Timeout
9
2
0x0000
*
No Timeout
0–1000 ms timeout value
SCL Low Timeout
11
1
0x00
0x01
Retry Time
12
2
0x0000
*
100 KHz
SMBus Clock Speed in Hertz
Disabled
Enabled
No Limit
0–1000 retries
Values from the Set Report are not stored in PROM. These parameters must be initialized after every power-on or
device reset.
Clock Speed is the frequency of the SMBus clock in hertz (Hz). It is stored as a big-endian 4-byte unsigned
number. For example, to run the SMBus at 400 kHz, the value, 0x61A80, would need to be written to four clock
speed bytes in this report. If a value of zero is written, this parameter is ignored.
Device Address is the 7-bit slave address of the CP2112. The CP2112 will ACK this address, but the CP2112 will
not respond to any read or write requests. If the least significant bit is set in this byte (read/write bit), this parameter
is ignored.
Write Timeout and Read Timeout are the time limits in milliseconds before the CP2112 automatically cancels a
transfer that has been initiated. If a transfer is canceled by a write or read timeout, the status byte of the Transfer
Status Response command is set appropriately. If this value is set to 0x0000, the device continues to attempt the
transfer until the transfer completes or until the Cancel Transfer command is sent. Any value greater than 1000 is
ignored.
SCL Low Timeout is a timeout that resets the SMBus if the SCL line is held low for more than 25 ms. If enabled and
an SCL Low Timeout occurs, the status byte of the Transfer Status Response command will be set appropriately.
Any value other than 0x00 and 0x01 is ignored.
Retry Time is the number of attempts that the CP2112 attempts to complete a transfer before terminating the
transfer. Any value greater than 1000 is ignored.
10
Rev. 0.2
AN495
5. Data Transfer Reports
5.1. Data Read Request
Report ID: 0x10
Direction: Interrupt Out
Name
Offset
Size
Value
Description
Slave Address
1
1
*
Must be between 0xF7 - 0x02. Least significant bit
is read/write bit and must be zero.
Length
2
2
*
Number of bytes (1-512 bytes) to read back
Slave Address is the 7-bit address of the slave device from which data is being read. The address must be
between 0xF7 and 0x02 (the least significant bit is the read/write bit and must be zero). All other values are
ignored.
Length is the number of bytes being requested from the slave device. The CP2112 can request between 1 and 512
bytes from a slave device. Any value outside that range is ignored.
5.2. Data Write Read Request
Report ID: 0x11
Direction: Interrupt Out
Name
Offset
Size
Value
Description
Slave Address
1
1
*
Must be between 0xF7 and 0x02.
Least significant bit is the read/write bit and must
be zero.
Length
2
2
*
Number of bytes (1–512 bytes) to read back
Target Address
Length
4
1
*
Number of bytes in target address
(from 0x01 to 0x10)
Target Address
5
16
*
Address of device to be read. The number of bytes
in this field must match the number of bytes specified in the target length address above.
Slave Address is the 7-bit address of the slave device from which data is being read. The address must be
between 0xF7 and 0x02 (the least significant bit is the read/write bit and must be zero). All other values are
ignored.
Length is the number of bytes that are being requested from the slave device. The CP2112 can request between 1
and 512 bytes from a slave device. Any value outside that range is ignored.
Target Address Length is the number of bytes in the target address of the slave device from which data is being
read. The target address length must be between 1 and 16. Any value outside that range is ignored.
Target Address is the address of the memory location being read on the slave device. The number of bytes in the
target address must match the number of bytes in target address length. Target Address Length specifies the
number of valid address bytes in Target Address starting with the byte at Offset position 5.
This type of report is used when a repeated start condition is used, which is common when accessing an EEPROM
or something similar.
Rev. 0.2
11
AN495
5.3. Data Read Force Send
Report ID: 0x12
Direction: Interrupt Out
Name
Offset
Size
Value
Length
1
2
*
Description
Number of valid data bytes
This forces the device to send a Data Read Response report when the next Interrupt IN token arrives. This is
essentially polled mode reading. The PC should poll using Transfer Status Request first to determine whether data
is ready. The number of bytes requested can be 1 to 512. If the number of bytes requested is greater than the
number of valid bytes in the CP2112’s received bytes buffer, only the valid bytes will be returned.
This command should only be used when Auto Send Read is set to 0x00. This command is ignored when Auto
Send Read is set to 0x01. If a transfer is not in progress or if no data is in the buffer, this command performs no
action. This command can be used while a read is in progress to retrieve the data received so far.
5.4. Data Read Response
Report ID: 0x13
Direction: Interrupt In
Name
Offset
Size
Value
Description
Status
1
1
0x00
0x01
0x02
0x03
Idle
Busy
Complete (once read, reverts to 0x00)
Complete with error (once read, reverts
to 0x00)
Length
2
1
*
Number of valid data bytes
Data
3
61
*
Data being returned from the SMBus
slave device
Data for Data Read Request, Data Write Request, and Data Read Force Send will be returned to the host with this
report ID.
Status shows the current status of the SMBus transmission.
Length is the number of valid data bytes being returned to the host.
Data is the actual data being returned to the host. Only the number of bytes specified in the Length field will be
valid.
12
Rev. 0.2
AN495
5.5. Data Write
Report ID: 0x14
Direction: Interrupt Out
Name
Offset
Size
Value
Description
Slave Address
1
1
*
Must be between 0xF7 - 0x02. Least
significant bit is read/write bit and must
be zero.
Length
2
1
*
Number of valid data bytes
Data
3
61
*
Data being returned from the SMBus
slave device
Slave Address is the 7-bit address of the slave device to which data is being sent. The address must be between
0xF7 and 0x02 (the least significant bit is the read/write bit and must be 0). All other values are ignored.
Length is the number of bytes that are being sent to the slave device. The host can transmit 1 to 61 bytes to the
CP2112. Any value outside that range is ignored.
Data is the actual data being sent over the SMBus to the slave device. The number of data bytes being sent in this
field should match the number of bytes specified in the Length field.
5.6. Transfer Status Request
Report ID: 0x15
Direction: Interrupt Out
Name
Offset
Size
Value
Request
1
1
0x01
Description
Request SMBus transfer status
Request is used to request the current SMBus transfer status. If any value other than 0x01 is sent with the transfer
status request, the command will be ignored.
Rev. 0.2
13
AN495
5.7. Transfer Status Response
Report ID: 0x16
Direction: Interrupt In
Name
Offset
Size
Value
Description
Status 0
1
1
0x00
0x01
0x02
0x03
Idle
Busy
Complete (once read, reverts to 0x00)
Complete with error (once read, reverts
to 0x00)
Status 1
2
1
*
Specific conditions based on Status 0
(see below)
Status 2
3
2
*
Number of retries before completing,
being canceled, or timing out
Status 3
5
2
*
Number of received bytes
Transfer Status Response returns information on the SMBus interface.
Status 0 returns the general status of the CP2112 SMBus interface.
If Status 0 is 0x00, the rest of the status bytes are not valid.
Status 1 returns specific information based off of Status 0 and is dependent on the value of Status 0.
Status 2 returns the number of retries before completing, being cancelled, or timing out.
Status 3 returns the bytes successfully read.
Status 0
Status 1
Description
0x01
0x00
0x01
0x02
0x03
Address ACKed
Address NACKed
Data read in progress
Data write in progress
0x02 and 0x03
0x00
0x01
0x02
0x03
0x04
0x05
Timeout address NACKed
Timeout bus not free (SCL Low Timeout)
Arbitration lost
Read incomplete
Write incomplete
Succeeded after Status 2 retries
For example, if this report returned the following data (in hexadecimal):
16 02 05 00 05
This corresponds to:
16: Report ID (Transfer Status Response)
02: Transmission complete without errors
05: Succeeded after the following bytes retry
00: Indicates zero retries
05: Five bytes were received
14
Rev. 0.2
AN495
5.8. Cancel Transfer
Report ID: 0x17
Direction: Interrupt Out
Name
Offset
Size
Value
Description
Cancel
1
1
0x01
Will cancel the current transfer. All other
values are ignored
Cancel is used to cancel the current SMBus transfer. If any value other than 0x01 is sent with the reset command,
the command is ignored.
Rev. 0.2
15
AN495
6. Programmable USB Parameters
The following parameters are programmable on the device. Five different reports are provided to program these
parameters. Each parameter modified with these five reports can only be modified once.
Name
Description
VID
USB Vendor ID
PID
USB Product ID
Power
Power request in mA/2
Power Mode
Bus Powered (0x00)
Self Powered - Regulator Off (0x01)
Self Powered - Regulator On (0x02)
Release Version
Major and Minor release version
Manufacturer String
Product Manufacturer
Product String
Product Description
Serial String
Serialization String
Lock Byte
Indicates programmed values
VID is the USB Vendor ID.
PID is the USB Product ID.
Power is the current requested by the device from the USB host in bus-powered mode. The units for this value are
milliamps / 2. For example, if the device is configured to request 200 mA, the value for Power is 100. The maximum
setting for Power is 500 mA, or a value of 250. Unpowered USB hubs are limited to providing 100 mA per port.
Power Mode indicates whether the device is operating in Bus-powered (0x00), Self-powered (0x01, voltage
regulator disabled) or Self-powered (0x02, voltage regulator enabled) mode. If the device is configured for Selfpowered mode, the value programmed for Power is not used during USB enumeration.
Release Version is a user-programmable value. The most significant byte is the Major revision number. The least
significant byte in the report is the Minor revision number. Both bytes can be programmed to any value from 0 to
255.
Manufacturing String is a 62-byte string in which the first two bytes must be set according to the USB specification
(length, 0x03).
Product String is a 62-byte string in which the first two bytes must be set according to the USB specification
(length, 0x03).
Serial String is a 62-byte character array used to provide a unique serial number/string for the device. The first two
characters must be set according to the USB specification (length, 0x03).
16
Rev. 0.2
AN495
7. PROM Programming Reports
7.1. Get/Set Lock Byte
Report ID: 0x20
Direction: Feature Request In/Out
Name
Offset
Size
Value
Description
Lock Status
1
1
See
Below
Shows which fields have already been programmed.
The device has a 1-byte field that indicates which of the customizable fields have been programmed. The following
table shows the values of the bits:
Bit Position
Customizable Field
Bit 0
VID
Bit 1
PID
Bit 2
Max Power
Bit 3
Power Mode
Bit 4
Release Version
Bit 5
Manufacturer String
Bit 6
Product String
Bit 7
Serial String
If the bit value is set to 1, the corresponding field has not been customized. If the bit value is set to 0, the field has
been customized or locked and can no longer be changed for this device.
Using the Set Lock Byte Report, any bit value set to 0 will lock the corresponding field. Send 0x00 to lock all
parameters and prevent future customization.
Rev. 0.2
17
AN495
7.2. Get/Set USB Configuration
Report ID: 0x21
Direction: Feature Request In/Out
Name
Offset
Size
Value
Description
VID Low Byte
1
1
*
VID Low Byte
VID High Byte
2
1
*
VID High Byte
PID Low Byte
3
1
*
PID Low Byte
PID High Byte
4
1
*
PID High Byte
Power
5
1
*
Power requested in mA/2
Power Mode
6
1
0x00
0x01
0x02
Bus Powered
Self Powered - Regulator Off
Self Powered - Regulator On
Release Major
7
1
*
Release Version Major Value
Release Minor
8
1
*
Release Version Minor Value
Mask
9
1
*
Mask for what fields to program
Get USB Configuration returns the values for the various fields and also the Mask value. The Mask value is equal
to the most significant byte value returned in Report Get Lock Byte. If the corresponding Mask bit is set to “0”, the
corresponding field has been programmed, and any Set USB Configuration function operating on that field is
ignored.
Set USB Configuration is used to customize these fields. The corresponding Mask bit should be set to “1” to
program the field. If the field has already been programmed once, an attempt to reprogram it is ignored. If a field is
being programmed with the current value, the programmed bit will still be set.
See "7.1. Get/Set Lock Byte" on page 17 for the definition of Mask.
If a parameter is being modified using this report, the corresponding bit in Mask must be set to a 1. For example, if
the VID needed to be programmed, bit 0 of Mask would need to be set to a 1, and the values in VID Low Byte and
VID High Byte would be written to the CP2112.
7.3. Get/Set Manufacturing String
Report ID: 0x22
Direction: Feature Request In/Out
Name
Offset
Size
Value
Description
String Length
1
1
*
Length of manufacturer string + 2
USB Required
2
1
0x03
Manufacturing String
3
60
*
Required Value
First 60 bytes of string
The Set Manufacturing String Report can only be used once to set the Manufacturing String. Any subsequent calls
to Set Manufacturing String are ignored.
The maximum value for String Length is 60. The first two bytes are allocated for String Length and the value 0x03,
meaning the actual length of the pstring is 62 bytes. The device will ignore the report if String Length is too long.
18
Rev. 0.2
AN495
7.4. Get/Set Product String
Report ID: 0x23
Direction: Feature Request In/Out
Name
Offset
Size
Value
String Length
1
1
*
USB Required
2
1
0x03
Product String
3
60
*
Description
Length of product string + 2
Required Value
First 60 bytes of string
The Set Product String Report can only be used once to set the Product String. Any subsequent calls to Set
Product String are ignored.
The maximum value for String Length is 60. The first two bytes are allocated for String Length and the value 0x03,
meaning the actual length of the payload part of the string is 62 bytes. The device will ignore the Report if String
Length is too long.
7.5. Get/Set Serial String
Report ID: 0x24
Direction: Feature Request In/Out
Name
Offset
Size
Value
String Length
1
1
*
USB Required
2
1
0x03
Ser String
3
60
*
Description
Length of serial string + 2
60 bytes of string
The Set Serial String Report can only be used once to set the Product String. Any subsequent calls to Set Serial
String are ignored.
The maximum value for String Length is 60. The first two bytes are allocated for String Length and the value 0x03,
meaning the actual length of the payload part of the string is 62 bytes. The device will reject the Report if String
Length is too long.
Rev. 0.2
19
AN495
A PPENDIX — P I N C ONFIGURATION O PTIONS
Some of the pins of the CP2112 are configurable as inputs, open-drain outputs, or push-pull outputs. These options
are configured when the device has enumerated and is operating in a normal mode. When the CP2112 is in USB
suspend, all of the configurable pins are limited to be open-drain or push-pull outputs. The following describes the
differences between open-drain and push-pull, and the difference in behavior in Suspend mode. See the CP2112
data sheet for the electrical specifications of the GPIO pins.

GPIO Input
When a pin is configured as a GPIO input, the pin can read a logic high or logic low value. Internally, the GPIO
pin is connected to the VIO pin through a resistor. If the pin is not connected externally, it will return a logic high
or 1. Any voltages connected to the pin should conform to data sheet specifications.
 Open-Drain Output
When a pin is configured as a GPIO open-drain output, the pin can output a logic high or logic low value. The
default value is logic high, and a logic high value is created by internally connecting the GPIO pin to the VIO pin
through a resistor. In this mode, the pin is unable to source any current when driving a logic high. If the Set
GPIO Values Report is used to change the output to a logic low, the pin is internally connected to GND.
 Push-Pull Output
When a pin is configured as a GPIO push-pull output, the pin can output a logic high or logic low value. When
driving a logic high value, the pin is directly connected to the VIO pin internally and can source current for
devices, such as LEDs. When driving a logic low value, the pin is internally connected to GND.
 Suspend Mode
When the device is in Suspend mode, all of the GPIO pins are forced to be open-drain or push-pull outputs. The
GPIO pins retain their state during suspend mode.
20
Rev. 0.2
AN495
DOCUMENT CHANGE LIST
Revision 0.1 to Revision 0.2

Updated "4.2. Get/Set GPIO Configuration" on page
8 with Special Functions.
 Changed names of GPIO0 to GPIO0_TXT, GPIO1 to
GPIO1_RXT, and GPIO7 to GPIO7_CLK.
Rev. 0.2
21
AN495
CONTACT INFORMATION
Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
Tel: 1+(512) 416-8500
Fax: 1+(512) 416-9669
Toll Free: 1+(877) 444-3032
Please visit the Silicon Labs Technical Support web page:
https://www.silabs.com/support/pages/contacttechnicalsupport.aspx
and register to submit a technical support request.
The information in this document is believed to be accurate in all respects at the time of publication but is subject to change without notice.
Silicon Laboratories assumes no responsibility for errors and omissions, and disclaims responsibility for any consequences resulting from
the use of information included herein. Additionally, Silicon Laboratories assumes no responsibility for the functioning of undescribed features
or parameters. Silicon Laboratories reserves the right to make changes without further notice. Silicon Laboratories makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Silicon Laboratories assume any liability
arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. Silicon Laboratories products are not designed, intended, or authorized for use in applications intended to
support or sustain life, or for any other application in which the failure of the Silicon Laboratories product could create a situation where personal injury or death may occur. Should Buyer purchase or use Silicon Laboratories products for any such unintended or unauthorized application, Buyer shall indemnify and hold Silicon Laboratories harmless against all claims and damages.
Silicon Laboratories and Silicon Labs are trademarks of Silicon Laboratories Inc.
Other products or brandnames mentioned herein are trademarks or registered trademarks of their respective holders.
22
Rev. 0.2