首页 > 其他分享 >iic(i2c)协议简介

iic(i2c)协议简介

时间:2023-05-07 22:45:55浏览次数:46  
标签:slave 简介 总线 地址 master sda iic i2c

近来了解了下iic总线协议,记录下知识点

+++++

Q: 什么是iic协议?
A: iic协议是NXP研发的半双工串行总线协议,只有两条总线就可连接多个设备,两条总线分别是sda(串行数据)和scl(串行时钟),具有上拉电阻,使得总线空闲状态下sda和scl上都是高电平。

+++++

Q: iic协议有什么特点?适合什么场景?
A: iic协议结构简单可靠,属于半双工,支持多master和多slave设备,连接到总线上的模块都必须有开漏极或开集电路。基本速率100kbit/s,具有快速模式和快速plus模式,还具有高速模式(HS)可达3.4Mbit/s,适合作为片内低速总线进行通信,或链接mcu和外围设备。

+++++

Q: iic总线支持多少位的地址位宽,多少位数据位宽?
A: iic最低支持7bit的地址位宽,最多支持10bit的地址位宽,并且是面向字节流的串口协议,因此数据要求以8bit(帧)的形式进行发送。实际上7bit位宽的iic总线最多并不是支持128个设备,有16个地址是reserved或其他用处,实际是放开了112个普通地址。

 +++++

Q: iic协议的时序结构及信号是怎么样的?
A: iic支持多个master多个slave,当有多个master时,仲裁功能和时钟同步必须实现,这依赖链接到总线上的各个设备,并且总线上的各设备地址是唯一的,读写由控制字节的第8bit控制,正读负写(R/~W),典型的读写步骤是:

————————————————
读操作步骤:

1、master监听总线处于空闲状态,发起一个Start信号(scl为高的情况下,sda从高拉低),紧接着发出1byte的控制信号,包含slave地址,第八位置0表示写;

2、slave收到控制信号后判断是否与自身地址匹配,匹配即紧接着一个时钟发ack信号在sda上,sda置0;

3、master在sda线上写入要读的地址给slave,slave每字节回ack;

4、master写完要读的地址,再发送一个Start信号,同时再次发送1字节的控制信号,此时读写位置1,

5、slave回ack,比对控制信号地址后,明白此时是要读刚写入的相对地址的数据,开始再sda上逐字节发送数据,

6、master后续作为接收者每次会ack,同时控制传输的结束,要结束了回nack(sda置1),并再下一个始终发送End信号。

————————————————

写操作步骤

1、master监听总线处于空闲状态,发起一个Start信号(scl为高的情况下,sda从高拉低),紧接着发出1byte的控制信号,包含slave地址,第八位置0表示写;

2、slave收到控制信号后判断是否与自身地址匹配,匹配即紧接着一个时钟发ack信号在sda上,sda置0;

3、master在sda线上开始写入数据,slave每字节回ack;

4、master写完所有数据后,发送End信号到sda总线上。

_____________________________

 +++++

Q: iic协议10地址是怎么支持的?

A: 通常master在Start信号后跟了一个控制字节,包括7地址+1读写位,在使用10地址时,Start信号后两个byte都是控制信号,第一个byte为1111 0xx+0,xx为10地址的高两位,后续在跟上剩余的8bit地址位数,如果是master要读,同样也是先发写,再发Sr信号,后续跟一个字节的控制信号,为1111 0xx+1,xx为10地址的高两位,这样可以保证只有指定的slave可以完成应答。

+++++

Q: iic协议master是如何工作的?
A: master负责发起传输,结束传输,产生时钟信号。数据的传输字节数是没有限制的,每个字节的串行传输顺序必须的从MSB(最高有效位)先开始,大端序下就是先传输高位bit。

+++++

Q: iic协议的slave是如何工作的?
A: slave负责监听总线上的start和end信号,识别master发来的数据,每收到一个byte就在下个周期回一个ack(拉低sda)表示收到,或者一个nack表示拒绝

+++++

Q: master发送完一个byte后没有收到slave的ack怎么办?
A: master将会在下一个时钟发起一次end结束这次传输,或者重新发起一个start进行重新传输

+++++

Q: iic协议的仲裁是如何实现的?
A: 仲裁是多个master存在时必须实现的,仲裁是在sda上逐位进行,各个冲突的master在sda上边发送数据边监听数据,当某个master首次发送1但监听到0时,他便认为自己失去了总线控制,变放弃总线,监听下一次的end信号,如果master发送的数据一致甚至可以没有差错的在总线上发送完数据。

