首页 理论教育 TWI模块综述->AVR单片机开发入门与实例分析

TWI模块综述->AVR单片机开发入门与实例分析

时间:2023-10-17 理论教育 版权反馈
【摘要】:TWI模块由几个子模块组成,如图10-21所示。注意,从机可能会延长SCL低电平的时间,从而降低TWI总线的平均时钟周期。图10-21 TWI功能模块图SCL的频率根据以下的公式产生:其中:●TWBR为TWI波特率寄存器的数值。TWI工作在主机模式时,TWBR值应该不小于10。START/STOP控制器负责产生和检测TWI总线上的START、REPEATEDSTART与STOP状态。在下一个时钟周期,TWI状态寄存器TWSR被表示这个事件的状态码字所更新。

TWI模块综述->AVR单片机开发入门与实例分析

TWI模块由几个子模块组成,如图10-21所示。所有位于粗线之中的寄存器可以通过AVR数据总线进行访问。

1.SCL和SDA引脚

SCL与SDA为MCU的TWI接口引脚。引脚的输出驱动器包含一个波形斜率限制器以满足TWI规范。引脚的输入部分包括尖峰抑制单元以去除小于50ns的毛刺。当相应的端口设置为SCL与SDA引脚时,可以使能I/O口内部的上拉电阻,这样可省掉外部的上拉电阻。

2.比特率发生器单元

TWI工作于主机模式时,比特率发生器控制时钟信号SCL的周期。具体由TWI状态寄存器TWSR的预分频系数和比特率寄存器TWBR设定。当TWI工作在从机模式时,不需要对比特率或预分频进行设定,但从机的CPU时钟频率必须大于TWI时钟线SCL频率的16倍。注意,从机可能会延长SCL低电平的时间,从而降低TWI总线的平均时钟周期。

978-7-111-35161-0-Chapter10-86.jpg

图10-21 TWI功能模块图

SCL的频率根据以下的公式产生:

978-7-111-35161-0-Chapter10-87.jpg

其中:

●TWBR为TWI波特率寄存器的数值。

●TWPS为TWI状态寄存器预分频的数值。

TWI工作在主机模式时,TWBR值应该不小于10。否则主机会在SDA与SCL产生错误输出作为提示信号。问题出现于TWI工作在主机模式下,向从机发送Start+SLA+R/W的时候(不需要真的有从机与总线连接)。

3.总线接口单元

该单元包括数据与地址移位寄存器TWDR、START/STOP控制器和总线仲裁判定硬件电路。TWDR寄存器用于存放发送或接收的数据或地址。除了8位的TWDR,总线接口单元还有一个寄存器,包含了用于发送或接收应答的(N)ACK。这个(N)ACK寄存器不能由程序直接访问。当接收数据时,它可以通过TWI控制寄存器TWCR来置位或清零;在发送数据时,(N)ACK值由TWCR的设置决定。

START/STOP控制器负责产生和检测TWI总线上的START、REPEATEDSTART与STOP状态。即使在MCU处于休眠状态时,START/STOP控制器仍然能够检测TWI总线上的START/STOP条件,当检测到自己被TWI总线上的主机寻址时,将MCU从休眠状态唤醒。(www.xing528.com)

如果TWI以主机模式启动了数据传输,仲裁检测电路将持续监听总线,以确定是否可以通过仲裁获得总线控制权。如果总线仲裁单元检测到自己在总线仲裁中丢失了总线控制权,则通知TWI控制单元执行正确的动作,并产生合适的状态码。

4.地址匹配单元

地址匹配单元将检测从总线上接收到的地址是否与TWAR寄存器中的7位地址相匹配。如果TWAR寄存器的TWI广播应答识别使能位TWGCE为“1”,从总线接收到的地址也会与广播地址进行比较。一旦地址匹配成功,控制单元将得到通知以进行正确地响应。TWI可以响应,也可以不响应主机的寻址,这取决于TWCR寄存器的设置。即使MCU处于休眠状态时,地址匹配单元仍可继续工作。一旦主机寻址到这个器件,就可以将MCU从休眠状态唤醒。

5.控制单元

控制单元监听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信号造成总线错误时。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