首页 > 其他分享 >IIC协议简介

IIC协议简介

时间:2022-11-14 13:22:52浏览次数:54  
标签:协议 高电平 简介 应答 写入 地址 从机 IIC I2C

IIC总线介绍

IIC也称I2C,是一个多主从的串行总线,由飞利浦公司发明的通讯总线,属于半双工同步传输类总线,仅由两条线就能完成多机通讯,一条SCL时钟线,另外一条双向数据线SDA,IIC总线要求每个设备SCL/SDA线都是漏极开路模式,因此必须带上拉电阻才能正常工作。I2C协议占用引脚少,硬件实现简单,可扩展性强,I2C数据传输速率有标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。

IIC协议时序

在这里插入图片描述

  1. IDLE
    表示总线空闲状态。此状态下时钟信号SCL和数据信号SDL均为高电 平,此时无I2C设备工作。
  2. START
    表示起始状态。在IDLE状态下,时钟信号SCL继续保持高电平,数据信号SDL出现由高电平转换为低电平的下降沿,此时产生一个起始信号,与总线相连的I2C设备检测到起始信号之后,进入起始状态等待控制字节的输入。
  3. Read or Write
    表示IIC设备读写状态。具体见下文。
  4. STOP
    表示停止状态。完成数据读写后,SCL保持高电平,SDL产生一个由低电平转换为高电平的上升沿信号之后,产生停止信号,总线回到空闲状态。

I2C读写状态时序如下:
在这里插入图片描述
SCL为低电平期间,SDA允许数据变换(1代表高电平,0代表低电平)。SCL为高电平期间,SDA数据必须保持稳定,因此一个时钟周期传输1bit数据,每次传输8个bit即一个字节,主机将在最后一个数据时钟末释放SDA总线使从机应答,在传输完1字节数据后的第一个时钟周期SCL为高电平,如果SDA未被检测到低电平,则视为非应答,代表此次数据传输失败。
注意:数据传输是以高位在前,低位在后。

I2C数据读写操作

I2C单字节写步骤如下:
(1)主机产生起始信号并发送到从机,将控制命令写入从机(7位设备地址+1位读写控制命令),读写控制位设置为低电平,表示对从机进行写操作。
(2)从机接收到控制指令后,给与主机一个应答信号ACK,主机接收到ACK应答信号后开始写入寄存器地址,若寄存器地址为16位,则依次写入高8位,产生应答,再写入低8位,产生应答。若寄存器地址为8位,则直接从高位开始写入8位寄存器地址,产生应答。
(3)地址写入完成后,接收到从机应答信号之后,开始单字节数据的写入。
(4)单字节数据写入完成后,接收到从机应答信号之后,向从机发送停止信号,至此单字节数据写入完成。
注意:每次写入1字节数据从机都要产生一个应答信号。
I2C单字节读步骤如下:
(1)主机产生起始信号并发送到从机,将控制命令写入从机(7位设备地址+1位读写控制命令),读写控制位设置为低电平,表示对从机进行写操作。
(2)从机接收到控制指令后,给与主机一个应答信号ACK,主机接收到ACK应答信号后开始写入寄存器地址,若寄存器地址为16位,则依次写入高8位,产生应答,再写入低8位,产生应答。若寄存器地址为8位,则直接从高位开始写入8位寄存器地址,产生应答。
(3)地址写入完成后,接收到从机应答信号之后,主机再次向从机发送一个起始信号。
(4)主机向从机发送控制命令,读写控制位设置为高电平,表示对从机读操作。
(5)主机接收到从机的应答信号后,开始接收从机的单字节数据。
(6)主机接收完成数据之后,主机产生一个时钟周期的高电平无应答信号。
(7)主机向从机发送一个停止信号,至此单字节读操作完成。

注意:随机读操作过程中需要先进行一次写操作,因为我们需要将从机中的地址指针指到我们想要读取的地址,此次写操作也叫哑写、虚写,待从机给与应答信号后,指针指到我们想要读的地址,此时可以进行当前地址读操作了。
随机读与当前地址读的区别:
随机读:可以随机读取从机某地址的数据。
当前地址读:是指在一次读或写操作后发起的读操作,I2C设备在读写操作后,其内部的地址指针自动加1。

I2C页写与单字节写
I2C单字节写与页写的最大的区别:单字节写按照I2C协议每次写入一个字节,产生一个stop信号,页写可以允许写入多个字节数据,但不能超过设备单页包含的最大存储数,写入多个字节后,最终主机发送一个stop信号。
在这里插入图片描述
所有的I2C设备都支持单数据写入操作,但只有部分I2C设备支持页写操作。

标签:协议,高电平,简介,应答,写入,地址,从机,IIC,I2C
From: https://www.cnblogs.com/amxiang/p/16888750.html

相关文章

  • SCI简介和写作顺序
    一、SCI论文组成部分简介一篇完整的sci论文主要包括以下几个主要的组成部分,从前往后依次分别是Title就是说这个文章的标题其次是Abstract也就是这个文章的摘要。接......
  • Java多线程简介
    一、线程简介Process进程与Thread线程程序是指令和数据的有序集合,本身没有任何运行的含义,为静态概念。进程是执行程序的一次执行过程,为动态概念。是系统资源分配的单位......
  • RabbitMq简介
    RabbitMq简介RabbitMQ是一个由erlang开发的AMQP(AdvancedMessageQueue高级消息队列协议)的开源实现,由于erlang语言的高并发特性,性能较好,本质是个队列,FIFO先入先出,里面......
  • NFV简介-华为
    转自:https://info.support.huawei.com/info-finder/encyclopedia/zh/NFV.html1.什么是NFV 网络功能虚拟化(NetworkFunctionsVirtualization,NFV)是一种关于网络架构的概......
  • 【NET微服务】微服务简介
    一、什么是微服务微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通。二、单体应用架构所谓单体应......
  • 实验3:OpenFlow协议分析实践
    (一)基本要求搭建下图所示拓扑,完成相关IP配置,并实现主机与主机之间的IP通信。用抓包软件获取控制器与交换机之间的通信数据。查看抓包结果,分析OpenFlow协议中交换机......
  • 抓包整理————ip 协议一[十二]
    前言简单介绍一下ip协议。正文先来看下ip协议在网络层的哪一层:应用层表示层会话层传输层网络层数据链路层物理层ip层就在网络层:其实很好想象哈,就是因为每......
  • ccache使用简介
    目录ccache是什么ccache能做什么ccache的效率如何ccache如何使用安装cccheccache的使用方式ccache使用情况小结ccache是什么ccache--“compilercache”的缩写,是一个g......
  • 响应的HTTP协议
    1.响应行  (1)响应的协议和版本号  (2)响应状态码  (3)响应状态述符2.响应头   key:value 不同的响应头有不同的含义 空行3.响应体  回传给客户......
  • 请求的HTTP协议
    请求分为GET请求,POST请求GET请求  1.请求行  请求方式 GET  请求的资源路径  请求的协议版本号 HTTP/1.12.请求头  key:value 组成  不......