微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > TWI接口

TWI接口

时间:12-12 来源:互联网 点击:
在AVR系列单片机中内嵌有一个TWI(Two-wire Serial Interface)接口,它实际上就是IIC总线接口。IIC是一种多向控制总线,它是由PHILIPS公司在二十世纪八十年代初设计出来的,利用该总线可实现多主机系统所需的裁决和高低速设备同步等功能,是一种高性能的串行总线。IIC总线的连接方式如下图所示。它只用两根双向传输线就可以将128个不同的设备互连到一起。这两根线一根是时钟线SCL,一根是数据SDA。外部硬件只需要两个上拉电阻,每根线上一个。所有连接到总线上的设备都有自己的地址。

总线的速度有两个不同的规范,一种的速度低于100kHz,而另外一种的速度高达400kHz,总线间的电容不能大于400pF。所有TWI兼容的器件的总线驱动都应该是漏极开路或集电极开路的结构,这样就可以实现线与的功能。TWI器件在输出为0时,TWI总线会产生低电平。当所有的TWI器件输出为三态时,总线会输出高电平,如果接有上拉电阻电压将会被拉高。

TWI总线上传输的数据是通过在时钟线(SCL)高电平期间对应的数据线(SDA)上的电平来判别的。可通过下图来描述。

在上图中,当SCL拉高期间对应的SDA的电平,如果是高则这位数据就是1,反之则是0。只有在SCL为低电平期间,SDA才可以更新下一位的数据。TWI总线上数据的传送就是通过SCL为高时对应到的SDA的值来构成的。显然,SCL的频率决定了数据传送的速度。

除了传送的数据以外,在每一帧数据传送之前,还会有一个启动信号,以通知从机准备接收数据。在数据传送结束之后,也会有一个停止信号,以通知从机数据传输结束。启动信号是这样来定义的,在SCL为高电平期间,若对应的SDA线上有一个由高变低的电平下跳沿,则表示这是一个启动信号。同样,停止信号是这样定义的,在SCL为高电平期间,若对应的SDA线上有一个由低变高的电平上跳沿,则表示这是一个停止信号。为了形成启动或停止信号,必须在判别该信号的SCL拉高之前做好电平准备,比如要形成一个停止信号,必须在SCL为低电平期间把SDA上的电平拉低,以便在紧跟着后面的SCL高电平期间把SDA的电平拉低,形成一个停止信号。当已经有一个启动信号之后,在没有停止信号出现之前若再次出现启动信号,则表示该信号是一个重新启动信号,它主要用于在主机不放弃总线控制的情况下启动新的传送。上述整个过程可用下图来描述。

通过上述讨论,说明了TWI总线的数据位传送与时钟脉冲是同步的。除了启动与停止状态之外,当时钟线为高电平时,数据线上的电压(不论是高还是低)必须保持稳定,否则有可能被识别成停止信号或重新开始的信号。

下面来看TWI总线是如何寻址的。在启动信号之后紧接着的就是地址帧,所有的地址包均为9位,包括7位地址位、1位READ/WRITE控制位(即方向位,表明是主机写从机还是从机写主机)与1位应答位。如果READ/WRITE为1,则执行读(从机写主机)操作;否则执行写(主机写从机)操作。从机被寻址后,必须在第九个SCL(ACK)周期通过拉低SDA作出应答。发送地址时先发送高位后发送低位,地址字节的MSB(数据的最高位)先被发送,从机地址由用户自行分配,但要避开保留的广播地址(即地址0000000)。地址的传输格式可用下图来描述。

地址发送后,就要发送数据包。所有在TWI总线上传送的数据包为9位长,包括8位数据位及1位应答位。在数据传送中,主机产生时钟及START与STOP状态,而接收器响应接收。应答是由从机在第9个SCL周期拉低SDA实现的。如果接收器在第9个SCL周期使SDA为高,则是发出NACK信号。NACK信号是在接收器在完成了最后数据的接收,或者由于某些原因无法接收更多的数据时,才在收到最后的字节后发出去告知发送器的。数据的传输格式可用下图来描述。

下面来看,如何将地址包和数据包组合为一个完整的传输过程。发送主要由START状态、SLA+R/W、至少一个数据包及STOP状态组成。只有START与STOP状态的空信息是非法的。当主机设定的时钟速度相对于从机太快,或从机需要额外的时间来处理数据时,从机可通过拉低SCL来延长SCL低电平的时间。从机延长SCL低电平的时间不会影响SCL高电平的时间,因为SCL高电平时间是由主机决定的。一个典型的数据传送的过程可用下图来描述。

要注意一点,SLA+R/W与STOP之间传送的字节数由应用程序的协议决定。

下面来看AVR内部的TWI模块,它是由几个子模块组成,其内部结构图如下。

在上图中,位于粗线之中的寄存器可以通过程序进行访问。SCL与SDA为MCU的TWI接口引脚。引脚的输出驱动器包含一个波形斜率限制器以满足TWI的信号规范。引脚的输入部分包括尖峰抑制单

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top