mirror of
https://github.com/apache/nuttx.git
synced 2026-08-02 12:49:00 +00:00
This commit adds a new lower-half driver implementation for I2C bit-bang
that uses IO expander pins as the GPIO backend, enabling I2C bit-bang
functionality on systems where direct GPIO access is not available or
when I2C needs to be implemented using IO expander pins.
Background:
The existing I2C bit-bang driver (i2c_bitbang.c) provides a generic
upper-half implementation that requires a platform-specific lower-half
to control the SDA and SCL GPIO lines. Previously, each platform had to
implement its own lower-half using direct GPIO access.
Usage Example:
FAR struct ioexpander_dev_s *ioe = /* get IO expander */;
FAR struct i2c_master_s *i2c;
/* Initialize I2C bit-bang using IO expander pins 10 (SCL) and 11 (SDA) */
i2c = i2c_bitbang_ioexpander_initialize(ioe, 10, 11, 0);
if (i2c)
{
/* Use i2c master device normally */
}
Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
|
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| i2c_bitbang.c | ||
| i2c_bitbang_ioexpander.c | ||
| i2c_driver.c | ||
| i2c_read.c | ||
| i2c_slave_driver.c | ||
| i2c_write.c | ||
| i2c_writeread.c | ||
| Kconfig | ||
| Make.defs | ||
| pca9540bdp.c | ||
| pca9540bdp.h | ||
| tca9548a.c | ||