串行接口及应用TWI.ppt

上传人:scccc 文档编号:11985612 上传时间:2021-11-30 格式:PPT 页数:52 大小:1.64MB
返回 下载 相关 举报
串行接口及应用TWI.ppt_第1页
第1页 / 共52页
串行接口及应用TWI.ppt_第2页
第2页 / 共52页
串行接口及应用TWI.ppt_第3页
第3页 / 共52页
串行接口及应用TWI.ppt_第4页
第4页 / 共52页
串行接口及应用TWI.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《串行接口及应用TWI.ppt》由会员分享,可在线阅读,更多相关《串行接口及应用TWI.ppt(52页珍藏版)》请在三一文库上搜索。

1、串行接口及应用TWI,5.4 两线串行接口TWI5.4.1 TWI主要特点 简单,但是强大而灵活的通讯接口,只需要两根线支持主机和从机操作 器件可以工作于发送器模式或接收器模式 7 位地址空间允许有128 个从机 支持多主机仲裁 400 kHz 的数据传输率 可以抑制总线尖峰的噪声抑制器 完全可编程的从机地址以及公共地址 睡眠时地址匹配可以唤醒AVR,串行接口及应用TWI,1、两线串行接口总线定义 TWI 协议允许系统设计者只用两根双向传输线就可以将128个不同的设备互连到一起。这两根线一是时钟SCL,一是数据SDA。外部硬件只需要两个上拉电阻,每根线上一个。所有连接到总线上的设备都有自己的地

2、址。TWI 协议解决了总线仲裁的问题。,图5.9 TWI 总线的连接,串行接口及应用TWI,表5.5 TWI 词汇,串行接口及应用TWI,2、TWI的电气连接两根线都通过上拉电阻与正电源连接, TWI 兼容的器件的总线驱动都是漏极开路或集电极开路的,TWI器件输出为“0”时,TWI总线会产生低电平。当所有的TWI器件输出为三态时,总线会输出高电平,允许上拉电阻将电压拉高。注意,为保证所有的总线操作,凡是与TWI 总线连接的AVR 器件必须上电。,串行接口及应用TWI,3、TWI的传输数据(位) TWI总线上数据位的传送与时钟脉冲同步。时钟线为高时,数据线电压必须保持稳定,除非在启动与停止的状态

3、下。,图5.10 数据有效性,串行接口及应用TWI,4、START/STOP状态主机在总线上发出START 信号启动数据传输,在总线上发出STOP 信号停止数据传输。在START 与STOP 状态之间,需要假定总线忙,不允许其它主机控制总线,特例是在START 与STOP 状态之间发出一个新的START 状态。如下所示,START与STOP状态是在SCL线为高时,通过改变SDA 电平来实现的。,串行接口及应用TWI,图5.11 启动、停止和重启动状态,串行接口及应用TWI,5、地址包格式 在TWI 总线上传送的地址包均为9位,包括7位地址位、1 位READ/WRITE 控制位与1位应答位。如果

4、READ/WRITE 为1,则执行读操作;否则执行写操作。从机被寻址后,必须在第九个SCL (ACK) 周期通过拉低SDA 作出应答。若该从机忙或有其它原因无法响应主机,则应该在ACK 周期保持SDA 为高。然后主机可以发出STOP 状态或REPEATED START状态重新开始发送。地址包包括从机地址与分别称为SLA+R 或SLA+W 的READ 或WRITE 位。,串行接口及应用TWI,6、数据包格式 在TWI 总线上传送的数据包为9位长,包括8位数据位及1 位应答位。在数据传送中,主机产生时钟及START 与STOP状态,而接收器响应接收。应答是由从机在第9个SCL 周期拉低SDA 实现

5、的。如果接收器使SDA为高,则发出NACK 信号。接收器完成接收,应该在收到最后的字节后发出NACK 来告知发送器。,串行接口及应用TWI,图5.13 数据包格式,串行接口及应用TWI,7、将地址包和数据包组合为一个完整的传输过程 发送主要由START 状态、SLA+R/W、至少一个数据包及STOP 状态组成,可以利用SCL 的线与功能来实现主机与从机的握手。,串行接口及应用TWI,图5.14说明了典型的数据传送。注意SLA+R/W 与STOP之间传送的字节数由应用程序的协议决定。,图5.14 典型的数据传送,串行接口及应用TWI,8、多主机总线系统,仲裁和同步 TWI 协议允许总线上有多个主

