目录

​​1.原理图​​

​​2.资料参考​​

​​2.1 IIC-总线接口概述​​

​​2.2 IIC总线接口的主要功能​​

​​2.3 IIC总线接口操作​​

​​2.4 I/O描述​​

​​2.5寄存器描述​​

​​3.代码​​

​​4.拓展​​


1.原理图

s5pv210开发与学习:1.17之I2C通信详解_数据传输

2.资料参考

数据手册相关资料参照(883页)section 08_connectivity_storage---》2 IIC-BUS INTERFACE

2.1 IIC-总线接口概述

S5PV210 RISC微处理器支持四个多主I2C总线串行接口。为了在总线主机和连接到I2C总线的外围设备之间传递信息,使用了专用的串行数据线(SDA)和串行时钟线(SCL)。 SDA和SCL线都是双向的。
在多主机I2C总线模式下,多个S5PV210 RISC微处理器与从设备之间收发串行数据。主站S5PV210启动和终止通过I2C总线的数据传输。 S5PV210中的I2C总线使用标准的总线仲裁程序。
要控制多主机I2C总线操作,必须将值写入以下寄存器:
•多主机I2C总线控制寄存器-I2CCON
•多主I2C总线控制/状态寄存器-I2CSTAT
•多主机I2C总线Tx / Rx数据移位寄存器-I2CDS
•多主机I2C总线地址寄存器-I2CADD
如果I2C总线空闲,则SDA和SCL线路均应处于高电平。 SDA的高到低转换会启动启动条件。当SCL保持稳定在高电平时,SDA由低到高的转换会启动停止条件。
主设备始终生成启动和停止条件。启动条件启动后,通过SDA线传输的数据字节中的第一个7位地址值可以确定总线主设备已选择的从设备。第8位确定传输方向(读或写)。
放在SDA线上的每个数据字节总计应为八位。在总线传输操作期间,发送或接收字节没有限制。始终总是从最高有效位(MSB)首先发送数据,并且每个字节后应立即紧跟确认(ACK)位。

s5pv210开发与学习:1.17之I2C通信详解_数据传输_02

2.2 IIC总线接口的主要功能

•四通道多主站,从属I2C BUS接口
(内部连接了一个用于HDMI PHY的通道。三个通道可用于一般用途。但是,如果用户要使用HDMI,建议仅在三个通道之间分配一个通道供HDMI使用)
•7位寻址模式
•串行,面向8位和双向数据传输
•在标准模式下支持最高100kbit / s
•在快速模式下最高支持400kbit / s。
•支持主机发送,主机接收,从机发送和从机接收操作
•支持中断或轮询事件。

2.3 IIC总线接口操作

S5PV210 I2C总线接口具有四种操作模式,即:
•主发送器模式
•主接收模式
•从机发送模式
•从机接收模式
这些操作模式之间的功能关系如下所述。

2.3.1启动和停止条件
如果I2C总线接口处于非活动状态,则通常处于从模式。换句话说,在检测到SDA线上的启动条件之前,接口应处于从模式(在SCL的时钟信号为高电平时,通过SDA线从高到低的跳变来启动启动条件)。如果接口状态更改为主模式,则SDA线将启动数据传输并生成SCL信号。
启动条件通过SDA线传输一个字节的串行数据,而停止条件终止数据传输。停止条件是SCL为高电平时SDA线从低到高的跳变。主机产生启动和停止条件。如果产生启动条件,则I2C总线会变得繁忙。另一方面,停止条件将释放I2C总线。
如果主机启动了启动条件,则它应发送一个从机地址以通知从机。地址字段的一个字节由一个7位地址和一个1位传输方向指示符(显示写或读)组成。如果第8位为0,则表示写操作(发送操作);如果位8为1,则表明请求读取数据(接收操作)。
主机发送停止条件以完成传输操作。如果主机希望继续将数据传输到总线,则它应生成另一个启动条件以及一个从机地址。这样,以各种格式执行读写操作。

s5pv210开发与学习:1.17之I2C通信详解_数据_03

2.3.2数据传输格式
SDA线上的每个字节长度应为八位。 每次传输不限制发送字节。启动条件之后的第一个字节应具有地址字段。 如果I2C总线在主机模式下运行,则主机发送地址字段。 每个字节后均应有一个确认(ACK)位。 串行数据和地址的MSB位先发送。

s5pv210开发与学习:1.17之I2C通信详解_数据传输_04

s5pv210开发与学习:1.17之I2C通信详解_寄存器_05

