I2C原理与实际应用波形分析

1.I2C原理

主机:初始化发送、终止发送和产生时钟信号的器件。

从机:被主机寻址的器件。

仲裁:在一条有多个主机尝试控制总线的情况下,只允许其中一个主机控制主线并且不破坏报文的过程。(线与逻辑)

同步:两个及以上器件同步时钟信号的过程。

1.1传输数据的过程:

1)、微控制器A发送数据到微控制器B

A(主机)寻址B(从机);

A(主机-发送器)发送数据到B(从机-接收器);

A终止传输。

2)、微控制器A从微控制器B接收数据

A(主机)寻址B(从机);

A(主机-接收器)从B(从机-发送器)接收数据;

A终止传输。

总体特征:SDA和SCL都是双向线路,通过上拉电阻,在空闲时都呈现高电平,并具有线与逻辑。传输速率标准是100kbits/s、快速是400kbits/s、最高可达3.4Mbits/s。另外,由于连接到I2C总线的器件工艺不同(COMS、NMOS、双极性),这就导致逻辑“1”“0”的电平不是固定的,由VDD电平来决定。

数据的有效性:限制SDA数据变化只能在SCL低电平才能进行。当SCL高电平时,SDA电平发生变化,意味着起始和停止:SDA由高向低为开始、由低向高为停止。

数据有效性

数据起始和停止

传输数据:

1)字节格式:发送到SDA线上的字节必须为8位,首先传输的是数据的最高位(MSB),在每个字节发送完毕后必须跟一个响应位(总共9位),每次传输过程的总字节不受限制。另外,如果从机需要完成一些其他功能(例如处理内部中断程序)才能接收或发送下一个完整的数据字节,这时可以将SCL拉低,来迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放SCL,数据传输再继续。

2)响应:响应时钟脉冲由主机产生,在响应的时钟脉冲期间,发送器释放SDA线(高)、接收器必须将SDA拉低。猜测:通过线与来判断接收器是否真的产生了应答。

应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。 对于反馈有效应答位ACK的要求是,接收器在第9个时钟脉冲之前的低电平期间将SDA线拉低,并且确保在该时钟的高电平期间为稳定的低电平。 如果接收器是主控器,则在它收到最后一个字节后,发送一个NACK信号,以通知被控发送器结束数据发送,并释放SDA线,以便主控接收器发送一个停止信号P。

【Tip:当从机不能响应从机地址时(例如正在执行一些实时函数不能进行接收或发送),从机必须使数据线保持高电平,然后主机产生一个停止条件终止传输或产生重复起始条件来开始新的传输。

如果从机-接收器响应了从机地址,但是在传输了一段时间后不能接收更多数据字节,主机必须再一次终止传输。这个情况用从机在第一个字节后没有产生响应来表示。从机使数据线保持高电平,主机产生一个停止或重复起始条件。

如果传输中有主机-接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应,向从机-发送器通知数据结束,从机-发送器必须释放数据线,允许主机产生一个停止或重复起始条件。】

1.2仲裁与时钟发送:

1)同步:线与逻辑,同步SCL时钟的低电平周期由低电平时钟周期长的器件决定,而高电平周期由高电平时钟周期短的器件决定。

2)仲裁:当SCL是高电平时,仲裁在SDA上发生。在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与自己的不相同。

        仲裁可以持续多位,第一个阶段是地址比较位,如果每个主机都尝试寻址相同的器件,进入第二个阶段,仲裁会比较数据位(主机-发送器时)或响应位(主机-接收器时)。仲裁的过程中不会丢失信息(因为I2C 总线的地址和数据信息由赢得仲裁的主机决定)。

        丢失仲裁的主机产生的时钟脉冲直到丢失仲裁的该字节末尾。如果主机也结合了从机功能,并且在寻址阶段(第一个阶段)就丢失仲裁,它很可能就是赢得仲裁的主机所寻址的器件,因此必须立即切换到从机模式。下图是两个主机的仲裁过程。

猜测:因为主机1率先持续发送高电平,所以丢失仲裁? 是的