6、机。特别要注意的是即使有多个主机同时开始发生数据,也要保证发送正常进行。多主机系统中有两个问题: 只能允许一个主机完成传送。当其余主机失去选择权后应停止传送,这个过程称为仲裁。当竞争中的主机发现其仲裁失败,应立即转换到从机模式检测是否被获得总线控制权的的主机寻址。 不同的主机可能使用不同的SCL 频率。为保证传送的一致性,必须设计一种同步主机时钟,这会简化仲裁过程。,串行接口及应用TWI,5.4.2 TWI 模块综述 TWI模块由几个子模块组成,如图5.17所示。所有位于粗线之中的寄存器可以通过AVR数据总线进行访问。,串行接口及应用TWI,图5.17 TWI 模块概述,串行接口及应用TWI,

7、5.4.3 总线接口单元 该单元包括数据与地址移位寄存器TWDR, START/STOP 控制器和总线仲裁判定硬件电路。5.4.4 地址匹配单元 地址匹配单元将检测从总线上接收到的地址是否与TWAR 寄存器中的7 位地址相匹配。5.4.5 控制单元: 控制单元监控TWI 总线,并根据 TWI 控制寄存器TWCR 的设置作出相应的响应。,串行接口及应用TWI,5.4.6 使用TWI AVR的 TWI接口是面向字节和基于中断的。 在字节发送和接收过程中,不需要应用程序的干预。 TWCR 寄存器的 TWIE位和SREG寄存器的全局中断允许位一起决定了应用程序是否响应TWINT标志位产生的中断请求。,

8、串行接口及应用TWI,1、TWI寄存器设置(1)TWI 比特率寄存器(TWBR)Bits 7.0 TWI 比特率寄存器TWBR 为比特率发生器分频因子。比特率发生器是一个分频器,在主机模式下产生SCL时钟频率。,串行接口及应用TWI,(2)TWI 控制寄存器(TWCR),Bit 7 TWINT: TWI 中断标志Bit 6 TWEA: 使能TWI 应答Bit 5 TWSTA: TWI START 状态标志Bit 4 TWSTO: TWI STOP 状态标志Bit 3 TWWC: TWI 写碰撞标志Bit 2 TWEN: TWI 使能Bit 1 Res: 保留Bit 0 TWIE: 使能TWI

9、中断,串行接口及应用TWI,(3)TWI 状态寄存器(TWSR)Bits 7.3 TWS: TWI 状态Bit 2 Res: 保留Bits 1.0 TWPS: TWI 预分频位,串行接口及应用TWI,(4)TWI 数据寄存器(TWDR),Bits 7.0 TWD: TWI 数据寄存器,串行接口及应用TWI,(5)TWI(从机)地址寄存器(TWAR), Bits 7.1 TWA: TWI 从机地址寄存器其值为从机地址。 Bit 0 TWGCE: 使能TWI 广播识别置位后MCU 可以识别TWI 总线广播。,串行接口及应用TWI,TWI 数据传输过程中的规则总结如下: 当TWI 完成一次操作并等待

10、反馈时,TWINT 标志置位。直到TWINT 清零,时钟线SCL 才会拉低。 TWINT标志置位时,TWDR 寄存器必须载入下一个总线周期中要发送的值。 当所有的TWI 寄存器得到更新,而且其它挂起的应用程序也已经结束, TWCR 被写入数据。写 TWCR 时, TWINT 位应为置位状态。对TWINT 写“1” 清除此标志。TWI 将开始执行由TWCR 设定的操作。,串行接口及应用TWI,1、数据传输模式 TWI 可工作于4个不同的模式:主机发送器(MT)、主机接收器 (MR)、从机发送器 (ST)及从机接收器(SR)。 同一应用程序可以使用几种模式。2、主机发送模式为进入主机模式,必须发送

