集成电路互连总线I2Cppt课件_第1页
集成电路互连总线I2Cppt课件_第2页
集成电路互连总线I2Cppt课件_第3页
集成电路互连总线I2Cppt课件_第4页
集成电路互连总线I2Cppt课件_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、12主要内容主要内容v1.1 I2C1.1 I2C总线通用知识总线通用知识v1.2 1.2 I2CI2C总线的硬件相关术语与典型电路总线的硬件相关术语与典型电路v1.3 I2C1.3 I2C总线数据通信协议概要总线数据通信协议概要v1.4 1.4 主机向从机读主机向从机读/ /写写1 1个字节数据的过程个字节数据的过程v1.5 1.5 关于关于I2CI2C的进一步讨论的进一步讨论31.1 1.1 I2CI2C总线通用知识总线通用知识1.1.1 I2C1.1.1 I2C总线的历史概况与特点总线的历史概况与特点I2CI2C(Inter-Integrated CircuitInter-Integra

2、ted Circuit)总线标准的历史概况)总线标准的历史概况l 1992年PHILIPS首次发布I2C总线规范Version1.0l 1998年PHILIPS发布I2C总线规范Version2.0,至此标准模式和快速模式的I2C总线已经获得了广泛应用,标准模式传输速率为100kbps,快速模式400kbps。同时,I2C总线也由7位寻址发展到10位寻址,满足了更大寻址空间的需求l 2001年PHILIPS又发布了I2C总线规范Version2.1,完善和扩展了I2C总线的功能,并提出了传输速率可达3.4Mbps的高速模式,这使得I2C总线能够支持现有及将来的高速串行传输,如EEPROM和Fl

3、ash存储器等4I2CI2C总线特点总线特点l 在硬件上,二线制的I2C串行总线使得各IC只需最简单的连接,而且总线接口都集成在IC中,不需另加总线接口电路l I2C总线还支持多主控(multi-mastering)l 串行的8位双向数据传输位速率在标准模式下可达100kbps,快速模式下可达400kbps,高速模式下可达3.4Mbpsl 连接到相同总线的IC数量只受到总线最大电容(400pf)的限制。但如果在总线中加上82B715总线远程驱动器可以把总线电容限制扩展十倍,传输距离可增加到15m51.2 I2C1.2 I2C总线的硬件相关术语与典型电路总线的硬件相关术语与典型电路I2CI2C总

4、线硬件相关术语总线硬件相关术语l 主机(主控器):在I2C总线中,提供时钟信号,对总线时序进行控制的器件l 从机(被控器):在I2C系统中,除主机外的其它设备均为从机l 地址:每个I2C器件都有自己的地址,以供自身在从机模式下使用l 发送器:发送数据到总线的器件l 接收器:从总线接收数据的器件l SDA(Serial DAta):串行数据线l SCL(Serial CLock):串行时钟线6I2CI2C总线的典型电路总线的典型电路 下图给出一个由下图给出一个由MCUMCU作为主机,通过作为主机,通过I2CI2C总线带总线带3 3个从机的单主机个从机的单主机I2CI2C总线系统。总线系统。这是最

5、常用、最典型的这是最常用、最典型的I2CI2C总线连接方式总线连接方式 I2CI2C总线的典型连接总线的典型连接71.3 I2C1.3 I2C总线数据通信协议概要总线数据通信协议概要I2CI2C总线上数据的有效性总线上数据的有效性 I2CI2C总线以串行方式传输数据,从数据字节的最高位开始传送,每个数位在总线以串行方式传输数据,从数据字节的最高位开始传送,每个数位在SCLSCL上都上都有一个时钟脉冲相对应。在一个时钟周期内,当时钟线高电平时,数据线上必须保持稳定有一个时钟脉冲相对应。在一个时钟周期内,当时钟线高电平时,数据线上必须保持稳定的逻辑电平状态,高电平为数据的逻辑电平状态,高电平为数据