2.3.3 ACK信号传输
为了完成一个字节的传输操作,接收器向发送器发送一个ACK位。 ACK脉冲在SCL线的第9个时钟发生。 一字节数据传输需要八个时钟。 主机产生发送ACK位所需的时钟脉冲。
如果接收到ACK时钟脉冲,发送器会将SDA线设置为高电平以释放SDA线。 接收器在ACK时钟脉冲期间将SDA线驱动为低电平,以便在第九个SCL脉冲的高电平期间SDA保持低电平。 软件(I2CSTAT)启用或禁用ACK位发送功能。 但是,需要SCL第九个时钟上的ACK脉冲来完成一字节数据传输操作。

s5pv210开发与学习:1.17之I2C通信详解_数据传输_06

2.3.4读写操作
在数据以发送器模式发送时,I2C总线接口等待,直到I2C总线数据移位(I2CDS)寄存器接收到新数据。 在将新数据写入寄存器之前,SCL线保持低电平。 仅在写入数据后才释放该行。 S5PV210保留该中断以标识当前数据传输的完成。 CPU收到中断请求后,它将再次将新数据写入I2CDS寄存器。
如果在接收模式下接收到数据,则I2C总线接口将等待直到读取I2CDS寄存器。 在读出新数据之前,SCL线保持低电平。 仅在读取数据后才释放该行。 S5PV210保留该中断以标识新数据接收的完成。 CPU收到中断请求后,将从I2CDS寄存器中读取数据。

2.3.5 总线仲裁机制

仲裁发生在SDA线路上,以防止两个主机之间的总线争用。如果具有SDA高电平的主机检测到其他具有SDA活动低电平的主机,则它不会启动数据传输,因为总线上的当前电平与其自身的电平不符。仲裁过程一直持续到SDA线变为高电平为止。
如果主机同时降低SDA线,则每个主机都会评估是否自行分配了主机权限。为了评估的目的,每个主机检测地址位。当每个主机产生从机地址时,它会检测SDA线上的地址位,因为SDA线很可能变低而不是变高。
假设一个主机产生低作为第一个地址位,而另一个主机保持高电平。在这种情况下,两个主设备都在总线上检测到“低”,因为“低”状​​态在功率上优于“高”状态。如果发生这种情况,则生成主机的Low(作为地址的第一位)将获得主控权,而生成主机的High(作为地址的第一位)将撤回主控权。如果两个主机都将低位作为地址的第一位,则再次对第二个地址位进行仲裁。此仲裁将继续到最后一个地址位的末尾。

2.3.6终止条件
如果从机接收器无法确认对从机地址的确认,则它将SDA线保持为高电平。 在这种情况下,主机产生停止条件并取消传送。
如果主接收器参与中止的传输,则它通过取消从从接收器接收到的最后一个数据字节后取消ACK来发出从发送操作结束的信号。 从机发送器释放SDA,以允许主机产生停止条件。

2.3.7配置IIC总线
为了控制串行时钟(SCL)的频率,可在I2CCON寄存器中设置4位预分频器值。
I2C总线接口地址存储在I2C总线地址(I2CADD)寄存器中(默认情况下,I2C总线接口地址具有未知值)。

2.3.8每种模式下的操作流程图
在执行任何I2C Tx / Rx操作之前必须执行以下步骤:
1.如果需要,在I2CADD寄存器上写入自己的从机地址。
2.设置I2CCON寄存器。
a)使能中断
b)定义SCL周期
3.设置I2CSTAT以启用串行输出

s5pv210开发与学习:1.17之I2C通信详解_数据传输_07

s5pv210开发与学习:1.17之I2C通信详解_数据_08

s5pv210开发与学习:1.17之I2C通信详解_寄存器_09

 

 

2.4 I/O描述

信号

I/O

描述

Pad

类型

I2C0_SCL

Input/Output

I2C总线接口0串行时钟线

Xi2c0SCL

复用

I2C0_SDA

Input/Output

I2C总线接口0串行数据线

Xi2c0SDA

复用

I2C2_SCL

Input/Output

I2C-BUS接口2串行时钟线

Xi2c2SCL

muxed

I2C2_SDA

Input/Output

I2C-BUS接口2串行数据线

Xi2c2SDA

muxed

I2C_HDMI_DDC_SCL

Input/Output

HDMI DDC串行时钟线的I2C-BUS接口

Xi2c1SCL

muxed

I2C_HDMI_DDC_SDA

Input/Output

HDMI DDC串行数据线的I2C-BUS接口

Xi2c1SDA

muxed

注意:HDMI PHY的I2C-BUS接口是内部连接的。

2.5寄存器描述

2.5.1 寄存器映射
2.5.1.1多主I2C总线控制寄存器
2.5.1.2多主I2C总线控制/状态寄存器
2.5.1.3多主I2C总线地址寄存器
2.5.1.4多主I2C总线发送/接收数据移位寄存器
2.5.1.5多主I2C总线控制寄存器

 

3.代码

4.拓展

​​1.Exynos4412 裸机开发 —— IIC总线​​