串行接口及应用3(TWI)_第1页
串行接口及应用3(TWI)_第2页
串行接口及应用3(TWI)_第3页
串行接口及应用3(TWI)_第4页
串行接口及应用3(TWI)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

5.4两线串行接口TWI5.4.1TWI主要特点

•简单,但是强大而灵活的通讯接口,只需要两根线•支持主机和从机操作•器件可以工作于发送器模式或接收器模式•7位地址空间允许有128个从机•支持多主机仲裁•高达400kHz的数据传输率•可以抑制总线尖峰的噪声抑制器•完全可编程的从机地址以及公共地址•睡眠时地址匹配可以唤醒AVR1、两线串行接口总线定义

TWI协议允许系统设计者只用两根双向传输线就可以将128个不同的设备互连到一起。这两根线一是时钟SCL,一是数据SDA。外部硬件只需要两个上拉电阻,每根线上一个。所有连接到总线上的设备都有自己的地址。TWI协议解决了总线仲裁的问题。图5.9TWI总线的连接表5.5TWI词汇2、TWI的电气连接

两根线都通过上拉电阻与正电源连接,TWI兼容的器件的总线驱动都是漏极开路或集电极开路的,TWI器件输出为“0”时,TWI总线会产生低电平。

当所有的TWI器件输出为三态时,总线会输出高电平,允许上拉电阻将电压拉高。注意,为保证所有的总线操作,凡是与TWI总线连接的AVR器件必须上电。3、TWI的传输数据(位)

TWI总线上数据位的传送与时钟脉冲同步。时钟线为高时,数据线电压必须保持稳定,除非在启动与停止的状态下。图5.10数据有效性4、START/STOP状态

主机在总线上发出START信号启动数据传输,在总线上发出STOP信号停止数据传输。

在START与STOP状态之间,需要假定总线忙,不允许其它主机控制总线,特例是在START与STOP状态之间发出一个新的START状态。

如下所示,START与STOP状态是在SCL线为高时,通过改变SDA电平来实现的。图5.11启动、停止和重启动状态5、地址包格式

在TWI总线上传送的地址包均为9位,包括7位地址位、1位READ/WRITE控制位与1位应答位。

如果READ/WRITE为1,则执行读操作;否则执行写操作。

从机被寻址后,必须在第九个SCL(ACK)周期通过拉低SDA作出应答。若该从机忙或有其它原因无法响应主机,则应该在ACK周期保持SDA为高。然后主机可以发出STOP状态或REPEATEDSTART状态重新开始发送。

地址包包括从机地址与分别称为SLA+R或SLA+W的READ或WRITE位。6、数据包格式

在TWI总线上传送的数据包为9位长,包括8位数据位及1位应答位。

在数据传送中,主机产生时钟及START与STOP状态,而接收器响应接收。

应答是由从机在第9个SCL周期拉低SDA实现的。如果接收器使SDA为高,则发出NACK信号。接收器完成接收,应该在收到最后的字节后发出NACK来告知发送器。图5.13数据包格式7、将地址包和数据包组合为一个完整的传输过程

发送主要由START状态、SLA+R/W、至少一个数据包及STOP状态组成,可以利用SCL的线与功能来实现主机与从机的握手。

图5.14说明了典型的数据传送。注意SLA+R/W与STOP之间传送的字节数由应用程序的协议决定。图5.14典型的数据传送8、多主机总线系统,仲裁和同步

TWI协议允许总线上有多个主机。特别要注意的是即使有多个主机同时开始发生数据,也要保证发送正常进行。多主机系统中有两个问题:只能允许一个主机完成传送。当其余主机失去选择权后应停止传送,这个过程称为仲裁。当竞争中的主机发现其仲裁失败,应立即转换到从机模式检测是否被获得总线控制权的的主机寻址。不同的主机可能使用不同的SCL频率。为保证传送的一致性,必须设计一种同步主机时钟,这会简化仲裁过程。5.4.2TWI模块综述

TWI模块由几个子模块组成,如图5.17所示。所有位于粗线之中的寄存器可以通过AVR数据总线进行访问。图5.17TWI模块概述5.4.3总线接口单元

该单元包括数据与地址移位寄存器TWDR,START/STOP控制器和总线仲裁判定硬件电路。5.4.4地址匹配单元地址匹配单元将检测从总线上接收到的地址是否与TWAR寄存器中的7位地址相匹配。5.4.5控制单元:

