The Inter-Integrated Circuit bus (I2C) is a versatile bus standard that is flexible, convenient, and high performing. Designed to operate up to 100 kbit/s when first introduced, the specification has introduced successive new modes that now give designers a choice of standard mode (SM) (100 kbit/s), fast mode (FM) at 400 kbit/s, fast mode plus (FM+) at 1 Mbit/s, and high speed 3.4 Mbit/s operation.
The I2C bus comprises only two connections – data (SDA) and clock (SCL). This is an attractive feature that saves IC pins and PCB space compared to other standards, particularly parallel buses. Its flexibility comes from the fact that only two nets are required to successfully connect many controller and peripheral (target) devices.
This is accomplished through the open-drain topology of the SDA and SCL lines. This allows the bus to be pulled down, usually to ground, or released to be pulled up to the power rail by a pull-up resistor. Thus, a single data line can be used for bidirectional data flow, avoiding communication conflicts, by preventing any device from forcing a high on the line. If a controller transmits a high while another device is pulling the same line low, it can detect that the bus is already in use and halt communication.
An 8-bit space is provided for addressing connected devices. One bit is used to describe whether the transmission is intended to read from or write to the addressed device. The resulting 7-bit address space theoretically allows up to 128, however in reality 16 bytes are reserved, leaving a maximum of 112 controller or target devices to connect to the same system bus. Bus capacitance is typically limited at 400 pF for I2C modes.
Although many peripheral (target) devices live in this space, there is one important device that helps manage complex systems, and that is the GPIO expander. This device enables designers to add flexibility to their system by leveraging the added I/O channels to drive many different functions, some listed in the figure below (Figure 1). Such functions can include LED light indicators, switch control, digital read capability, and retrieving device feedback signals such as power good or alarms.
The modularity produced by the inclusion of the device also enable minimal changes across designs. The only important aspect is to ensure the correct connection of the I2C nets, SCL and SDA. As layout around MCUs or controllers get denser adding to layout complexity, remote GPIO devices reduce these layout challenges by reducing I/O net count away from the controller device and closer to the target devices. Increasing I/O channel count also allows the user to choose a better and cost competitive embedded controller with lower I/O channel count.
Nexperia is introducing the latest in GPIO expanders: the NCA95XX family that comprises three ICs, each of which provides 16 GPIO pins arranged as two 8-bit ports. Additional NCA95XX devices can be connected to the I2C bus, and thus to the main controller, to provide further GPIO expansion if required (Figure 1).
Nexperia’s NCA9555 expander integrates a 100kΩ pull-up on each IO port, which saves connecting external resistors hence reducing both circuit footprint and the bill of materials. On the other hand, each pull-up dissipates power continuously, even when the channel is unused. In practice, this may challenge the system power budget and lead to more frequent battery exchange or recharging.
An alternative is the NCA9535, which has no integrated pull-ups. Although this saves unnecessary power dissipation, external pull-ups must be connected to ensure default state during power up. The NCA9539 is also available, with no integrated pull-ups and an active-low reset pin.
To give designers the best of both worlds, Nexperia has added the NCA9595. This device integrates switchable pull-ups that are individually addressed through two additional I2C registers. Thus, pull-ups are enabled by default at power up and can be disabled when needed while avoiding power dissipation in unused channels. The NCA95XX Evaluation Board (EVB) accelerates development and comes with a software GUI that eases interaction by automatically connecting to the EVB and displaying the device registers and port status.
With a choice of configurations and convenient evaluation board, this expander family offers flexibility and ease of use and provides a fast and cost-effective solution for adding more GPIOs to a system.