跳转至

I2C

Rockchip I2C 控制器支持兼容 I2C 与 SMBus 总线,拓展引脚中 I2C 信息如下:

主板 SOC 平台 拓展引脚
K1 RK3568 Rockchip I2C X2
K1B RK3568 Rockchip I2C X1
K3 RK3562 Rockchip I2C X1
K7 RK3576 Rockchip I2C X3
K7C RK3576 Rockchip I2C X2
K8 RK3588 Rockchip I2C X2

Allwinner 的 TWI 总线兼容 I2C 总线协议,拓展引脚中 I2C 信息如下:

主板 SOC 平台 拓展引脚
K2B H618 Allwinner I2C X3
K2C H618 Allwinner I2C X2
K4B T113 Allwinner I2C X3
K5C A133 Allwinner I2C X1

术语说明

术语 说明
I2C Inter-Integrated Circuit,集成电路间总线
TWI Two-Wire Interface,双线接口

硬件连接

示意图为 I2C 总线的硬件连接方式,需要上拉电阻,改变上拉电阻大小可调节 I2C 总线的上拉强度。

image-20251112134828034

DTS 节点配置

Rockchip

下面为 Rockchip 平台 i2c 配置 hym8563 设备的 dts 节点配置示例:

&i2c2 {
    status = "okay";

    hym8563: hym8563@51 {
        compatible = "haoyu,hym8563";
        reg = <0x51>;
        pinctrl-names = "default";
        pinctrl-0 = <&hym8563_int>;
        interrupt-parent = <&gpio0>;
        interrupts = <RK_PA0 IRQ_TYPE_LEVEL_LOW>;
        wakeup-source;
    };
};

Allwinner

Allwinner 平台 twi0 配置 hym8563 设备的 dts 节点配置示例:

&twi0{
    clock-frequency = <400000>;
    pinctrl-0 = <&twi0_pins_a>;
    pinctrl-1 = <&twi0_pins_b>;
    status = "okay";

    hym8563@51 {
        compatible = "haoyu,hym8563";
        reg = <0x51>;
        interrupt-parent = <&pio>;
        interrupts = <PB 8 IRQ_TYPE_LEVEL_LOW>;
        status = "okay";
    };
};

I2C tools

I2C tool 是一个开源工具,需自行下载进行交叉编译,下载地址:

git clone git://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git

编译后会生成 i2cdetect,i2cdump,i2cset,i2cget 等工具,可以直接在命令行上调试使用:

Note

i2cdetect – 用来列举 I2C bus 和上面所有的设备。
i2cdump – 显示 i2c 设备所有 register 的值。
i2cget – 读取 i2c 设备某个 register 的值。
i2cset – 写入 i2c 设备某个 register 的值。
I2C tool 都是开源的,编译与使用请参考里面的 README 与帮助说明。

示例

以 K1B 拓展 I2C 引脚接入 I2C 设备(RTC hym8563 模块)为例,其他主板类似。

1. 确认拓展引脚 I2C 引脚位置以及模块的电源域,RTC hym8563 为 3.3V。

image-20251112142527332

2. 确认模块 SDA SCL 是否内置上拉电阻,没有则需要增加上拉电阻。

3. 连接模块,i2cdetect 检测设备是否挂载识别成功。

Warning

主板通电状态下,禁止安装/拆卸操作!

image-20251112142713347