首页 > 其他分享 >IIC协议

IIC协议

时间:2024-03-19 15:25:40浏览次数:23  
标签:协议 SCL 主机 总线 发送 从机 IIC

学习资料来源于网络和https://www.bilibili.com/video/BV14o4y1Y7A1?p=7&vd_source=432ba293ecfc949a4174ab91ccc526d6

IIC基本术语:

IIC总线是Philips公司在八十年代推出的一种串行、半双工总线。 主要用于近距离、低速的芯片之前的通信;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步; 0 IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机;主机有权发起和结束一次通信,而从机只能被动被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有唯一的地址,且每个器件都可以作为主机,也可以作为从机(同一时刻只能有一个主机),总线上的器件增加或者删除不影响其他器件正常工作,IIC总线在通信时总线上发送数据为发送器,接收数据的器件为接收器(如上图)。 下面是 I2C 总线的一些特征:
  • 只要求两条总线线路 一条串行数据线 SDA 和一条串行时钟线 SCL
  • •每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机 从机关系软件设定地址
  • 主机可以作为主机发送器或主机接收器
  • 它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏
  • 串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达 3.4Mbit/s
 

IIC总线通信过程:

1、主机发送起始信号启用总线 2、主机发送一个字节数据指明从机地址和后续字节的传送方向 3、被寻址的从机发送应答信号回应主机 4、发送器发送一个字节数据 5、接收器发送应答信号回应发送器 6、循环步骤4-5 7、通信完成后主机发送停止信号释放总线  

IIC总线寻址方式:

IIC总线上传输的数据是广义的,既包含地址,又包含真正的数据 主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向(如下图),'0'表示主机发送数据,'1'表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后根据第8位将自己定位发送器或接收器 0  

起始信号和停止信号:

当IIC总线处于空闲的时候,SDA和SCL都是高电平 0 SCL为高电平时,SDA由高变低表示起始信号 SCL为高电平时,SDA由低变高表示停止信号 起始信号和停止信号都是由主机发出,起始信号产生之后总线处于占用状态,停止信号产生后总线处于空闲状态  

字节传送和应答:

IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位(UART先低后高),发送器发送完一个字节数据后接收器必须发送1位应答信号来回应发送器,即一帧共有九位。 0 前8bit是由发送器发的,7bit地址,1bit表发送还是接收,第9bit是接收器发的,高电平表未响应,低电平表示响应  

同步信号:

IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。 0 IIC总线通信时每一个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器,即一帧有9位 0  

典型IIC时序:

1、主机一直向从机发送数据 0   2、从机一直向主机发送数据 0 阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送;A表示应答,A非表示非应答,S表示起始信号,P表示终止信号   3、主机先向从机发送数据,然后从机再想主机发送数据 0 可以看到,主机向从机发送信号结束之后没有发送停止P信号  

IIC时钟同步与仲裁:

在单主设备中,不需要时钟同步和仲裁。而在多设备时,多个主设备可以同时在空闲的总线上开始发送数据,这时就需要仲裁决定哪一个来控制总线并完成它的数据传输,有时候也需要时钟同步来协同设备间的工作。而这正是通过时钟同步和仲裁来完成的。 时钟同步: 有的时候,主机的速度快于从机的速度,或者从机需要处理其他事情而不能及时地从主机接收数据或者向主机发送数据。如果从设备希望主设备降低传输速率,可以通过将SCL主动拉低,延长SCL低电平时间的方法来通知主设备。当主设备下一次传输时发现SCL电平被拉低时,就进入等待,直到从设备完成操作并释放SCL线。这就要使用时钟同步来完成。 时钟同步是通过连接到SCL总线的IIC接口“线与”实现。 SCL线上的低电平时间是由时钟低电平最长的器件决定,SCL的高电平则是由高电平时间最短的期间决定。 时钟同步解决了IIC总线设备间的速度同步 0 上图是IIC两主机的仲裁过程,I2C总线上可能在某一时刻有两个主控设备要同时向总线发送数据,这种情况叫做总线竞争。I2C总线具有多主控能力,可以对发生在SDA线上的总线竞争进行仲裁,其仲裁原则是这样的: 假设主控器1要发送的数据DATA1为“101 ……”;主控器2要发送的数据DATA2为“1001 ……”总线被启动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,他们就会继续占用总线。在这种情况下总线还是得不到仲裁。当主控器1发送第3位数据“1”时(主控器2发送“0” ),由于“线与”的结果SDA上的电平为“0”,这样当主控器1检测自己的输出电平时,就会测到一个与自身不相符的“0”电平。这时主控器1只好放弃对总线的控制权;因此主控器2就成为总线的唯一主宰者。不难看出:
  1. 对于整个仲裁过程主控器1和主控器2都不会丢失数据;
  2. 各个主控器没有对总线实施控制的优先级别,他们遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。

