首页 第16章 串行TWI(I2C)接口应用

第16章 串行TWI(I2C)接口应用

举报
开通vip

第16章 串行TWI(I2C)接口应用第第1616章章串行串行TWI(I2C)TWI(I2C)接口应用接口应用liudongz2003@163.com刘东卓16.1、I2C串行总线介绍z采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。z常用的串行扩展总线有:I2C(InterICBUS)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线...

第16章 串行TWI(I2C)接口应用
第第1616章章串行串行TWI(I2C)TWI(I2C)接口应用接口应用liudongz2003@163.com刘东卓16.1、I2C串行总线介绍z采用串行总线技术可以使系统的硬件 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。z常用的串行扩展总线有:I2C(InterICBUS)总线、单总线(1-WIREBUS)、SPI(SerialPeripheralInterface)总线及Microwire/PLUS等。I2C总线是PHLIPS公司推出的一种串行总线,是具备多主机系统所需的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。I2C总线通过上拉电阻接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。每个接到I2C总线上的器件都有唯一的地址。主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由总线上接收数据的器件则为接收器。在多主机系统中,可能同时有几个主机企图启动总线传送数据。为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。2、起始信号时序和终止信号时序起始信号时序:当SCL线为高电平时,SDA由高电平向低电平。停止信号时序:SCL线为高电平时,SDA线由低电平向高电平。起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。3、数据传送格式(1)字节传送与应答每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。由于某种原因从机不对主机寻址信号应答时(如从机正在进行实时性的处理工作而无法接收总线上的数据),它必须将数据线置于高电平,而由主机产生一个终止信号以结束总线的数据传送。如果从机对主机进行了应答,但在数据传送一段时间后无法继续接收更多的数据时,从机可以通过对无法接收的第一个数据字节的“非应答”通知主机,主机则应发出终止信号以结束数据的继续传送。当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一个结束传送的信号。这个信号是由对从机的“非应答”来实现的。然后,从机释放SDA线,以允许主机产生终止信号。(2)数据帧格式I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。在起始信号后必须传送一个从机的地址(7位),第8位是数据的传送方向位(R/T),用“0”表示主机发送数据(T),“1”表示主机接收数据(R)。每次数据传送总是由主机产生的终止信号结束。但是,若主机希望继续占用总线进行新的数据传送,则可以不产生终止信号,马上再次发出起始信号对另一从机进行寻址。在总线的一次数据传送过程中,可以有以下几种组合方式:a、主机向从机发送数据,数据传送方向在整个传送过程中不变:注:有阴影部分表示数据由主机向从机传送,无阴影部分则表示数据由从机向主机传送。A表示应答,A非表示非应答(高电平)。S表示起始信号,P表示终止信号。b、主机在第一个字节后,立即从从机读数据c、在传送过程中,当需要改变传送方向时,起始信号和从机地址都被重复产生一次,但两次读/写方向位正好反相。4、总线的寻址I2C总线协议有明确的 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 :采用7位的寻址字节(寻址字节是起始信号后的第一个字节)。(1)寻址字节的位定义D7~D1位组成从机的地址。D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。z主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/T位将自己确定为发送器或接收器。z从机的地址由固定部分和可编程部分组成。在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。16.2AVR的TWI(I2C)TWI(I2C)接口接口与使用与使用SCL和SDA引脚SCL与SDA为MCU的TWI接口引脚。引脚的输出驱动器包含一个波形斜率限制器以满足TWI规范。引脚的输入部分包括尖峰抑制单元以去除小于50ns的毛刺。当相应的端口设置为SCL与SDA引脚时,可以使能I/O口内部的上拉电阻,这样可省掉外部的上拉电阻。比特率发生器单元比特率发生器单元TWI工作于主机模式时,比特率发生器控制时钟信号SCL的周期。TWBR=TWI比特率寄存器的数值TWPS=TWI状态寄存器预分频的数值总线接口单元该单元包括数据与地址移位寄存器TWDR,START/STOP控制器和总线仲裁判定硬件电路。TWDR寄存器用于存放发送或接收的数据或地址。除了8位的TWDR,总线接口单元还有一个寄存器,包含了用于发送或接收应答的(N)ACK。这个(N)ACK寄存器不能由程序直接访问。当接收数据时,它可以通过TWI控制寄存器TWCR来置位或清零;在发送数据时,(N)ACK值由TWCR的设置决定。地址匹配单元地址匹配单元将检测从总线上接收到的地址是否与TWAR寄存器中的7位地址相匹配。控制单元控制单元监听TWI总线,并根据TWI控制寄存器TWCR的设置作出相应的响应。当TWI总线上产生需要应用程序干预处理的事件时,TWI中断标志位TWINT置位。在下一个时钟周期,TWI状态寄存器TWSR被表示这个事件的状态码字所更新。在其它时间里,TWSR的内容为一个表示无事件发生的特殊状态字。一旦TWINT标志位置"1”,时钟线SCL即被拉低,暂停TWI总线上的数据传输,让用户程序处理事件。在下列状况出现时,TWINT标志位置位:•在TWI传送完START/REPEATEDSTART信号之后•在TWI传送完SLA+R/W数据之后•在TWI传送完地址字节之后•在TWI总线仲裁失败之后•在TWI被主机寻址之后(广播方式或从机地址匹配)•在TWI接收到一个数据字节之后•作为从机工作时,TWI接收到STOP或REPEATEDSTART信号之后•由于非法的START或STOP信号造成总线错误时TWI寄存器TWI比特率寄存器-TWBR•Bits7..0–TWI比特率寄存器TWBR为比特率发生器分频因子。比特率发生器是一个分频器,在主机模式下产生SCL时钟频率。比特率计算公式请见“比特率发生器单元”。TWI控制寄存器-TWCR•Bit7–TWINT:TWI中断标志当TWI完成当前工作,希望应用程序介入时TWINT置位。若SREG的I标志以及TWCR寄存器的TWIE标志也置位,则MCU执行TWI中断例程。当TWINT置位时,SCL信号的低电平被延长。TWINT标志的清零必须通过软件写“1”来完成。执行中断时硬件不会自动将其改写为“0”。要注意的是,只要这一位被清零,TWI立即开始工作。因此,在清零TWINT之前一定要首先完成对地址寄存器TWAR,状态寄存器TWSR,以及数据寄存器TWDR的访问。•Bit6–TWEA:使能TWI应答TWEA标志控制应答脉冲的产生。若TWEA置位,出现如下条件时接口发出ACK脉冲:1.器件的从机地址与主机发出的地址相符合2.TWAR的TWGCE置位时接收到广播呼叫3.在主机/从机接收模式下接收到一个字节的数据将TWEA清零可以使器件暂时脱离总线。置位后器件重新恢复地址识别。•Bit5–TWSTA:TWISTART状态标志当CPU希望自己成为总线上的主机时需要置位TWSTA。TWI硬件检测总线是否可用。若总线空闲,接口就在总线上产生START状态。若总线忙,接口就一直等待,直到检测到一个STOP状态,然后产生START以声明自己希望成为主机。发送START之后软件必须清零TWSTA。•Bit4–TWSTO:TWISTOP状态标志在主机模式下,如果置位TWSTO,TWI接口将在总线上产生STOP状态,然后TWSTO自动清零。在从机模式下,置位TWSTO可以使接口从错误状态恢复到未被寻址的状态。此时总线上不会有STOP状态产生,但TWI返回一个定义好的未被寻址的从机模式且释放SCL与SDA为高阻态。•Bit3–TWWC:TWI写碰撞标志当TWINT为低时写数据寄存器TWDR将置位TWWC。当TWINT为高时,每一次对TWDR的写访问都将更新此标志。•Bit2–TWEN:TWI使能TWEN位用于使能TWI操作与激活TWI接口。当TWEN位被写为“1”时,TWI引脚将I/O引脚切换到SCL与SDA引脚,使能波形斜率限制器与尖峰滤波器。如果该位清零,TWI接口模块将被关闭,所有TWI传输将被终止。•Bit1–Res:保留保留,读返回值为”0”。•Bit0–TWIE:使能TWI中断当SREG的I以及TWIE置位时,只要TWINT为"1”,TWI中断就激活。TWI状态寄存器-TWSR•Bits7..3–TWS:TWI状态这5位用来反映TWI逻辑和总线的状态。不同的状态代码将会在后面的部分描述。注意从TWSR读出的值包括5位状态值与2位预分频值。检测状态位时设计者应屏蔽预分频位为“0”。这使状态检测独立于预分频器设置。在无特殊声明的情况下,在手册中使用该方法。•Bit2–Res:保留保留,读返回值为"0”。•Bits1..0–TWPS:TWI预分频位这两位可读/写,用于控制比特率预分频因子。TWI比特率预分频器TWI数据寄存器-TWDR在发送模式,TWDR包含了要发送的字节;在接收模式,TWDR包含了接收到的数据。当TWI接口没有进行移位工作(TWINT置位时这个寄存器是可写的。在第一次中断发生之前用户不能够初始化数据寄存器。只要TWINT置位,TWDR的数据就是稳定的。在数据移出时,总线上的数据同时移入寄存器。TWDR总是包含了总线上出现的最后一个字节,除非MCU是从掉电或省电模式被TWI中断唤醒。此时TWDR的内容没有定义。总线仲裁失败时,主机将切换为从机,但总线上出现的数据不会丢失。ACK的处理由TWI逻辑自动管理,CPU不能直接访问ACK。•Bits7..0–TWD:TWI数据寄存器根据状态的不同,其内容为要发送的下一个字节,或是接收到的数据。TWI(从机)地址寄存器-TWARTWAR的高7位为从机地址。工作于从机模式时,TWI将根据这个地址进行响应。主机模式不需要此地址。在多主机系统中,TWAR需要进行设置以便其他主机访问自己。TWAR的LSB用于识别广播地址(0x00)。器件内有一个地址比较器。一旦接收到的地址和本机地址一致,芯片就请求中断。•Bits7..1–TWA:TWI从机地址寄存器其值为从机地址。•Bit0–TWGCE:使能TWI广播识别置位后MCU可以识别TWI总线广播。典型数据传输中应用程序与TWI的接口TWI传输的第一步是发送START信号。通过对TWCR写入特定值,指示TWI硬件发送START信号。写入的值将在后面说明。在写入值时TWINT位要置位,这非常重要。给TWINT写“1”清除此标志。TWCR寄存器的TWINT置位期间TWI不会启动任何操作。一旦TWINT清零,TWI由START信号启动数据传输。2.START信号被发送后,TWCR寄存器的TWINT标志位置位,TWCR更新为新的状态码,表示START信号成功发送。3.应用程序应检验TWSR,确定START信号已成功发送。如果TWSR显示为其它,应用程序可以执行一些指定操作,比如调用错误处理程序。如果状态码与预期一致,应用程序必须将SLA+W载入TWDR。TWDR可同时在地址与数据中使用。TWDR载入SLA+W后,TWCR必须写入特定值指示TWI硬件发送SLA+W信号。写入的值将在后面说明。在写入值时TWINT位要置位,这非常重要。给TWINT写“1”清除此标志。TWCR寄存器的TWINT置位期间TWI不会启动任何操作。一旦TWINT清零,TWI启动地址包的传送。4.地址包发送后,TWCR寄存器的TWINT标志位置位,TWDR更新为新的状态码,表示地址包成功发送。状态代码还会反映从机是否响应包。5.应用程序应检验TWSR,确定地址包已成功发送、ACK为期望值。如果TWSR显示为其它,应用程序可能执行一些指定操作,比如调用错误处理程序。如果状态码与预期一致,应用程序必须将数据包载入TWDR。随后,TWCR必须写入特定值指示TWI硬件发送TWDR中的数据包。写入的值将在后面说明。在写入值时TWINT位要置位,这非常重要。TWCR寄存器中的TWINT置位期间TWI不会启动任何操作。一旦TWINT清零,TWI启动数据包的传输。6.数据包发送后,TWCR寄存器的TWINT标志位置位,TWSR更新为新的状态码,表示数据包成功发送。状态代码还会反映从机是否响应包。7.应用程序应检验TWSR,确定地址包已成功发送、ACK为期望值。如果TWSR显示为其它,应用程序可能执行一些指定操作,比如调用错误处理程序。如果状态码与预期一致,TWCR必须写入特定值指示TWI硬件发送STOP信号。写入的值将在后面说明。在写入值时TWINT位要置位,这非常重要。给TWINT写“1”清除此标志。TWCR寄存器中的TWINT置位期间TWI不会启动任何操作。一旦TWINT清零,TWI启动STOP信号的传送。注意TWINT在STOP状态发送后不会置位。手册172页三、I2C协议的AD5161
本文档为【第16章 串行TWI(I2C)接口应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥16.9 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
慢慢老师
暂无简介~
格式:pdf
大小:1MB
软件:PDF阅读器
页数:0
分类:其他高等教育
上传时间:2021-10-16
浏览量:8