控制单元监控TWI总线,并根据TWI控制寄存器TWCR的设置作出相应的响应。5.4.6使用TWI

AVR的TWI接口是面向字节和基于中断的。

在字节发送和接收过程中,不需要应用程序的干预。

TWCR寄存器的TWIE位和SREG寄存器的全局中断允许位一起决定了应用程序是否响应TWINT标志位产生的中断请求。1、TWI寄存器设置(1)TWI比特率寄存器(TWBR)Bits7..0–TWI比特率寄存器TWBR为比特率发生器分频因子。比特率发生器是一个分频器,在主机模式下产生SCL时钟频率。(2)TWI控制寄存器(TWCR)Bit7–TWINT:TWI中断标志Bit6–TWEA:使能TWI应答Bit5–TWSTA:TWISTART状态标志Bit4–TWSTO:TWISTOP状态标志Bit3–TWWC:TWI写碰撞标志Bit2–TWEN:TWI使能Bit1–Res:保留Bit0–TWIE:使能TWI中断(3)TWI状态寄存器(TWSR)Bits7..3–TWS:TWI状态Bit2–Res:保留Bits1..0–TWPS:TWI预分频位(4)TWI数据寄存器(TWDR)Bits7..0–TWD:TWI数据寄存器(5)TWI(从机)地址寄存器(TWAR)•Bits7..1–TWA:TWI从机地址寄存器其值为从机地址。•Bit0–TWGCE:使能TWI广播识别置位后MCU可以识别TWI总线广播。TWI数据传输过程中的规则总结如下:

当TWI完成一次操作并等待反馈时,TWINT标志置位。直到TWINT清零,时钟线SCL才会拉低。

TWINT标志置位时,TWDR寄存器必须载入下一个总线周期中要发送的值。当所有的TWI寄存器得到更新,而且其它挂起的应用程序也已经结束,TWCR被写入数据。写TWCR时,TWINT位应为置位状态。对TWINT写“1”清除此标志。TWI将开始执行由TWCR设定的操作。1、数据传输模式

TWI可工作于4个不同的模式:主机发送器(MT)、主机接收器(MR)、从机发送器(ST)及从机接收器(SR)。同一应用程序可以使用几种模式。2、主机发送模式 为进入主机模式,必须发送START信号。紧接着的地址包格式决定进入MT或MR模式。如果发送SLA+W进入MT模式;如果发送SLA+R则进入MR模式。 本节所提到的状态字均假设其预分频位为“0”。(1)通过在TWCR寄存器中写入下列数值发出START信号:TWEN必须置位以使能两线接口TWSTA必须置“1”来发出START信号TWINT必须置“1”来对TWINT标志清零

TWI逻辑开始检测串行总线,一旦总线空闲就发送START。接着中断标志TWINT置位,TWSR的状态码为0x08。(2)为进入MT模式,必须发送SLA+W,可对TWDR写入SLA+W来实现。完成此操作后软件清零TWINT标志,TWI传输继续进行。 在TWCR寄存器中写入下述值完成此操作:

当SLA+W发送完毕并接收到确认信号,主机的TWINT标志再次置位。 此时主机的TWSR状态码可能是0x18、0x20。

SLA+W发送成功后可以开始发送数据包,通过对TWDR写入数据实现。

(3)TWDR只有在TWINT为高时方可写入。否则,访问被忽略,寄存器TWCR的写碰撞位TWWC置位。

TWDR更新后,TWINT位应清零后继续传送。 通过对TWCR寄存器中写入下述值完成操作:(4)这过程会一直重复下去,直到最后的字节发送完且发送器产生STOP或REPEATEDSTART信号。STOP信号通过在TWCR中写入下述值实现:(5)在REPEATEDSTART(状态0x10)后,两线接口可以再次访问相同的从机,或不发送STOP信号来访问新的从机。REPEATEDSTART使得主机可以在不丢失总线控制的条件下在从机、主机发送器及主机接收器模式间进行切换。

REPEATEDSTART信号通过在TWCR中写入下述值实现:表:主机发送模式的状态码表主机发送模式的状态码(续表)典型数据传输中应用程序与TWI的接口(数据手册P171)3、主机接收模式

在主机接收模式,主机可以从从机接收数据。 为进入主机模式,必须发送START信号。紧接着的地址包格式决定进入MT或MR模式。如果发送SLA+W进入MT模式;如果发送SLA+R则进入MR模式。