11、START 信号。紧接着的地址包格式决定进入MT 或MR 模式。 如果发送 SLA+W 进入MT 模式;如果发送SLA+R 则进入MR 模式。本节所提到的状态字均假设其预分频位为“0”。,串行接口及应用TWI,(1)通过在TWCR 寄存器中写入下列数值发出START 信号:,TWEN必须置位以使能两线接口TWSTA必须置“1”来发出START 信号TWINT必须置“1”来对TWINT标志清零 TWI 逻辑开始检测串行总线,一旦总线空闲就发送START。接着中断标志TWINT 置位,TWSR 的状态码为0 x08。,串行接口及应用TWI,(2)为进入MT 模式 ,必须发送SLA+W,可对TWDR

12、 写入SLA+W来实现。 完成此操作后软件清零TWINT标志, TWI 传输继续进行。在 TWCR 寄存器中写入下述值完成此操作:,串行接口及应用TWI,当SLA+W 发送完毕并接收到确认信号,主机的TWINT标志再次置位。此时主机的TWSR状态码可能是0 x18、0 x20 。SLA+W 发送成功后可以开始发送数据包,通过对TWDR 写入数据实现。,串行接口及应用TWI,(3) TWDR 只有在TWINT 为高时方可写入。否则,访问被忽略,寄存器TWCR 的写碰撞位TWWC 置位。TWDR更新后,TWINT位应清零后继续传送。通过对 TWCR寄存器中写入下述值完成操作:,串行接口及应用TWI

13、,(4) 这过程会一直重复下去,直到最后的字节发送完且发送器产生 STOP 或REPEATED START 信号 。STOP 信号通过在 TWCR 中写入下述值实现:,串行接口及应用TWI,(5)在REPEATED START ( 状态0 x10) 后,两线接口可以再次访问相同的从机,或不发送STOP信号来访问新的从机。REPEATED START 使得主机可以在不丢失总线控制的条件下在从机、主机发送器及主机接收器模式间进行切换。REPEATED START 信号通过在 TWCR 中写入下述值实现:,串行接口及应用TWI,表: 主机发送模式的状态码,串行接口及应用TWI,表 主机发送模式的状态

14、码 (续表),典型数据传输中应用程序与TWI 的接口(数据手册P171),串行接口及应用TWI,3、主机接收模式 在主机接收模式,主机可以从从机接收数据。为进入主机模式,必须发送START 信号。紧接着的地址包格式决定进入MT 或MR 模式。 如果发送 SLA+W 进入MT 模式;如果发送SLA+R 则进入MR 模式。,串行接口及应用TWI,表: 主机接收模式的状态码,串行接口及应用TWI,表 主机接收模式的状态码 (续表),串行接口及应用TWI,4、从机发送模式如图5.20:从机发送模式下的数据传输,串行接口及应用TWI,(1)启动从机发送模式,TWAR 与TWCR 设置:,(2)前7 位是

15、主机寻址时从机响应的TWI 接口地址。若LSB 置位,则TWI 接口响应广播地址0 x00。否则忽略广播地址。,串行接口及应用TWI,TWEN必须置位以使能TWI接口。TWEA也要置位以便主机寻址到自己(从机地址或广播)时返回确认信息ACK。TWSTA 和TWSTO 必须清零。初始化TWAR 和TWCR 之后, TWI 接口即开始等待,直到自己的从机地址( 或广播地址,如果TWAR 的TWGCE 置位的话) 出现在主机寻址地址当中,并且数据方向位为“1”(读)。然后TWI 中断标志置位,TWSR 则包含了相应的状态码。,串行接口及应用TWI,如果在传输过程中TWEA 复位,TWI 接口发送完数

16、据之后进入状态0 xC0 或0 xC8。接口也切换到未寻址从机模式,忽略任何后续总线传输。从而主机接收到的数据全为“1”。如果主机需要附加数据位( 通过发送ACK),即使从机已经传送结束,也进入状态0 xC8。 TWEA复位时TWI接口不再响应自己的从机地址,但是会继续监视总线。一旦TWEA置位就可以恢复地址识别和响应。也就是说,可以利用TWEA 暂时将TWI 接口从总线中隔离出来。,串行接口及应用TWI,在除空闲模式外的其它休眠模式时, TWI 接口的时钟被关闭。若使能了从机接收模式,接口将利用总线时钟继续响应广播地址/ 从机地址。地址匹配将唤醒CPU。在唤醒期间,TWI接口将保持SCL为低

