I2C协议


提示:本文参考野火视频,做学习记录。


一、什么是I2C?

  I2C通过协议(Inter-Integrated Circuit)由phillips公司开发的,引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通信协议的外部收发设备,被广泛使用在系统内多个集成电路(IC)间的通信。如下图所示:
I2C图
  I2C分为物理层与协议层:

二、物理层与协议层

1.物理层

(1)I2C总线:

  I2C总线由串行数据总线(SDA)与串行时钟总线(CLK)组成。数据线用于传输数据,时钟线用于数据收发同步。

(2)从地址:

  每个连接到总线的设备都有一个独立的地址(从地址7位,与读写位组成一个字节,通常表示为8位的读地址与8位的写地址),主机利用不同的地址进行不同的设备通信。

(2)三种传输模式:

            标准模式:100kbit/s
            快速模式:400kbit/s
            高速模式:3.4Mbit/s
  总线上通过上拉电阻接到电源。当I2C设备空闲时,会输出高阻态;而当所有的设备都空闲时,所有的设备都会输出高阻态,由上拉电阻把总线拉到高电平。通过识别总线的是否为高电平就能识别到总线是否有无通信。

2、协议层

在这里插入图片描述

(1)基本读写过程(下图为数据写入图):

该图片为写入数据图
     S:起始信号                      P:停止信号
     SLAVE_ADDRESS:设备从地址(挂载的从机地址)    DATA::传输的数据
     A:应答信号(ACK)                   A非::非应答信号(NACK)
     R:读标志位(”0“写入)                W:写入标志位(“1”读数据)
  主机发送S(起始信号)+SLAVE_ADDRESS(从地址)+R/W操作对用的从机,当为写入时数据传输方向为主机到从机,每次数据接收完成之后,从机必须必须回一个ACK或者NACK,数据完全发送完毕之后从机回NACK,告诉主机数据已经发送完毕,主机发送停止信号P结束通信。 当为读数据时,从机发送数据后必须回一个ACK或者NAC告诉主机数据是否发送完毕,当主机收到NACK主机就知道从机所有数据发送完毕,这是主机在发送停止信号P来停止通信。

(2)复合模式:

在这里插入图片描述
  复合模式与基本读写模式基本相同,当从地址回复NACK告诉主机数据已经发送完毕时,主机不是发送停止信号而是发送 重复起始信号Sr开始一段新的数据传输。

(3)通信的起始信号与停止信号:

  当SCL线是高电平时SDA线从高电平向低电平切换——表示通信的开始(其实信号)。
  当SCL线是高电平时SDA线从低电平向高电平切换——表示通信的结束(停止信号)。
  停止信号与起始信号一般由主机产生。

(4)可挂载的从设备数量:

  有IIC地址决定,8位地址,减去1位广播地址,是7位地址,2^7=128,但是地址0x00不用,那就是127个地址, 所以理论上可以挂127个从器件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值