表:主机接收模式的状态码表主机接收模式的状态码(续表)4、从机发送模式如图5.20:从机发送模式下的数据传输(1)启动从机发送模式,TWAR与TWCR设置:(2)前7位是主机寻址时从机响应的TWI接口地址。若LSB置位,则TWI接口响应广播地址0x00。否则忽略广播地址。TWEN必须置位以使能TWI接口。TWEA也要置位以便主机寻址到自己(从机地址或广播)时返回确认信息ACK。TWSTA和TWSTO必须清零。初始化TWAR和TWCR之后,TWI接口即开始等待,直到自己的从机地址(或广播地址,如果TWAR的TWGCE置位的话)出现在主机寻址地址当中,并且数据方向位为“1”(读)。然后TWI中断标志置位,TWSR则包含了相应的状态码。

如果在传输过程中TWEA复位,TWI接口发送完数据之后进入状态0xC0或0xC8。接口也切换到未寻址从机模式,忽略任何后续总线传输。从而主机接收到的数据全为“1”。如果主机需要附加数据位(通过发送ACK),即使从机已经传送结束,也进入状态0xC8。

TWEA复位时TWI接口不再响应自己的从机地址,但是会继续监视总线。一旦TWEA置位就可以恢复地址识别和响应。也就是说,可以利用TWEA暂时将TWI接口从总线中隔离出来。

在除空闲模式外的其它休眠模式时,TWI接口的时钟被关闭。若使能了从机接收模式,接口将利用总线时钟继续响应广播地址/从机地址。地址匹配将唤醒CPU。在唤醒期间,TWI接口将保持SCL为低电平,直至TWCINT标志清零。

当AVR时钟恢复正常运行后可以发送更多的数据。显然如果AVR设置为长启动时间,时钟线SCL可能会长时间保持低,阻塞其它数据的传送。当MCU从这些休眠模式唤醒时,和正常工作模式不同的是,数据寄存器TWDR的数据并不反映总线上出现的最后一个字节。表5.9:从机发送模式的状态码其他状态:有两个状态码没有相应的TWI状态定义。状态0xF8表明当前没有相关信息,因为中断标志TWINT为“0”。状态0x00表示在串行传输过程中发生了总线错误。当START或STOP出现在错误的位置时总线错误就会发生。这将导致TWI接口进入未寻址从机模式、标志TWSTO被清零(TWCR的其他位不受影响),以及SDA和SCL被释放,但是不会产生STOP。表5.10其它状态码将几个TWI模式组合到一起:在某些情况下,为完成期望的工作,必须将几种TWI模式组合起来。例如从串行EEPROM读取数据。典型的这种传输包括以下步骤:

1.传输必须启动

2.必须告诉EEPROM读取的位置

3.必须完成读操作

4.传送必须结束注意数据可从主机传到从机,反之也可。首先主机必须告诉读从机读取实际的位置,因此需要使用MT模式;然后数据必须由从机读出,需要使用MR模式,但传送方向必须改变。在上述步骤中,主机必须保持对总线的控制,且以上各步骤应该自动进行。如果在多主机系统中违反这一规则,即在第二步与第三步之间其它主机改变EEPROM中的数据指针,则主机读取的数据位置是错误的。传送方向改变是通过在发送地址字节与接收数据之间发送REPEATEDSTART信号来实现的。在发送REPEATEDSTART信号后,主机继续保持总线的控制权。下图给出传送的流程图(从机读流程)。例5.14在读方式下往从器件写入一个地址字节。voidf_I2cWriteAdd_R(unsignedcharuc_I2CAdd)//写从器件地址和读方式{TWDR=(uc_I2CAdd);TWCR=(1<<TWINT)|(1<<TWEN);//写数据到TWDRwhile(!(TWCR&(1<<TWINT);if(TWSR&0xf8!=0x40)error();}例5.15往从器件写入一个数据字节。voidf_I2cWriteData_R(unsignedcharuc_I2CData)//写从器件数据{TWDR=(uc_I2CData);TWCR=(1<<TWINT)|(1<<TWEN)//写数据到TWDRwhile(!(TWCR&(1<<TWINT);if(TWSR&0xf8!=0x28)error();}例5.16读从器件,返回字节数据。要求接收到ACK信号。unsignedcharf_I2Cread1(viod)//读返回数据{unsignedcharuc_ReturnData;TWCR=(TWCR&0xCF)|(1<<TWEN)|(1<<TWEA)|(

温馨提示

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

评论

0/150

提交评论