6、1 1,低电平为数据,低电平为数据0 0。当时钟信号为低电平时,才允许数据。当时钟信号为低电平时,才允许数据线上的电平状态变化线上的电平状态变化I2CI2C总线上数据的有效性总线上数据的有效性8I2CI2C总线上的信号类型总线上的信号类型l 开始信号(START):如下(图1)当SCL为高电平时,SDA由高电平向低电平跳变,产生开始信号。当总线空闲的时候(例如没有主动设备在使用总线,即SDA和SCL都处于高电平),主机通过发送开始信号(START)建立通信l 停止信号(STOP):如下(图1)当SCL为高电平时,SDA由低电平向高电平的跳变,产生停止信号。主机通过发送停止信号,结束时钟信号和数

7、据通信。SDA和SCL都将被复位为高电平状态 l 重新开始信号(Repeated START):在I2C总线上,由主机发送一个开始信号启动一次通信后,在首次发送停止信号之前,主机通过发送重新开始信号,可以转换与当前从机的通信模式,或是切换到与另一个从机通信。如下(图1)所示,当SCL为高电平时,SDA由高电平向低电平跳变,产生重新开始信号,它的本质就是一个开始信号9图图1 1:开始、重新开始和停止信号:开始、重新开始和停止信号10l应答信号(应答信号(A A):接收数据的):接收数据的ICIC在接收到在接收到8 8位数据后,向发送数据的位数据后,向发送数据的ICIC发出的特定的低发出的特定的低

8、电平脉冲。每一个数据字节后面都要跟一位应答信号,表示已收到数据电平脉冲。每一个数据字节后面都要跟一位应答信号,表示已收到数据I2CI2C总线的应答信号总线的应答信号11I2CI2C总线上数据传输格式总线上数据传输格式 一般情况下,一个标准的一般情况下,一个标准的I2CI2C通信由四部分组成:开始信号、从机地址传输、数据传输和通信由四部分组成:开始信号、从机地址传输、数据传输和结束信号。结束信号。I2CI2C总线上传送的每一个字节均为总线上传送的每一个字节均为8 8位,首先发送的数据位为最高位,每传送一位,首先发送的数据位为最高位,每传送一个字节后都必须跟随一个应答位,每次通信的数据字节数是没有

9、限制的;在全部数据传送个字节后都必须跟随一个应答位,每次通信的数据字节数是没有限制的;在全部数据传送结束后,由主机发送停止信号,结束通信结束后,由主机发送停止信号,结束通信 I2CI2C总线的数据传输格式总线的数据传输格式12I2CI2C总线寻址约定总线寻址约定l 为了消除I2C总线系统中主控器与被控器的地址选择线,最大限度地简化总线连接线,I2C总线采用了独特的寻址约定,规定了起始信号后的第一个字节为寻址字节,用来寻址被控器件,并规定数据传送方向。l 在I2C总线系统中,寻址字节由被控器的7位地址位(D7D1位)和一位方向位(D0位)组成。方向位为0时,表示主控器将数据写入被控器,为1时表示

10、主控器从被控器读取数据。主控器发送起始信号后,立即发送寻址字节,这时总线上的所有器件都将寻址字节中的7位地址与自己器件地址比较。如果两者相同,则该器件认为被主控器寻址,并发送应答信号,被控器根据数据方向位(R/W)确定自身是作为发送器还是接收器。131.4 1.4 主机向从机读主机向从机读/ /写写1 1个字节数据的过程个字节数据的过程主机向从机写主机向从机写1 1个字节数据的过程个字节数据的过程 主机要向从机写主机要向从机写1 1个字节数据时,主机首先产生个字节数据时,主机首先产生STARTSTART信号,然后紧跟着发送一个从机地址,信号,然后紧跟着发送一个从机地址,这个地址共有这个地址共有

11、7 7位,紧接着的第位,紧接着的第8 8位是数据方向位(位是数据方向位(R/WR/W),),0 0表示主机发送数据(写),表示主机发送数据(写),1 1表表示主机接收数据(读),这时候主机等待从机的应答信号(示主机接收数据(读),这时候主机等待从机的应答信号(ACKACK),当主机收到应答信号时,),当主机收到应答信号时,发送要访问的地址,继续等待从机的响应信号,当主机收到响应信号时,发送发送要访问的地址,继续等待从机的响应信号,当主机收到响应信号时,发送1 1个字节的数个字节的数据,继续等待从机的响应信号,当主机收到响应信号时,产生停止信号,结束传送过程。据,继续等待从机的响应信号,当主机收