+++++

Q: 为什么SDA在SCL低电平期间才允许改变状态?
A: 因为当SCL处于高电平状态时,SDA拉低表示的是起始位,拉高表示的是停止位,所以当数据位中0和1出现时,如果在SCL高电平状态下SDA状态变化的话,就无法区分数据和起始、停止位。

+++++

Q: 什么是iic总线的时钟同步?

A:,,,(待补充)

 

参考文献:https://www.cnblogs.com/liujinggang/p/9656358.html



标签:slave,简介,总线,地址,master,sda,iic,i2c
From: https://www.cnblogs.com/zhangcheng2020/p/17375563.html

相关文章

  • 1.Ansiable简介
    1.ansible简介ansible是一种基于python开发的自动化运维工具,它只需要在服务端安装ansible,无需在每个客户端安装客户端程序,通过ssh的方式来进行客户端服务器的管理,基于模块来实现批量数据配置、批量设备部署以及批量命令执行。2.ansible工作原理大致的工作原理就是......
  • Mybatis-Plus 简介及入门案例
    Mybatis简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:https://www.baomidou.com/特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本......
  • 24 IIC(二)SMBus协议
    SMBus协议:http://www.smbus.org/specs/1.SMBus简介SMBus:SystemManageBus,系统管理总线SMBus是基于IIC协议发展而来,SMBus要求比IIC更加严格,是其子集2.SMBus与IIC的区别VDD的极限值不一样IIC:范围广SMBus:1.8v-5v时钟频率和clockstretingIIC:无限制SMBus:时钟频率最......
  • spring框架 简介
    spring实现了部分传统javaee规范,同时实现了自己的规范,成为了一种流行javaee框架,极大简化了传统ee的复杂性springboot的出现进一步简化了spring配置的复杂性,尽可能做到开箱即用。所以框架就是指非业务性代码的集成,比如身份验证,数据库处理都由spring交给专用的第三方jar处理,并返回处......
  • 若依框架简介
    其实叫若依框架不如叫若依模板,或者叫脚手架。spring支持集成第三方jar包的能力,若依框架选择最流行的多个jar提前进行了集成来完成了web初步开发工作并且提供了一个高度可定制化的可视化后台。还有一个特色功能就是代码自动生成,生成前端和后端代码。 ......
  • 贴个IIC的代码和MPU6050寄存器地址的文档(MOVE版)
    IIC代码:里面的UV_Delay()那几个要自己定义一下。还有那几个子函数也要自己定义在一个头文件里面。比如:#ifndef_IIC_H#define_IIC_H#defineUV_Delay()delay5us()#defineUV_SDA_SET()P2^0=1#defineUV_SDA_......
  • Django框架——cookie与session简介、django操作cookie与session、django中间件
    cookie与session简介"""回忆:HTTP协议四大特性 1.基于请求响应 2.基于TCP、IP作用于应用层之上的协议 3.无状态 不保存客户端的状态 4.无连接"""最开始的网站都不需要用户注册所有人来访问获取到的数据都是一样的随着互联网的发展很多网站需要指定当前用户的状态cook......
  • 【UML】UML简介
      接近半个月的学习,对UML有了初步的了解,知道了UML的九种图,这九种图在不同的时候使用,俗话说一图胜过前言万语。 很多朋友都知道软件制作过程中分为需求分析、系统分析与设计、系统实现、测试、维护五个阶段。而每个阶段就有对应的UML图,下面的图就展示了每个阶段所用的图一、......
  • 数据湖Iceberg-简介(1)
    文章目录Iceberg简介概述特性数据存储、计算引擎插件化实时流批一体数据表演化(TableEvolution)模式演化(SchemaEvolution)分区演化(PartitionEvolution)列顺序演化(SortOrderEvolution)隐藏分区(HiddenPartition)镜像数据查询(TimeTravel)支持事务(ACID)基于乐观锁的并发支持文件级数据......
  • 操作系统——简介
    操作系统操作系统是管理计算机硬件资源,控制其他程序运行并为用户提供交互操作界面的系统软件的集合。操作系统是计算机系统的关键组成部分,负责务。 系统简介操作系统(英语:OperatingSystem,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基......