加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • I2C总线的基本的特征
    • i2c时序结构
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

飞凌嵌入式ElfBoard ELF 板卡-i2c与从设备通讯编程示例之i2c硬件原理

10/28 08:51
365
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

i2c总线是由飞利浦在80年代初设计的,以允许位于同一电路板上的组件之间能够轻松通信。其大大简化了电路的设计,早期的电视机中很多地方用到了i2c这种通信方式。飞利浦半导体于2006年迁移到了NXP。i2c名称翻译为“ Inter IC”。有时,该总线称为IIC或I²C总线。

I2C总线的基本的特征

(一)同步、半双工,带数据应答;

(二)两根通信线:SCL(Serial Clock)、SDA(Serial Data);

(三)i2c为总线型结构,主设备依靠从设备地址进行寻址;

(四)设备的SCL和SDA均要配置成开漏输出模式;

(五)SCL和SDA必须添加上拉电阻

(六)开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多机通信互相干扰的问题;

(七)i2c标准的传输速率可以达到100Kbit/s,快速模式下可以达到400Kbit/s,高速模式下可以到达3.4Mbit/s。

i2c时序结构

(一)起始/停止信号

i2c的起始和停止信号,波形如下:

起始信号:SCL为高电平期间,SDA从高电平到低电平;

停止信号:SCL为高电平期间,SDA从低电平到高电平;

(二)收发数据

发送数据:SCL低电平期间,主机根据要发送的数据,将SDA线置0或置1(高位在前),然后拉高SCL,从机将在SCL高电平期间读取数据位,循环8次,即可发送一个字节。

接收数据:SCL低电平期间,从机根据要发送的数据,将SDA线置0或置1(高位在前),然后拉高SCL,主机将在SCL高电平期间读取数据位,循环8次,即可接收一个字节。

i2c的发送和接收波形是类似的,区别在于SDA上的数据是主机提供还是从机提供。

(三)应答位

无论是主机还是从机,当i2c设备接受一个字节数据后,会在下一个时钟发送1个应答位,发送的数据为0表示应答,数据为1表示非应答。

(四)设备寻址

每一台i2c设备都有一个设备地址,设备地址由7位地址和1个读写位组成,i2c开始通信时,主设备会发起总线寻址,在发起起始信号之后,发送一个字节的设备地址。

R/W位:表示数据传输的方向。当R/W位为0时,表示主机向从机写入数据;当R/W位为1时,表示主机从从机读取数据。

设备地址可以分为可编程和不可编程两种方式。对于一些设备,它们的地址是固定且不可更改的,而对于另一些设备,则可以通过芯片引脚来设定设备的地址。可编程地址的设备可以更方便地连接多个相同类型的设备在同一条i2c总线上,并通过地址来区分不同的设备。

(五)写时序

下图完整的展示了主机向从机写一个字节的时序图,需要注意的包括:

当主设备通过i2c总线向从设备写入数据时,主设备需首先在总线上发送带有从设备地址的起始条件,并且最后一位设置为0(R/W位),该位表示写入。

从设备发送应答位后,主设备将发送它希望写入的寄存器的寄存器地址。从设备将再次确认,让主设备知道它准备好了。

在此之后,主设备将开始将数据发送到从设备的寄存器,直到主设备发送了所需的所有数据(有时这只是一个字节),主设备将以STOP条件终止传输。

(六)读时序

对从设备的读取与写入非常相似:

为了对从设备读取,主设备必须首先向从设备指示它希望从哪个寄存器读取。 这是由主设备以与写入类似的方式开始传输,通过发送R/W位等于0(表示写入)的地址,然后是希望从中读取的寄存器地址。

一旦从设备确认该寄存器地址,主设备将再次发送START条件,然后是从设备地址,R/W位设置为1(表示读取)。

之后主设备读取从设备的数据,一旦主设备收到了预期的字节数,他就会发送一个ACK,向从设备发送停止信号,然后主设备将以STOP条件结束通讯。

相关推荐

电子产业图谱