The PI4IOE5V6416 allows you to incorporate an additional 16 I / O pins in a wide variety of FPGA and microcontroller-based applications.
I found that a wide variety of designs present a legitimate need for I / O expansion. Some people might be inclined to think that the I / O expansion parts are somewhat outdated or simply unnecessary, but in my opinion that is not the point. case.
When to use an I / O expander
It’s true that engineers today have access to a huge variety of microcontrollers and FPGAs, and in many cases it makes sense to simply choose a device that has an adequate supply of input / output pins. On the other hand, there are certain situations where you should consider using an I / O expansion part:
- Sometimes you really can’t find a microcontroller or FPGA with enough pins. If your system needs to monitor numerous sensors or input devices, an IC that is specifically designed for I / O expansion is a simple solution.
ROHM’s BD3376MUV-M is an I / O expansion IC that is designed for monitoring push buttons.
- I recommend that you limit your designs to a small number of microcontrollers (preferably from the same manufacturer). I realize that a limitation like this is not always practical, but it is a good goal to consider as it speeds up the board design, simplifies the development process, and reduces the number of firmware bugs (sometimes maddening). ) that need to be fixed. If the only thing keeping you from using one of your standard microcontrollers is the required I / O count, I suggest you consider an I / O expander before you start reading the datasheet for an unknown processor.
- An I / O expander is also a simple, low-risk way to incorporate additional I / O functionality into an existing design. When I have a PCB that works exactly the way I want it, I prefer to make as few changes as possible when it’s time to build version 2. This means I could add an I / O expansion device rather than replace the original. microcontroller or FPGA with a variant with a higher number of pins.
I / O expansion techniques
An “outdated”, but by no means outdated approach to expanding output is a digital device called a decoder. The input to a decoder is an input code, that is, a group of digital signals that represent a number. The decoder converts this number to a high logic signal that appears on only one of several output pins. This allows for example 4 coded signals to control 16 output pins.
This is a diagram of a 2 to 4 decoder, adapted from this image created by BlueJester0101.
An encoder performs the inverse operation and can therefore be used for input expansion.
A more complicated, but also more versatile approach is to use an FPGA or CPLD as a custom I / O expansion device. This idea might have some merit in certain applications, although I suspect that in most cases it would be better to use a standard retail I / O expansion IC.
This 16-bit I / O expander from Diodes Incorporated offers an interesting collection of features. The on-board FPGA or microcontroller reads and writes the additional I / O pins through an I2C interface, so that two processor I / O pins provide access to 16 I / O pins on the expander chip.
Diagram taken from the PI4IOE5V6416 datasheet.
Furthermore, the PI4IOE5V6416 has a pin that allows you to choose between one of the two I2C slave addresses, which means that you can put two of these ICs on the same I2C bus and thus control 32 additional I / O pins using the two signals. I2C.
Voltage level translation
The PI4IOE5V6416 integrates logic level translation into its I / O expansion functionality. There are two separate supply voltage pins, one for the I2C interface and one for the GPIO signals, and both support a VDD range that extends from 1.65 V to 5.5 V. This is a useful feature, and makes the PI4IOE5V6416 a good choice for applications where additional I / O capacity must be incorporated into a legacy design.
State change interruptions
An external hardware interrupt allows a vector microcontroller to service an interrupt routine in response to some type of voltage change on an input pin. These types of interrupts are a good way to improve the quality of your code, and the PI4IOE5V6416 allows you to expand not only your I / O capacity, but also your hardware interrupt capacity: it includes an active-low output signal that is can be used to notify the processor whenever there is a change in logic level applied to one of the device’s I / O pins (this occurs only if the pin is configured as an input).
Have you ever decided to use an I / O expander instead of a microcontroller with higher number of pins or FPGA? If you have any part recommendations, feel free to let us know in the comment section below.