资源描述
I2C 数据传输
字节格式
发送到SDA 线上的每个字节必须为8 位,每次传输可以发送的字节数量不受限制.每个字节后必须跟一个响应位,首先传输的是数据的最高位MSB.
如果从机要完成一些其他功能后,例如一个内部中断服务程序,才能接收或发送下一个完整的数据字节,可以使时钟线SCL 保持低电平迫使主机进入等待状态.当从机准备好接收下一个数据字节,并释放时钟线SCL 后数据传输继续.
在一些情况下可以用与I2C 总线格式不一样的格式.例如兼容CBUS 的器件,甚至在传输一个字节时,用这样的地址起始的报文可以通过产生停止条件来终止.此时不会产生响应.
响应
数据传输必须带响应,相关的响应时钟脉冲由主机产生.在响应的时钟脉冲期间发送器释放SDA线,在响应的时钟脉冲期间,接收器必须将SDA 线拉低.使它在这个时钟脉冲的高电平期间保持稳定的低电平.
当从机不能响应从机地址时,例如它正在执行一些实时函数不能接收或发送.从机必须使数据线保持高电平主机,然后产生一个停止条件终止传输或者产生重复起始条件,开始新的传输.如果从机接收器,响应了从机地址,但是在传输了一段时间后不能接收更多数据字节.主机必须再一次终止传输.这个情况用从机在第一个字节后没有产生响应,来表示从机使数据线保持高电平.
主机产生一个停止或重复起始条件,如果传输中有主机接收器,它必须通过在从机不产生时钟的最后一个字节不产生一个响应向从机发送器通知数据结束.从机发送器必须释放数据线。
同步
所有主机在SCL 线上产生它们自己的时钟来传输I2C 总线上的报文,数据只在时钟的高电平周期有效.因此需要一个确定的时钟进行逐位仲裁.
时钟同步通过线与连接I2C 接口到SCL 线来执行这就是说,SCL 线的高到低切换会使器件开始数它们的低电平周期.而且一旦器件的时钟变低,电平它会使SCL 线保持这种状态.直到到达时钟的高电. 但是如果另一个时钟仍处于低电平周期,这个时钟的低到高切换不会改变SCL 线的状态.因此,SCL 线被有最长低电平周期的器件保持低电平,此时低电平周期短的器件会进入高电平的等待状态.
当所有有关的器件数完了它们的低电平周期后,时钟线被释放.并变成高电平之后器件时钟和SCL线的状态没有差别,而且所有器件会开始数它们的高电平周期,首先完成高电平周期的器件会再次将SCL线拉低,这样产生的同步SCL 时钟的低电平周期由低电平时钟周期最长的器件决定而高电平周期由高电平时钟周期最短的器件决定.
用时钟同步机制作为握手
时钟同步机制除了在仲裁过程中使用外,还可以用于使能接收器处理字节级或位级的快速数据传输。
在字节级的快速传输中,器件可以快速接收数据字节,但需要更多时间保存接收到的字节或准备另一个要发送的字节,然后从机以一种握手过程在接收和响应一个字节后使SCL 线保持低电平,迫使主机进入等待状态,直到从机准备好下一个要传输的字节。
在位级的快速传输中,器件例如对I2C 总线有或没有限制的微控制器可以通过延长每个时钟的低电平周期减慢总线时钟,从而任何主机的速度都可以适配这个器件的内部操作速率。
7 位的地址格式
数据的传输格式在起始条件后发送了一个从机地址,这个地址共有7 位,紧接着的第8 位是数据方向位R/W, 0 表示发送,1 表示请求数据。数据传输一般由主机产生的停止位终止,但是如果主机仍希望在总线上通讯,它可以产生重复起始条件和寻址另一个从机,而不是首先产生一个停止条件。在这种传输中可能有不同的读写格式。
可能的数据传输格式有
" 主机发送器发送到从机接收器,传输的方向不会改变;
" 在第一个字节后主机立即读从机,在第一次响应时,主机发送器变成主机接收器,从机接收器变成从机发送器。第一次响应仍由从机产生之前,发送了一个不响应信号的主机产生停止条件
" 复合格式。传输改变方向的时侯起始条件和从机地址都会被重复,但R/W 位取反。如果主机接收器发送一个重复起始条件,它之前应该发送了一个不响应信号。
7 位寻址
I2C 总线的寻址过程是通常在起始条件后的第一个字节决定了主机选择哪一个从机,例外的情况是可以寻址所有器件的广播呼叫地址。使用这个地址时,理论上所有器件都会发出一个响应,但是也可以使器件忽略这个地址广播呼叫。
地址的第二个字节定义了要采取的行动。
(1)第一个字节的位定义
第一个字节的头7 位组成了从机地址,最低位LSB 是第8 位,它决定了报文的方向;第一个字节的最低位是0 表示主机会写信息到被选中的从机;1 表示主机会向从机读信息。
当发送了一个地址后,系统中的每个器件都在起始条件后将头7 位与它自己的地址比较;如果一样器件会认为它被主机寻址;至于是从机接收器还是从机发送器都由R/W 位决定
(2)从机地址
由一个固定和一个可编程的部分构成,由于很可能在一个系统中有几个同样的器件;从机地址的可编程部分使最大数量的这些器件可以连接到I2C 总线上器件。可编程地址位的数量由它可使用的管脚决定,例如如果器件有4 个固定的和3 个可编程的地址位,那么相同的总线上共可以连接8 个相同的器件。
I2C 总线委员会协调I2C 地址的分配,进一步的信息可以从最后列出的Philips 代理商处获得。保留的两组8 位地址0000XXX 和1111XXX 的自有用途。
展开阅读全文