I2C

出自 ArchWiki

I²C 或 I2C (Inter-IC) 是由 Philips Semiconductors 于 1982 年发明的同步、多控制器/多目标(控制器/目标)、分组交换、单端、串行通信总线。

许多硬件板使用它与通用 I/O (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 总线,导致数据丢失甚至更糟的情况。

参见