完整的数据传输格式:数据的传输遵循下图的格式,在起始条件(S)后,发送了一个从机地址。这个地址共有7 位,紧接着的第8位是数据方向位(R/W),‘0’表示发送(写),‘1’表示请求数据(读)。数据传输一般由主机产生的停止位(P)终止。但是,如果主机仍希望在总线上通讯,它可以产生重复起始条件(Sr)和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中,可能有不同的读/写格式结合。

可能的数据传输格式有:

1、主机-发送器发送到从机-接收器,传输的方向不会改变。

2、在第一个字节后,主机立即读从机。在第一次响应时,主机-发送器变成主机-接收器,从机-接收器变成从机-发送器,第一次响应仍由从机产生。

3、传输改变方向的时侯,起始条件和从机地址都会被重复,但R/W位取反。如果主机接收器发送一个重复起始条件,它之前应该发送了一个不响应信号(A|)。

1.3七位寻址:

       I2C总线的寻址过程通常是在起始条件后的第一个字节决定主机选择哪一个从机进行通信。第一个字节的头7位组成从机地址,最低位(LSB)是第八位,决定报文方向,‘0’表示主机会写信息到被选中的从机,‘1’表示主机会向从机读信息。当发送了一个地址后,系统中的每个器件都在起始条件后将头 7 位与它自己的地址比较。如果一样,器件会任务它被主机寻址,于是从机-接收器还是从机-发送器都由读/写位决定。

2.实测波形分析

Q:在RESTART时的时钟为什么出现连续的高电平信号? SCL被上拉,Restart都会出现这么较长的SCL高电平。

        这是一组Charge的I2C波形,在起始信号之后,首先对从机进行寻址,并写入一个8位的字节数据。之后,RESTART,再次对同一从机进行寻址,并向从机读取一个8位的字节数据,然后结束本次通信。一次完整Charge的I2C波形如下图所示,两组I2C波形间SCL信号会被拉高。

第一次信号传输数据为:寻址1101011,写,01111111,应答0,00000000,应答0,结束。从中发现Charge在第一组I2C波形中出现了如下图所示的尖刺脉冲。

        很显然,这个尖峰毛刺对本次数据传输不会产生影响,但是,这个毛刺会不会出现在SCL为高电平期间从而影响数据的有效性?

        通过几次重复的波形分析,发现尖峰毛刺始终只会出现在应答位后SCL为低电平期间,重新分析下图:

       

      可以发现,接收器在地址位和数据位保持对SDA线的控制。在应答位时,在响应的时钟脉冲期间,发送器释放SDA线(高)、接收器必须将SDA拉低来表明ACK。

        进一步分析可以发现,本次波形情况是主设备向从设备写数据,在寻址结束确认应答后,从设备会拉低总线,在SCL切换到低电平时,立即释放SDA,主设备还没有反应过来,造成了“控制真空”,这时SDA被上拉电阻拉高,而如果下一步主设备将传输低电平数据位,就会造成这个尖峰毛刺,原理如下图所示。

  • 33
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
I2C总线的波形可以通过示波器来观测和分析,示波器可以将I2C总线上的时钟和数据信号显示出来,帮助我们理解I2C总线的工作原理和进行故障排查。 当进行I2C写操作时,总线的波形如下图所示: ![I2C写操作波形](https://img-blog.csdn.net/20180704175233796?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2J1aWxkaW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 图中红线表示I2C总线的时钟信号,蓝线表示数据信号(SDA)。在写操作开始时,主设备发出起始信号(S)和设备地址(ADDR),从设备响应应答信号(ACK),主设备继续发送数据,从设备再次响应应答信号,直到数据发送完毕,主设备发出停止信号(P)结束操作。 当进行I2C读操作时,总线的波形如下图所示: ![I2C读操作波形](https://img-blog.csdn.net/20180704175312602?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2J1aWxkaW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 图中红线表示I2C总线的时钟信号,蓝线表示数据信号(SDA)。在读操作开始时,主设备发出起始信号(S)和设备地址(ADDR),从设备响应应答信号(ACK),主设备继续发送数据,从设备再次响应应答信号,然后主设备发出重复起始信号(Sr)和设备地址(ADDR)进行读操作,从设备再次响应应答信号,主设备接收数据并发送应答信号(ACK),直到数据接收完毕,主设备发送停止信号(P)结束操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值