集成电路互连总线I2C

上传人:优*** 文档编号:240447026 上传时间:2024-04-11 格式:PPT 页数:26 大小:751KB
返回 下载 相关 举报
集成电路互连总线I2C_第1页
第1页 / 共26页
集成电路互连总线I2C_第2页
第2页 / 共26页
集成电路互连总线I2C_第3页
第3页 / 共26页
点击查看更多>>
资源描述
集成电路互连总线集成电路互连总线I2C2021/7/11主要内容主要内容v1.1 I2C1.1 I2C总线通用知识总线通用知识v1.1.2 2 I2CI2C总线的硬件相关术语与典型电路总线的硬件相关术语与典型电路v1.3 I2C1.3 I2C总线数据通信协议概要总线数据通信协议概要v1.4 1.4 主机向从机读主机向从机读/写写1 1个字节数据的过程个字节数据的过程v1.5 1.5 关于关于I2CI2C的进一步讨论的进一步讨论2021/7/121.1 1.1 I2CI2C总线通用知识总线通用知识1.1.1 I2C1.1.1 I2C总线的历史概况与特点总线的历史概况与特点I2CI2C(Inter-Integrated CircuitInter-Integrated Circuit)总线标准的历史概况)总线标准的历史概况l1992年PHILIPS首次发布I2C总线规范Version1.0l1998年PHILIPS发布I2C总线规范Version2.0,至此标准模式和快速模式的I2C总线已经获得了广泛应用,标准模式传输速率为100kbps,快速模式400kbps。同时,I2C总线也由7位寻址发展到10位寻址,满足了更大寻址空间的需求l2001年PHILIPS又发布了I2C总线规范Version2.1,完善和扩展了I2C总线的功能,并提出了传输速率可达3.4Mbps的高速模式,这使得I2C总线能够支持现有及将来的高速串行传输,如EEPROM和Flash存储器等2021/7/13I2CI2C总线特点总线特点l在硬件上,二线制的I2C串行总线使得各IC只需最简单的连接,而且总线接口都集成在IC中,不需另加总线接口电路lI2C总线还支持多主控(multi-mastering)l串行的8位双向数据传输位速率在标准模式下可达100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbpsl连接到相同总线的IC数量只受到总线最大电容(400pf)的限制。但如果在总线中加上82B715总线远程驱动器可以把总线电容限制扩展十倍,传输距离可增加到15m2021/7/141.2 I2C1.2 I2C总线的硬件相关术语与典型电路总线的硬件相关术语与典型电路I2CI2C总线硬件相关术语总线硬件相关术语l主机(主控器):在I2C总线中,提供时钟信号,对总线时序进行控制的器件l从机(被控器):在I2C系统中,除主机外的其它设备均为从机l地址:每个I2C器件都有自己的地址,以供自身在从机模式下使用l发送器:发送数据到总线的器件l接收器:从总线接收数据的器件lSDA(Serial DAta):串行数据线lSCL(Serial CLock):串行时钟线2021/7/15I2CI2C总线的典型电路总线的典型电路 下图给出一个由下图给出一个由MCUMCU作为主机,通过作为主机,通过I2CI2C总线带总线带3 3个从个从机的单主机机的单主机I2CI2C总线系统。这是最常用、最典型的总线系统。这是最常用、最典型的I2CI2C总线总线连接方式连接方式 I2CI2C总线的典型连接总线的典型连接2021/7/161.3 I2C1.3 I2C总线数据通信协议概要总线数据通信协议概要I2CI2C总线上数据的有效性总线上数据的有效性 I2CI2C总线以串行方式传输数据,从数据字节的最高位开始总线以串行方式传输数据,从数据字节的最高位开始传送,每个数位在传送,每个数位在SCLSCL上都有一个时钟脉冲相对应。在一个上都有一个时钟脉冲相对应。在一个时钟周期内,当时钟线高电平时,数据线上必须保持稳定的时钟周期内,当时钟线高电平时,数据线上必须保持稳定的逻辑电平状态,高电平为数据逻辑电平状态,高电平为数据1 1,低电平为数据,低电平为数据0 0。当时钟信。当时钟信号为低电平时,才允许数据线上的电平状态变化号为低电平时,才允许数据线上的电平状态变化I2CI2C总线上数据的有效性总线上数据的有效性2021/7/17I2CI2C总线上的信号类型总线上的信号类型l开始信号(START):如下(图1)当SCL为高电平时,SDA由高电平向低电平跳变,产生开始信号。当总线空闲的时候(例如没有主动设备在使用总线,即SDA和SCL都处于高电平),主机通过发送开始信号(START)建立通信l停止信号(STOP):如下(图1)当SCL为高电平时,SDA由低电平向高电平的跳变,产生停止信号。主机通过发送停止信号,结束时钟信号和数据通信。SDA和SCL都将被复位为高电平状态 l重新开始信号(Repeated START):在I2C总线上,由主机发送一个开始信号启动一次通信后,在首次发送停止信号之前,主机通过发送重新开始信号,可以转换与当前从机的通信模式,或是切换到与另一个从机通信。如下(图1)所示,当SCL为高电平时,SDA由高电平向低电平跳变,产生重新开始信号,它的本质就是一个开始信号2021/7/18图图1 1:开始、重新开始和停止信号:开始、重新开始和停止信号2021/7/19l应答信号(应答信号(A A):接收数据的):接收数据的ICIC在接收到在接收到8 8位数据后,向发送数据的位数据后,向发送数据的ICIC发出的特定的低电平脉冲。每一个数据字节后面都要跟一位应答信号,发出的特定的低电平脉冲。每一个数据字节后面都要跟一位应答信号,表示已收到数据表示已收到数据I2CI2C总线的应答信号总线的应答信号2021/7/110I2CI2C总线上数据传输格式总线上数据传输格式 一般情况下,一个标准的一般情况下,一个标准的I2CI2C通信由四部分组成:开始信号、从机地址通信由四部分组成:开始信号、从机地址传输、数据传输和结束信号。传输、数据传输和结束信号。I2CI2C总线上传送的每一个字节均为总线上传送的每一个字节均为8 8位,首先位,首先发送的数据位为最高位,每传送一个字节后都必须跟随一个应答位,每次发送的数据位为最高位,每传送一个字节后都必须跟随一个应答位,每次通信的数据字节数是没有限制的;在全部数据传送结束后,由主机发送停通信的数据字节数是没有限制的;在全部数据传送结束后,由主机发送停止信号,结束通信止信号,结束通信 I2CI2C总线的数据传输格式总线的数据传输格式2021/7/111I2CI2C总线寻址约定总线寻址约定l为了消除I2C总线系统中主控器与被控器的地址选择线,最大限度地简化总线连接线,I2C总线采用了独特的寻址约定,规定了起始信号后的第一个字节为寻址字节,用来寻址被控器件,并规定数据传送方向。l在I2C总线系统中,寻址字节由被控器的7位地址位(D7D1位)和一位方向位(D0位)组成。方向位为0时,表示主控器将数据写入被控器,为1时表示主控器从被控器读取数据。主控器发送起始信号后,立即发送寻址字节,这时总线上的所有器件都将寻址字节中的7位地址与自己器件地址比较。如果两者相同,则该器件认为被主控器寻址,并发送应答信号,被控器根据数据方向位(R/W)确定自身是作为发送器还是接收器。2021/7/1121.4 1.4 主机向从机读主机向从机读/写写1 1个字节数据的过程个字节数据的过程主机向从机写主机向从机写1 1个字节数据的过程个字节数据的过程 主机要向从机写主机要向从机写1 1个字节数据时,主机首先产生个字节数据时,主机首先产生STARTSTART信号,然后紧信号,然后紧跟着发送一个从机地址,这个地址共有跟着发送一个从机地址,这个地址共有7 7位,紧接着的第位,紧接着的第8 8位是数据方向位位是数据方向位(R/WR/W),),0 0表示主机发送数据(写),表示主机发送数据(写),1 1表示主机接收数据(读),这时表示主机接收数据(读),这时候主机等待从机的应答信号(候主机等待从机的应答信号(ACKACK),当主机收到应答信号时,发送要访),当主机收到应答信号时,发送要访问的地址,继续等待从机的响应信号,当主机收到响应信号时,发送问的地址,继续等待从机的响应信号,当主机收到响应信号时,发送1 1个个字节的数据,继续等待从机的响应信号,当主机收到响应信号时,产生停字节的数据,继续等待从机的响应信号,当主机收到响应信号时,产生停止信号,结束传送过程。止信号,结束传送过程。主机向从机写数据主机向从机写数据2021/7/113主机从从机读主机从从机读1 1个字节数据的过程个字节数据的过程 当主机要从从机读当主机要从从机读1 1个字节数据时,主机首先产生个字节数据时,主机首先产生STARTSTART信号,然后信号,然后紧跟着发送一个从机地址,注意此时该地址的第紧跟着发送一个从机地址,注意此时该地址的第8 8位为位为0 0,表明是向从机写,表明是向从机写命令,这时候主机等待从机的应答信号(命令,这时候主机等待从机的应答信号(ACKACK),当主机收到应答信号时,),当主机收到应答信号时,发送要访问的地址,继续等待从机的应答信号,当主机收到应答信号后,发送要访问的地址,继续等待从机的应答信号,当主机收到应答信号后,主机要改变通信模式,所以主机发送重新开始信号,然后紧跟着发送一个主机要改变通信模式,所以主机发送重新开始信号,然后紧跟着发送一个从机地址,注意此时该地址的第从机地址,注意此时该地址的第8 8位为位为1 1,表明将主机设置成接收模式开始,表明将主机设置成接收模式开始读取数据,这时主机等待从机的应答信号,当主机收到应答信号时,就可读取数据,这时主机等待从机的应答信号,当主机收到应答信号时,就可以接收以接收1 1个字节的数据,当接收完成后,主机发送非应答信号,表示不再个字节的数据,当接收完成后,主机发送非应答信号,表示不再接收数据,主机进而产生停止信号,结束传送过程。接收数据,主机进而产生停止信号,结束传送过程。主机从从机读数据主机从从机读数据2021/7/114*AW60 AW60的的I2CI2C模块寄存器模块寄存器 AW60AW60的的I2CI2C模块相关寄存器模块相关寄存器寄存器名称寄存器名称缩写缩写地址地址访问权限访问权限基本功能基本功能地址寄存器地址寄存器I2C1AI2C1A0 x000000580 x00000058读读/写写设置从机地址设置从机地址分频寄存器分频寄存器I2C1FI2C1F0 x000000590 x00000059读读/写写设置设置I2CI2C模块的模块的工作频率等工作频率等控制寄存器控制寄存器I2C1CI2C1C0 x0000005A0 x0000005A读读/写写设置传输格式、设置传输格式、中断使能等中断使能等状态寄存器状态寄存器I2C1SI2C1S0 x0000005B0 x0000005B读读/写写表明表明I2CI2C模块的模块的工作状态工作状态数据数据I/OI/O寄存器寄存器I2C1DI2C1D0 x0000005C0 x0000005C读读/写写收发数据收发数据2021/7/115I2CI2C地址寄存器地址寄存器 I2CI2C地址寄存器(地址寄存器(I2C Address RegisterI2C Address Register,I2C1AI2C1A)lD7D1ADR7ADR1为MCU作为从机时的从机地址。l当主机在I2C总线上发送从机地址寻址从机,MCU作为从机设备时,将该地址与I2C1A的高7位比较,查看自己是否被主机选中lD0保留位。该位是为了将来的兼容性而设置的保留位,读出总是0。写I2C1A时,D0位不使用数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0数据数据地址地址0/0/不用不用复位复位0 00 00 00 00 00 00 00 02021/7/116I2CI2C分频寄存器分频寄存器 I2CI2C分频寄存器(分频寄存器(I2C Frequency Divider RegisterI2C Frequency Divider Register,I2C1FI2C1F)用于产)用于产生相应的分频因子生相应的分频因子 lI2C分频寄存器的高2位MULT定义了增频因子a,a和SCL的分频因子配合使用,产生I2C波特率。当MULT为00、01、10时,a的值分别为1、2、4;MULT=11不使用lI2C的低6位定义了I2C时钟速率(ICR),这6位用来定义SCL分频因子b和SDA保持值,分频因子b乘以增频因子a的值用于产生I2C总线波特率,公式如下:I2C总线波特率=CPU总线频率(Hz)/(ab)lSDA保持时间是从SCL线上时钟的下降沿开始到SDA线上数据稳定这段时间,SDA保持值就是用来计算SDA保持时间的,公式如下:SDA SDA保持时间保持时间=CPU=CPU总线周期总线周期SDASDA保持值保持值数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义MULTICR复位复位000000002021/7/117 ICR ICR中不同的内容对应着不同的中不同的内容对应着不同的SCLSCL分频因子值和不同的分频因子值和不同的SDASDA保持值,下保持值,下面举例说明面举例说明I2CI2C总线波特率和总线波特率和SDASDA保持时间计算方法保持时间计算方法 设设CPUCPU总线频率为总线频率为8MHz8MHz,MULTMULT设置为设置为01(a=2)01(a=2),要想得到,要想得到100kbps100kbps的的I2CI2C总总线波特率,则计算过程如下:线波特率,则计算过程如下:根据公式:根据公式:I2CI2C总线波特率总线波特率=CPU=CPU总线频率总线频率(Hz)/(ab)(Hz)/(ab),将已知相应值带入,将已知相应值带入得:得:100000=8000000/(2b)100000=8000000/(2b),b=40b=40根据根据SCLSCL分频因子分频因子b b的值,在表的值,在表10-210-2中查找相应的中查找相应的ICRICR值和值和SDASDA保持值,可以保持值,可以看到,当看到,当b=40b=40时,时,ICR=$07ICR=$07或或$0B$0B,而相应的,而相应的SDASDA保持值保持值=10=10或或9 9根据公式:根据公式:SDASDA保持时间保持时间=CPU=CPU总线周期总线周期SDASDA保持值,算得:保持值,算得:ICR=$07ICR=$07,SDASDA保持值保持值=10=10时,时,SDASDA保持时间保持时间=1/800000010=1.25s=1/800000010=1.25s ICR=$0B ICR=$0B,SDASDA保持值保持值=9=9时,时,SDASDA保持时间保持时间=1/80000009=1.125s=1/80000009=1.125s较长的较长的SDASDA保持时间,会降低通信速率,但同时也增加了稳定性,并且能保持时间,会降低通信速率,但同时也增加了稳定性,并且能延长设备间的通信距离。编程时应以通信的可靠性为原则,选择合适的延长设备间的通信距离。编程时应以通信的可靠性为原则,选择合适的SDASDA保持时间来确定保持时间来确定ICRICR值。如程序中选用值。如程序中选用SDASDA保持值保持值=9=9,就能得到可靠的,就能得到可靠的通信,那么将通信,那么将ICRICR设定为设定为$0B$0B即可;如果当即可;如果当SDASDA保持值保持值=9=9时通信不稳,就选时通信不稳,就选择另一个为择另一个为1010的值进行实验,若通信仍不稳定,在保持的值进行实验,若通信仍不稳定,在保持I2CI2C总线频率不变总线频率不变的前提下,可通过改变的前提下,可通过改变MULTMULT位来调整位来调整SDASDA保持时间保持时间2021/7/118I2CI2C控制寄存器控制寄存器 I2CI2C控制寄存器(控制寄存器(I2C Control RegisterI2C Control Register,I2C1CI2C1C)lD7I2CEN(I2C Enable)为I2C使能位lD6I2CIE(I2C Interrupt Enable)为I2C中断请求允许位lD5MST(Master Mode Select)为主模式选择位lD4TX(Transmit Mode Select)为发送模式选择位lD3TXAK(Transmit Acknowledge Enable)为发送应答使能位lD2RSTA(Repeat START)位,当MCU在主机模式下,向该位写1,将产生一个重新开始信号。该位读出时总是0lD1D0读I2C1C时,D1、D0位为0;写I2C1C时,D1、D0位不使用数据数据位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义I2CENI2CIEMSTTXTXAK0/RSTA0/0/不不用用0/0/不用不用复位复位0 00 00 00 00 00 00 00 02021/7/119I2CI2C状态寄存器状态寄存器 I2CI2C状态寄存器(状态寄存器(I2C Status RegisterI2C Status Register,I2C1SI2C1S)lD7TCF(Transfer Complete Flag)为发送完成标志位lD6IAAS(Addressed as a Slave)为地址被选择标志位lD5BUSY(Bus Busy)为总线忙标志位lD4ARBL(Arbitration Lost)为仲裁丢失标志位lD3读I2C1S时,D3位为0;写I2C1S时,D3位不使用lD2SRW(Slave Read/Write)为从机读写标志位lD1I2CIF(I2C Interrupt Flag)为I2C中断标志位。I2CIF位可读可写lD0RXAK(Receive Acknowledge)为接收应答标志位数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0读读TCFTCFIAASIAASBUSYBUSYARBLARBL0 0SRWSRWI2CIFI2CIFRXAKRXAK写写未定义未定义未定义未定义未定义未定义未定义未定义未定义未定义复位复位0 00 00 00 00 00 00 00 02021/7/120I2C I/OI2C I/O数据寄存器数据寄存器 I2C I/OI2C I/O数据寄存器(数据寄存器(I2C Data I/O RegisterI2C Data I/O Register,I2C1DI2C1D)在主机发送模式下,将数据写入在主机发送模式下,将数据写入I2C1DI2C1D就初始化了数据发送,先发送就初始化了数据发送,先发送数据字节的最高位。在主机接收模式下,读该寄存器,准备接收从机数据字节的最高位。在主机接收模式下,读该寄存器,准备接收从机发往总线上的数据字节。该寄存器在发往总线上的数据字节。该寄存器在MCUMCU为从机模式时仍具有相同功为从机模式时仍具有相同功能。值得注意的是,当能。值得注意的是,当MCUMCU要从主接收模式变为主发送模式时,应在要从主接收模式变为主发送模式时,应在从从I2C1DI2C1D寄存器读取数据之前,进行模式转换。寄存器读取数据之前,进行模式转换。数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0数据数据数据数据0/0/不用不用复位复位0 00 00 00 00 00 00 00 02021/7/1211.5 1.5 关于关于I2CI2C的进一步讨论的进一步讨论1.5.1 1.5.1 仲裁程序仲裁程序 I2CI2C总线是多主机总线,允许多个主机连接到该总线上。总线是多主机总线,允许多个主机连接到该总线上。如果如果2 2个或者个或者2 2个以上主机试图在同一时刻控制总线,则时钟同个以上主机试图在同一时刻控制总线,则时钟同步程序使用在每个主设备中集成的硬件定时器来确定总线时钟步程序使用在每个主设备中集成的硬件定时器来确定总线时钟 时钟同步时钟同步2021/7/122 由数据仲裁程序决定竞争的主设备的优先级。当另一个由数据仲裁程序决定竞争的主设备的优先级。当另一个主设备发送逻辑主设备发送逻辑0 0,而这个总线主设备发送,而这个总线主设备发送1 1时,该主设备将时,该主设备将仲裁失败。仲裁失败的主设备立即转换为从设备接收模式,仲裁失败。仲裁失败的主设备立即转换为从设备接收模式,并停止驱动并停止驱动SDASDA输出,如下图,在这种情况下,由主设备到输出,如下图,在这种情况下,由主设备到从设备的转变,不产生从设备的转变,不产生STOPSTOP条件条件仲裁程序仲裁程序2021/7/1231.5.2 1.5.2 数据传输同步交换数据传输同步交换 时钟同步机制可用作数据传输的同步交换(时钟同步机制可用作数据传输的同步交换(HandshakeHandshake)1.5.3 SPI1.5.3 SPI与与I2CI2C的比较的比较SPISPI SPI SPI是一种四线制串行总线接口,分别为时钟引脚是一种四线制串行总线接口,分别为时钟引脚SPSCKSPSCK、主入从出引脚主入从出引脚MISOMISO、主出从入引脚、主出从入引脚MOSIMOSI、从机选择引脚。、从机选择引脚。其工作在主其工作在主/从模式。主机是时钟提供者,可发起读从机或从模式。主机是时钟提供者,可发起读从机或写从机操作,控制完成一次主机与从机的对话。当总线上写从机操作,控制完成一次主机与从机的对话。当总线上存在多个从机时,要发起一次传输,主机将该从机的选择存在多个从机时,要发起一次传输,主机将该从机的选择线拉低,然后分别通过线拉低,然后分别通过MOSIMOSI和和MISOMISO启动数据发送或接收。启动数据发送或接收。发送和接收数据的寄存器相互独立而实现双缓存操作,可发送和接收数据的寄存器相互独立而实现双缓存操作,可以实现全双工等等以实现全双工等等2021/7/124I2CI2C总线总线 I2CI2C是一种二线制串行总线接口,分别为开漏是一种二线制串行总线接口,分别为开漏SCLSCL串行时串行时钟和钟和SDASDA串行数据,工作在主串行数据,工作在主/从模式。主机为时钟源。数据从模式。主机为时钟源。数据传输是双向的,其方向取决于读传输是双向的,其方向取决于读/写位的状态。每个从机拥写位的状态。每个从机拥有一个唯一的有一个唯一的7 7或或1010位地址。主机通过一个起始位发起一次位地址。主机通过一个起始位发起一次传输,通过一个停止位终止一次传输。起始位之后为唯一的传输,通过一个停止位终止一次传输。起始位之后为唯一的从器件地址,总线上所有的从机均可收到此地址,只有收到从器件地址,总线上所有的从机均可收到此地址,只有收到的地址与从机本身地址相同时再予以响应。因为只有一条数的地址与从机本身地址相同时再予以响应。因为只有一条数据线,故不可以实现全双工等据线,故不可以实现全双工等总之,总之,I2CI2C需要有双向需要有双向I/OI/O的支持,而且使用上拉电阻,的支持,而且使用上拉电阻,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPISPI实现要简单一些。实现要简单一些。I2CI2C的速度比的速度比SPISPI慢一点,协议比慢一点,协议比SPISPI复复杂一点,但是连线也比标准的杂一点,但是连线也比标准的SPISPI要少。在实际应用中,应要少。在实际应用中,应该根据需要使用该根据需要使用SPISPI接口或者是接口或者是I2CI2C接口接口2021/7/125 结束束语若有不当之处,请指正,谢谢!若有不当之处,请指正,谢谢!
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!