首页 理论教育 学习AVR单片机开发:TWI寄存器详解

学习AVR单片机开发:TWI寄存器详解

时间:2023-10-17 理论教育 版权反馈
【摘要】:因此,在清零TWINT之前一定要首先完成对地址寄存器TWAR、状态寄存器TWSR,以及数据寄存器TW- DR的访问。位3——TWWC:TWI写冲突标志当TWINT为低时写数据寄存器TWDR将置位TWWC。位[7:1]——TWA:TWI从机地址寄存器其值为从机地址。

学习AVR单片机开发:TWI寄存器详解

1.TWI波特率寄存器——TWBR

位[7:0]——TWI波特率寄存器

TWBR为波特率发生器分频因子。波特率发生器是一个分频器,在主机模式下产生SCL时钟频率。波特率计算公式请见“波特率发生器单元”。

2.TWI控制寄存器——TWCR

TWCR用来控制TWI操作。它用来使能TWI,通过施加START到总线上来启动主机访问,产生接收器应答,产生STOP状态,以及在写入数据到TWDR寄存器时控制总线的暂停等。这个寄存器还可以给出在TWDR无法访问期间,试图将数据写入到TWDR而引起的写入冲突信息。

(1)位7——TWINT:TWI中断标志

当TWI完成当前工作,希望应用程序介入时TWINT置位。若SREG的I标志以及TWCR寄存器的TWIE标志也置位,则MCU执行TWI中断例程。当TWINT置位时,SCL信号的低电平被延长。TWINT标志的清零必须通过软件写“1”来完成。执行中断时硬件不会自动将其改写为“0”。要注意的是,只要这一位被清零,TWI立即开始工作。因此,在清零TWINT之前一定要首先完成对地址寄存器TWAR、状态寄存器TWSR,以及数据寄存器TW- DR的访问。

(2)位6——TWEA:使能TWI应答

TWEA标志控制应答脉冲的产生。若TWEA置位,出现如下条件时接口发出ACK脉冲:

●器件的从机地址与主机发出的地址相符合。

●TWAR的TWGCE置位时接收到广播呼叫。

●在主机/从机接收模式下,接收到一个字节的数据后将TWEA清零,可以使器件暂时

脱离总线。置位后器件重新恢复地址识别。

(3)位5——TWSTA:TWISTART状态标志

当CPU希望自己成为总线上的主机时需要置位TWSTA。TWI硬件检测总线是否可用。若总线空闲,接口就在总线上产生START状态。若总线忙,接口就一直等待,直到检测到一个STOP状态,然后产生START以声明自己希望成为主机。发送START之后软件必须清零TWSTA。

(4)位4——TWSTO:TWISTOP状态标志

在主机模式下,如果置位TWSTO,TWI接口将在总线上产生STOP状态,然后TWSTO自动清零。在从机模式下,置位TWSTO可以使接口从错误状态恢复到未被寻址的状态。此时总线上不会有STOP状态产生,但TWI返回一个定义好的未被寻址的从机模式且释放SCL与SDA为高阻态。

(5)位3——TWWC:TWI写冲突标志

当TWINT为低时写数据寄存器TWDR将置位TWWC。当TWINT为高时,每一次对TWDR的写访问都将更新此标志。

(6)位2——TWEN:TWI使能

TWEN位用于使能TWI操作与激活TWI接口。当TWEN位被写为“1”时,TWI引脚将I/O引脚切换到SCL与SDA引脚,使能波形斜率限制器与尖峰滤波器。如果该位清零,TWI接口模块将被关闭,所有TWI传输将被终止。

(7)位1——Res:保留(www.xing528.com)

保留,读返回值为“0”。

(8)位0——TWIE:使能TWI中断

当SREG的I以及TWIE置位时,只要TWINT为“1”,TWI中断就激活。

3.TWI状态寄存器——TWSR

(1)位[7:3]——TWS:TWI状态

这5位用来反映TWI逻辑和总线的状态。不同的状态代码将会在后面部分进行描述。注意从TWSR读出的值包括5位状态值与2位预分频值。检测状态位时设计者应屏蔽预分频位为“0”。这使状态检测独立于预分频器设置。

(2)位2——Res:保留

保留,读返回值为“0”。

(3)位[1:0]——TWPS:TWI预分频位

这两位可读/写,用于控制波特率预分频因子。

4.TWI数据寄存器——TWDR

在发送模式,TWDR包含了要发送的字节;在接收模式,TWDR包含了接收到的数据。当TWI接口没有进行移位工作(TWINT置位)时,这个寄存器是可写的。在第一次中断发生之前用户不能够初始化数据寄存器。只要TWINT置位,TWDR的数据就是稳定的。在数据移出时,总线上的数据同时移入寄存器。TWDR总是包含了总线上出现的最后一个字节,除非MCU是从掉电或省电模式被TWI中断唤醒。此时TWDR的内容没有定义。总线仲裁失败时,主机将切换为从机,但总线上出现的数据不会丢失。ACK的处理由TWI逻辑自动管理,CPU不能直接访问ACK。

位[7:0]——TWD:TWI数据寄存器根据状态的不同,其内容为要发送的下一个字节,或是接收到的数据。

5.TWI(从机)地址寄存器——TWAR

TWAR的高7位为从机地址。工作于从机模式时,TWI将根据这个地址进行响应。主机模式不需要此地址。在多主机系统中,TWAR需要进行设置以便其他主机访问自己。

TWAR的LSB用于识别广播地址(0x00)。器件内有一个地址比较器。一旦接收到的地址和本机地址一致,芯片就请求中断。

(1)位[7:1]——TWA:TWI从机地址寄存器

其值为从机地址。

(2)位0——TWGCE:使能TWI广播识别

置位后MCU可以识别TWI总线广播。

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

我要反馈