Apache NuttX is a mature, real-time embedded operating system (RTOS) https://nuttx.apache.org/
Find a file
dongjiuzhu1 06099d492e drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang
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>
2025-12-30 23:30:16 +08:00
.github mtd/at25ee: Use eeprom/spi_xx25xx internally 2025-12-17 19:03:54 +01:00
arch arch/armv8-m: Fix IRQ number corruption in exception_direct with O2 optimization 2025-12-29 19:15:21 +08:00
audio
binfmt sched:use tcb_s inside of task_tcb_s , remove all cast 2025-12-22 17:55:45 +08:00
boards arch/tricore: enable CONFIG_SYSTEM_TIME64 for TC397 2025-12-26 21:35:14 +08:00
cmake cmake: Improve nuttx_generate_kconfig() 2025-12-02 02:45:36 +08:00
crypto LICENSE: update NuttX-PublicDomain SPDX identifier 2025-12-26 19:46:12 +08:00
Documentation docs: add ICMP ping guide (usage, options, examples) 2025-12-29 22:41:40 +08:00
drivers drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2025-12-30 23:30:16 +08:00
dummy
fs littlefs: fix statfs underflow during active writes 2025-12-29 14:23:04 +08:00
graphics sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
include drivers/i2c: add ioexpander-based lower-half implementation for I2C bit-bang 2025-12-30 23:30:16 +08:00
libs libc/search: add foreach api for hcreate_data 2025-12-25 09:39:03 +08:00
mm net/ethernet: update all iob information in the iob_update_pktlen 2025-12-29 14:40:26 +08:00
net net/ethernet: fix compilation issues 2025-12-29 23:31:51 +08:00
openamp sched/clock: remove return value of clock_systime_timespec() 2025-10-10 23:15:27 +08:00
pass1
sched sched: Simplify the timer_start/cancel in sched_timerexpiration. 2025-12-26 11:51:38 +08:00
syscall
tools espressif: improve esp-hal-3rdparty handling 2025-12-27 11:38:13 +08:00
video
wireless net/wireless: fix compile warning 2025-12-25 18:05:33 +08:00
.asf.yaml
.codespell-ignore-lines net/icmpv6: replace net_lock with conn_lock and conn_lock_dev 2025-12-29 09:42:18 +08:00
.codespellrc codespellrc: add ist to ignorelist 2025-10-14 17:42:01 +08:00
.editorconfig .editorconfig: fix character encoding property specification 2025-11-28 19:12:13 +08:00
.gitignore
.gitmessage
.pre-commit-config.yaml
.yamllint
AUTHORS AUTHORS: add Michal Lenc 2025-12-03 08:46:33 -03:00
CMakeLists.txt cmake: Add support for ccache. 2025-12-05 11:46:30 +01:00
CONTRIBUTING.md
INVIOLABLES.md
Kconfig docs/config: Wrong term. 2025-10-23 16:46:31 +08:00
LICENSE
Makefile
NOTICE
README.md
ReleaseNotes

POSIX Badge License Issues Tracking Badge Contributors GitHub Build Badge Documentation Badge

Apache NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. Scalable from 8-bit to 64-bit microcontroller environments, the primary governing standards in NuttX are POSIX and ANSI standards. Additional standard APIs from Unix and other common RTOSs (such as VxWorks) are adopted for functionality not available under these standards, or for functionality that is not appropriate for deeply-embedded environments (such as fork()).

For brevity, many parts of the documentation will refer to Apache NuttX as simply NuttX.

Getting Started

First time on NuttX? Read the Getting Started guide! If you don't have a board available, NuttX has its own simulator that you can run on terminal.

Documentation

You can find the current NuttX documentation on the Documentation Page.

Alternatively, you can build the documentation yourself by following the Documentation Build Instructions.

The old NuttX documentation is still available in the Apache wiki.

Supported Boards

NuttX supports a wide variety of platforms. See the full list on the Supported Platforms page.

Contributing

If you wish to contribute to the NuttX project, read the Contributing guidelines for information on Git usage, coding standard, workflow and the NuttX principles.

License

The code in this repository is under either the Apache 2 license, or a license compatible with the Apache 2 license. See the License Page for more information.