【Orange Pi 5 嵌入应用编程】-用户空间I2C通信
用户空间I2C通信
文章目录
- 用户空间I2C通信
- 1、理解I2C协议
- 1.1 什么是I2C协议
- 1.2 I2C协议如何工作
- 1.3 I2C数据传输步骤
- 1.4 单主机多从机
- 1.5 多主机多从机
- 1.6 I2C的优缺点
- 2、嵌入式Linux系统中的I2C
- 3、Orange Pi 5的I2C配置及编程
- 3.1 I2C配置
- 3.2 I2C通信实现
- 3.2.1 I2C通信函数定义
- 3.2.2 I2C通信函数实现
1、理解I2C协议
1.1 什么是I2C协议
I2C或IC间通信是嵌入式系统中非常常见的低速通信方法。I2C 的最大优势在于易于实现,被半导体制造商广泛采用,并且能够在同一总线上轻松添加多个节点,从而实现更高效的设计(甚至可能更具成本效益)。I2C由飞利浦半导体公司定义,后来被恩智浦半导体公司收购。I2C 基本上是主从总线,是纯粹的半双工。
I2C 是一种简单的低速 2 线总线,在嵌入式板上很常见,通常用于访问不在 SoC 上的外设,例如显示控制器、摄像头传感器、GPIO 扩展器等。在PC上可以找到一种称为系统管理总线(System Manager Bus,SMBus)的相关标准,用于访问温度和电压传感器。SMBus 是 I2C 的一个子集。
I2C 是一种主从协议,主设备是 SoC 上的一个或多个主机控制器。 从设备具有制造商分配的 7 位地址(阅读数据表),每条总线最多允许 128 个节点,但保留了 16 个节点,因此实际上只允许 112 个节点。主设备可以与其中一个从设备发起读取或写入事务。通常,第一个字节用于指定从机上的寄存器,其余字节是从该寄存器读取或写入该寄存器的数据。