I2C硬件连接图
![在这里插入图片描述](https://img-blog.csdnimg.cn/41b993d6b35646ffaf0bae5fd6107a4b.png)
Rockchip I2C 控制器支持下列功能
兼容 I2C 与 SMBus 总线
仅支持主模式下的 I2C 总线
软件可编程时钟频率支持到 400kbps,部分芯片可高达 1000kbps
支持 7 位和 10 位寻址模式
一次中断或轮询至多 32 个字节的数据传输
下图为 I2C 总线的硬件连接方式,需要上拉电阻,改变上拉电阻大小可调节 I2C 总线的上拉强度。
Kernel space
Rockchip I2C 的读写通信都是使用的是 linux 的标准接口。
User space
从用户态访问总线上的所有设备,通过/dev/i2c-%d接口来访问。
I2C tools
- i2cdetect – 用来列举 I2C bus 和上面所有的设备
- i2cdump – 显示 i2c 设备所有 register 的值
- i2cget – 读取 i2c 设备某个 register 的值
- i2cset – 写入 i2c 设备某个 register 的值
linux内核注意事项
由于内核获取i2c地址要左移一位,最右位为读写位。
8位i2c地址,在设备树中描述i2c地址时要右移一位。
数据结构
struct i2c_adapter //i2c适配器(控制器)
struct i2c_algorithm //i2c_algorithm 就是 I2C 适配器与 IIC 设备进行通信的方法。
struct i2c_client //i2c设备
struct i2c_driver //i2c设备驱动