12、到响应信号时,产生停止信号,结束传送过程。主机向从机写数据主机向从机写数据14主机从从机读主机从从机读1 1个字节数据的过程个字节数据的过程 当主机要从从机读当主机要从从机读1 1个字节数据时,主机首先产生个字节数据时,主机首先产生STARTSTART信号,然后紧跟着发送一个从机地信号,然后紧跟着发送一个从机地址,注意此时该地址的第址,注意此时该地址的第8 8位为位为0 0,表明是向从机写命令,这时候主机等待从机的应答信号,表明是向从机写命令,这时候主机等待从机的应答信号(ACKACK),当主机收到应答信号时,发送要访问的地址,继续等待从机的应答信号,当主机),当主机收到应答信号时,发送要访问

13、的地址,继续等待从机的应答信号,当主机收到应答信号后,主机要改变通信模式,所以主机发送重新开始信号,然后紧跟着发送一收到应答信号后,主机要改变通信模式,所以主机发送重新开始信号,然后紧跟着发送一个从机地址,注意此时该地址的第个从机地址,注意此时该地址的第8 8位为位为1 1,表明将主机设置成接收模式开始读取数据,这,表明将主机设置成接收模式开始读取数据,这时主机等待从机的应答信号,当主机收到应答信号时,就可以接收时主机等待从机的应答信号,当主机收到应答信号时,就可以接收1 1个字节的数据,当接收个字节的数据,当接收完成后,主机发送非应答信号,表示不再接收数据,主机进而产生停止信号,结束传送过完

14、成后,主机发送非应答信号,表示不再接收数据,主机进而产生停止信号,结束传送过程。程。主机从从机读数据主机从从机读数据15* * AW60 AW60的的I2CI2C模块寄存器模块寄存器 AW60AW60的的I2CI2C模块相关寄存器模块相关寄存器寄存器名称寄存器名称缩写缩写地址地址访问权限访问权限基本功能基本功能地址寄存器地址寄存器I2C1AI2C1A0 x000000580 x00000058读读/ /写写设置从机地址设置从机地址分频寄存器分频寄存器I2C1FI2C1F0 x000000590 x00000059读读/ /写写设置设置I2CI2C模块的模块的工作频率等工作频率等控制寄存器控制寄

