跳转至内容

I2C

来自 ArchWiki

I²C 或 I2C (Inter-IC) 是由飞利浦半导体公司于 1982 年发明的一种同步、多控制器/多目标(控制器/目标)、分组交换、单端、串行通信总线。

许多硬件板卡使用它来与通用输入/输出 (GPIO) 设备通信。

I2C 的一个类似扩展是 SMBus,它更专门用于硬件监控目的。

安装

大多数默认内核软件包中已经存在 I2C 内核模块。

用户空间工具可以从 i2c-tools 安装。最新版本可以在 i2c-tools-gitAUR 获取。

SMBus 特定工具可以从 lm_sensors 安装。

模块加载

在某些情况下,可能需要 在启动时加载模块

/etc/modules-load.d/i2c-dev.conf
i2c_dev

FS#76233 修复后,将不再需要此操作。

根据您的系统和使用情况,可能还需要加载其他特定于硬件的模块,例如 i2c_i801i2c_smbus

如果模块已正确加载,您应该会看到 /dev/i2c-* 设备。

可以通过将用户添加到 i2c 用户组 来授予使用 /dev/i2c-* 设备的权限。

用法

i2cdetect 可以检测所有活动的 I2C 设备

$ i2cdetect -l
i2c-0	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-1	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-2	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-3	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-4	smbus     	SMBus I801 adapter at f040      	SMBus adapter
i2c-5	i2c       	i915 gmbus dpb                  	I2C adapter
i2c-6	i2c       	i915 gmbus dpc                  	I2C adapter
i2c-7	i2c       	i915 gmbus misc                 	I2C adapter
i2c-8	i2c       	AUX B/DDI B/PHY B               	I2C adapter

当 I2C 设备连接到已知总线时,i2cdetect 可以探测其活动的地址

$ i2cdetect 1
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: 60 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- 76 --

请注意,此程序可能会导致 I2C 总线混乱,数据丢失甚至更严重的问题。

参见