I2C GPIO Expansion - TCAL6416 w/ MSPM0C1104
A host controller (MCU / Processor) in a system has a limited number of general purpose inputs and outputs (GPIO) used for various functions in an electrical system.
Take for example the world’s smallest MCU, Texas Instruments MSPM0C1104 in the 8-pin YCJ (DSBGA) package type.
Although many other variants exist of the MSPM0C1104 with much higher pinouts and capability, the 8-pin version is a perfect example for GPIO expansion since this MCU only has 6 to use (PA24, PA0, PA27, PA1, PA20, PA19).
We can utilize the I2C bus from the MSPM0C1104 to expand the number of available GPIO’s in a system. We take two I2C pins (SDA & SCL) from the MSPM0C1104 and convert I2C traffic into GPIO control through software. See the block diagram below for a visual.
16-bit I2C to GPIO Expander - TCAL6416
The benefit of using an I2C to GPIO expander such as TCAL6416 is that we gain access to 16 IO’s by using 2 IO’s from the MSPM0C1104 (SDA & SCL).
With this setup, the MSPM0 can communicate to the TCAL6416 through the I2C bus by configuring pins P00 - P07 and P10 - P17 to behave as an input or output.
In later blog posts, I will show bit-by-bit examples on how to write and read from the TCAL6416 through a series of register writes and register reads. I2C writes to configure the TCAL6416 (i.e. make P00 an output), or an I2C read (i.e. read the interrupt status register to determine which p-port pin generated an interrupt).
Click the on the links below to access additional information on how to use TCAL6416.
Features of TCAL6416, 16-bit, I2C Agile IO Expander (coming soon)
How to Write and Read Registers within the TCAL6416 I2C IO Expander (coming soon)