15、存器I2C1CI2C1C0 x0000005A0 x0000005A读读/ /写写设置传输格式、设置传输格式、中断使能等中断使能等状态寄存器状态寄存器I2C1SI2C1S0 x0000005B0 x0000005B读读/ /写写表明表明I2CI2C模块的模块的工作状态工作状态数据数据I/OI/O寄存器寄存器I2C1DI2C1D0 x0000005C0 x0000005C读读/ /写写收发数据收发数据16I2CI2C地址寄存器地址寄存器 I2CI2C地址寄存器(地址寄存器(I2C Address RegisterI2C Address Register,I2C1AI2C1A)l D7D1ADR7

16、ADR1为MCU作为从机时的从机地址。l 当主机在I2C总线上发送从机地址寻址从机,MCU作为从机设备时,将该地址与I2C1A的高7位比较,查看自己是否被主机选中l D0保留位。该位是为了将来的兼容性而设置的保留位,读出总是0。写I2C1A时,D0位不使用数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0数据数据地址地址0/0/不用不用复位复位0 00 00 00 00 00 00 00 017I2CI2C分频寄存器分频寄存器 I2CI2C分频寄存器(分频寄存器(I2C Frequency Divider RegisterI2C Frequency Divider R

17、egister,I2C1FI2C1F)用于产生相应的分频因子)用于产生相应的分频因子 l I2C分频寄存器的高2位MULT定义了增频因子a,a和SCL的分频因子配合使用,产生I2C波特率。当MULT为00、01、10时,a的值分别为1、2、4;MULT=11不使用l I2C的低6位定义了I2C时钟速率(ICR),这6位用来定义SCL分频因子b和SDA保持值,分频因子b乘以增频因子a的值用于产生I2C总线波特率,公式如下: I2C总线波特率=CPU总线频率(Hz)/(ab)l SDA保持时间是从SCL线上时钟的下降沿开始到SDA线上数据稳定这段时间,SDA保持值就是用来计算SDA保持时间的,公式

18、如下: SDA SDA保持时间保持时间=CPU=CPU总线周期总线周期SDASDA保持值保持值数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义MULTICR复位复位0000000018 ICR ICR中不同的内容对应着不同的中不同的内容对应着不同的SCLSCL分频因子值和不同的分频因子值和不同的SDASDA保持值,下保持值,下面举例说明面举例说明I2CI2C总线波特率和总线波特率和SDASDA保持时间计算方法保持时间计算方法 设设CPUCPU总线频率为总线频率为8MHz8MHz,MULTMULT设置为设置为01(a=2)01(a=2),要想得到,要想得到10

19、0kbps100kbps的的I2CI2C总总线波特率,则计算过程如下:线波特率,则计算过程如下:根据公式:根据公式:I2CI2C总线波特率总线波特率=CPU=CPU总线频率总线频率(Hz)/(a(Hz)/(ab)b),将已知相应值带入得:,将已知相应值带入得: 100000=8000000/(2 100000=8000000/(2b)b),b=40b=40根据根据SCLSCL分频因子分频因子b b的值,在表的值,在表10-210-2中查找相应的中查找相应的ICRICR值和值和SDASDA保持值,可以看到,当保持值,可以看到,当b=40b=40时,时,ICR=$07ICR=$07或或$0B$0B

20、,而相应的,而相应的SDASDA保持值保持值=10=10或或9 9根据公式:根据公式:SDASDA保持时间保持时间=CPU=CPU总线周期总线周期SDASDA保持值,算得:保持值,算得:ICR=$07ICR=$07,SDASDA保持值保持值=10=10时,时,SDASDA保持时间保持时间=1/8000000=1/800000010=1.25s10=1.25s ICR=$0B ICR=$0B,SDASDA保持值保持值=9=9时,时,SDASDA保持时间保持时间=1/8000000=1/80000009=1.125s9=1.125s较长的较长的SDASDA保持时间,会降低通信速率,但同时也增加了稳

21、定性,并且能延长设备间的通信保持时间,会降低通信速率,但同时也增加了稳定性,并且能延长设备间的通信距离。编程时应以通信的可靠性为原则,选择合适的距离。编程时应以通信的可靠性为原则,选择合适的SDASDA保持时间来确定保持时间来确定ICRICR值。如程序中值。如程序中选用选用SDASDA保持值保持值=9=9,就能得到可靠的通信,那么将,就能得到可靠的通信,那么将ICRICR设定为设定为$0B$0B即可;如果当即可;如果当SDASDA保持值保持值=9=9时通信不稳,就选择另一个为时通信不稳,就选择另一个为1010的值进行实验,若通信仍不稳定,在保持的值进行实验,若通信仍不稳定,在保持I2CI2C总

22、线频率不变总线频率不变的前提下,可通过改变的前提下,可通过改变MULTMULT位来调整位来调整SDASDA保持时间保持时间19I2CI2C控制寄存器控制寄存器 I2CI2C控制寄存器(控制寄存器(I2C Control RegisterI2C Control Register,I2C1CI2C1C)l D7I2CEN(I2C Enable)为I2C使能位l D6I2CIE(I2C Interrupt Enable)为I2C中断请求允许位l D5MST(Master Mode Select)为主模式选择位l D4TX(Transmit Mode Select)为发送模式选择位l D3TXAK(T

23、ransmit Acknowledge Enable)为发送应答使能位l D2RSTA(Repeat START)位,当MCU在主机模式下,向该位写1,将产生一个重新开始信号。该位读出时总是0l D1D0读I2C1C时,D1、D0位为0;写I2C1C时,D1、D0位不使用数据数据位位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0定义定义I2CENI2CIEMSTTXTXAK0/RSTA0/0/不不用用0/0/不不用用复位复位0 00 00 00 00 00 00 00 020I2CI2C状态寄存器状态寄存器 I2CI2C状态寄存器(状态寄存器(I2C Status Regis

24、terI2C Status Register,I2C1SI2C1S) l D7TCF(Transfer Complete Flag)为发送完成标志位l D6IAAS(Addressed as a Slave)为地址被选择标志位l D5BUSY(Bus Busy)为总线忙标志位l D4ARBL(Arbitration Lost)为仲裁丢失标志位l D3读I2C1S时,D3位为0;写I2C1S时,D3位不使用l D2SRW(Slave Read/Write)为从机读写标志位l D1I2CIF(I2C Interrupt Flag)为I2C中断标志位。I2CIF位可读可写l D0RXAK(Recei

25、ve Acknowledge)为接收应答标志位数据位数据位D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0读读TCFTCFIAASIAASBUSYBUSYARBLARBL0 0SRWSRWI2CIFI2CIFRXAKRXAK写写未定义未定义未定义未定义未定义未定义未定义未定义未定义未定义复位复位0 00 00 00 00 00 00 00 021I2C I/OI2C I/O数据寄存器数据寄存器 I2C I/OI2C I/O数据寄存器(数据寄存器(I2C Data I/O RegisterI2C Data I/O Register,I2C1DI2C1D) 在主机发送模式下,将数据

26、写入在主机发送模式下,将数据写入I2C1DI2C1D就初始化了数据发送,先发送数据字节的最高位。就初始化了数据发送,先发送数据字节的最高位。在主机接收模式下,读该寄存器,准备接收从机发往总线上的数据字节。该寄存器在在主机接收模式下,读该寄存器,准备接收从机发往总线上的数据字节。该寄存器在MCUMCU为从机模式时仍具有相同功能。值得注意的是,当为从机模式时仍具有相同功能。值得注意的是,当MCUMCU要从主接收模式变为主发送要从主接收模式变为主发送模式时,应在从模式时,应在从I2C1DI2C1D寄存器读取数据之前,进行模式转换。寄存器读取数据之前,进行模式转换。数据位数据位D7D7D6D6D5D5

27、D4D4D3D3D2D2D1D1D0D0数据数据数据数据0/0/不用不用复位复位0 00 00 00 00 00 00 00 0221.5 1.5 关于关于I2CI2C的进一步讨论的进一步讨论1.5.1 1.5.1 仲裁程序仲裁程序 I2CI2C总线是多主机总线,允许多个主机连接到该总线上。如果总线是多主机总线,允许多个主机连接到该总线上。如果2 2个或者个或者2 2个以上主机试图在同个以上主机试图在同一时刻控制总线,则时钟同步程序使用在每个主设备中集成的硬件定时器来确定总线时钟一时刻控制总线,则时钟同步程序使用在每个主设备中集成的硬件定时器来确定总线时钟 时钟同步时钟同步23 由数据仲裁程序

28、决定竞争的主设备的优先级。当另一个主设备发送逻辑由数据仲裁程序决定竞争的主设备的优先级。当另一个主设备发送逻辑0 0,而这个总线主,而这个总线主设备发送设备发送1 1时,该主设备将仲裁失败。仲裁失败的主设备立即转换为从设备接收模式,并时,该主设备将仲裁失败。仲裁失败的主设备立即转换为从设备接收模式,并停止驱动停止驱动SDASDA输出,如下图,在这种情况下,由主设备到从设备的转变,不产生输出,如下图,在这种情况下,由主设备到从设备的转变,不产生STOPSTOP条件条件仲裁程序仲裁程序241.5.2 1.5.2 数据传输同步交换数据传输同步交换 时钟同步机制可用作数据传输的同步交换(时钟同步机制可用作数据传输的同步交换(HandshakeHandshake)1.5.3 SPI1.5.3 SPI与与I2CI2C的比较的比较SPISPI SPI SPI是一种四线制串行总线接口,分别为时钟引脚是一种四线制串行总线接口,分别为时钟引脚SPSCKSPSCK、主入从出引脚、主入从出引脚MISOMISO、主出从入、主出从入引脚引脚MOSIMOSI、从机选择引脚。其工作在主、从机选择引

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论