标签:协议,SCL,主机,总线,发送,从机,IIC
From: https://www.cnblogs.com/lethe1203/p/18083001

相关文章

  • wireguard协议参数说明
    简介Wireguard是一款快速现代的VPN,旨在提供易用性和高性能。其协议开源且相对简单,使得代码便于开发和审查。wireguard简单来说是一个三层p2p安全隧道,底层传输使用udp;用编程语言将该协议写成软件叫做实现,常见的有Linux内核中的实现,或者其他用户空间的实现,比如wireguard-go或者wir......
  • CC2530 中的ZigBee协议栈
    ###CC2530中得ZigBee协议栈1.何为协议栈ZigBee协议栈将各个层的协议集合在一起,并以函数的形式实现,并且向用户提供接口,用户能够直接调用。它本身就为一个工程。2.如何使用开始组网,通过调用协议栈的组网函数等来实现网络的建立以及其他节点的加入网络;发送数据,节点通过调用......
  • ONVIF协议:推动安防行业标准化与协同性的重要力量
    ​在数字化和智能化的浪潮中,安防行业正面临着前所未有的发展机遇。作为网络视频产品的重要接口标准,ONVIF协议(OpenNetworkVideoInterfaceForum,开放型网络视频接口论坛)在推动安防行业的标准化与协同性方面发挥着重要作用。目前,网络摄像机的标准协议,国标标准上有三大类:ONVIF/PSIA......
  • 前端基础之HTTP协议介绍
    HTTP协议介绍HTTP协议(HyperTextTransferProtocol,超文本传输协议),用来规定服务端和浏览器之间的数据交互的格式,也是用于从万维网(WWW:WorldWideWeb)服务器传输超文本到本地浏览器的传送协议。该协议构建于TCP/IP协议族之上,属于应用层协议。主要用于传输与超文本相关的资源文件......
  • 传输层协议
    tcp/ip模型应用层传输层网络层接口层tcp/ip协议族tcp(传输控制协议):面向连接,在传递数据之前,会测试主机的联通性,如果通才会传输真实数据udp(用户数据报协议):无连接,不会测试主机的联通性,直接传递真实数据面向连接网络协议:是指通信双方之间在进行通信之前要先建立连......
  • AMBA协议
    AMBA(AdvancedMicrocontrollerBusArchitecutre,高级微控制器总线架构)协议由arm公司开发,是一组芯片通信协议的规范,广泛用于SoC设计中。主要包括以下3个部分:APB:advancedperipheralbus高级外设总线AHB:advancedhigh-performancebus高级高性能总线AXI:advancedexte......
  • 63. 不同路径 IIc
    intuniquePathsWithObstacles(int**obstacleGrid,intobstacleGridSize,int*obstacleGridColSize){if(obstacleGridSize==0)return0;intm=obstacleGridSize,n=*obstacleGridColSize;int**dp=(int**)malloc(sizeof(int*)*m);for(inti=0;i<m;......
  • 15. SPI通信协议
    一、SPI通信协议简介  SPI是SerialPeripheralinterface缩写,顾名思义就是串行外围设备接口。SPI通信协议是Motorola公司首先在其MC68HCXX系列处理器上定义的。SPI接口是一种高速的全双工同步的通信总线。SCK(SerialClock)时钟信号,由主设备产生。MOSI(MasterOut/......
  • 为什么 HTTP3.0 使用 UDP 协议?
    HTTP2.0和TCP的关系HTTP2.0是2015年推出的,还是比较年轻的,其重要的二进制分帧协议、多路复用、头部压缩、服务端推送等重要优化使HTTP协议真正上了一个新台阶。像谷歌这种重要的公司并没有满足于此,而且想继续提升HTTP的性能,花最少的时间和资源获取极致体验。那肯定要问HTTP2.0......
  • HTTPS 协议
    深入了解HTTPS协议在当今数字化时代,网络安全是至关重要的。随着网络攻击日益增多,保护数据的安全和隐私变得尤为重要。HTTPS(HypertextTransferProtocolSecure)作为一种保护网络通信安全的协议,正日益受到重视。本文将深入探讨HTTPS协议的工作原理、优势以及实施方法。1.......