17、电平,直至TWCINT标志清零。,串行接口及应用TWI,当AVR时钟恢复正常运行后可以发送更多的数据。显然如果AVR 设置为长启动时间,时钟线SCL 可能会长时间保持低,阻塞其它数据的传送。 当MCU 从这些休眠模式唤醒时,和正常工作模式不同的是,数据寄存器TWDR 的数据并不反映总线上出现的最后一个字节。,串行接口及应用TWI,表5.9: 从机发送模式的状态码,串行接口及应用TWI,其他状态:有两个状态码没有相应的 TWI 状态定义。状态0 xF8 表明当前没有相关信息,因为中断标志TWINT 为“0”。状态0 x00表示在串行传输过程中发生了总线错误。当START 或STOP 出现在错误的

18、位置时总线错误就会发生。这将导致TWI 接口进入未寻址从机模式、标志TWSTO 被清零(TWCR 的其他位不受影响),以及SDA 和SCL 被释放,但是不会产生STOP。,串行接口及应用TWI,表5.10 其它状态码,串行接口及应用TWI,将几个TWI 模式组合到一起:在某些情况下,为完成期望的工作,必须将几种TWI模式组合起来。例如从串行EEPROM读取数据。典型的这种传输包括以下步骤:1. 传输必须启动2. 必须告诉EEPROM 读取的位置3. 必须完成读操作4. 传送必须结束,串行接口及应用TWI,注意数据可从主机传到从机,反之也可。首先主机必须告诉读从机读取实际的位置,因此需要使用MT

19、 模式;然后数据必须由从机读出,需要使用MR 模式,但传送方向必须改变。在上述步骤中,主机必须保持对总线的控制,且以上各步骤应该自动进行。如果在多主机系统中违反这一规则,即在第二步与第三步之间其它主机改变EEPROM 中的数据指针,则主机读取的数据位置是错误的。传送方向改变是通过在发送地址字节与接收数据之间发送REPEATED START 信号来实现的。在发送REPEATED START 信号后,主机继续保持总线的控制权。,串行接口及应用TWI,下图给出传送的流程图(从机读流程)。,串行接口及应用TWI,例5.14 在读方式下往从器件写入一个地址字节。void f_I2cWriteAdd_R(

20、unsigned char uc_I2CAdd) /写从器件地址和读方式TWDR=(uc_I2CAdd);TWCR=(1TWINT) |(1TWEN) ; /写数据到TWDRwhile(!(TWCR,串行接口及应用TWI,例5.15 往从器件写入一个数据字节。void f_I2cWriteData_R(unsigned char uc_I2CData) /写从器件数据TWDR=(uc_I2CData);TWCR=(1TWINT) |(1TWEN) /写数据到TWDRwhile(!(TWCR,串行接口及应用TWI,例5.16 读从器件,返回字节数据。要求接收到ACK信号。unsigned cha

21、r f_I2Cread1(viod) /读返回数据unsigned char uc_ReturnData;TWCR=( TWCR,串行接口及应用TWI,AT24C02,AT24C02是由ATMEL公司提供的,I2C总线串行EEPROM,其容量为2Kbit(256B),工作电压在2.7V5.5V之间,生产工艺是CMOS工艺。,各引脚功能如下。A2A0:器件地址选择引脚。将这3个引脚配置成不同的编码值,在同一串行总线上最多可扩充8片同一容量或不同容量的24系列串行EEPROM芯片。SDA:串行数据输入输出口,是一个双向的漏极开路结构的引脚,容量扩展时可以将多片24系列的SDA引脚直接相连。SCL:串行移位时钟控制端。写入时上升沿起作用,读出时下降沿起作用。WP:硬件写保护控制引脚。当其为低电平时,正常写操作,高电平时,对EEPROM部分存储区域提供硬件写保护功能,即对被保护区域只能读不能写。GND:接地。VCC:接+5V电压,串行接口及应用TWI,电路设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1