I2C Driver
Overview
I2C (Inter-Integrated Circuit) is a two-wire serial bus supporting master/slave operations.
Functional Description
Multiple instances, master and slave modes
7-bit/10-bit addressing, configurable speeds
Interrupts, timeouts, bus state queries
Memory read/write helpers for EEPROM-like devices
Development Guide
Init: bk_i2c_driver_init(), then bk_i2c_init(id, &cfg)
Master I/O: bk_i2c_master_write/read, bk_i2c_master_mem_write/read
Slave I/O: bk_i2c_slave_write/read
Status: bk_i2c_is_bus_busy, bk_i2c_get_*state
Notes
Verify pull-ups on SDA/SCL
Match target device speed and addressing
API Reference
bk_i2c_driver_init/deinit, bk_i2c_init/deinit
bk_i2c_master_write/read, bk_i2c_master_mem_write/read
bk_i2c_slave_write/read
bk_i2c_set_baud_rate, bk_i2c_set_slave_addr
bk_i2c_enable/disable_interrupt, bk_i2c_is_bus_busy
bk_i2c_get_current_action, bk_i2c_get_bus_state, bk_i2c_get_transaction_state
Examples
Read a register:
uint8_t reg = 0x10, val = 0;
bk_i2c_master_write(I2C_ID_0, 0x50, ®, 1, 100);
bk_i2c_master_read(I2C_ID_0, 0x50, &val, 1, 100);
Error Codes
BK_ERR_I2C_NOT_INIT, BK_ERR_I2C_INVALID_ID, BK_ERR_I2C_ID_NOT_INIT