ATmega 16 单片机的TWI接口的相关寄存器(六)
2016-10-22 来源:eefocus
TWBR为比特率发生器分频因子。比特率发生器是一个分频器,在主机模式下产生SCL时钟频率。当TWI工作于从机模式时,不需要设定比特率寄存器或预分频系数,但从机的CPU频率必须大于TWI时钟线SCL频率的16倍。
f
f=—————————————
16+2*TWBR*4(TWPS)
注意:为了保持伟输的稳定,TWI工作在主机模式时TWBR的值不小于10。
2.TWCR——TWI控制寄存器
TWINT TWEA TWSTA TWSTO TWWC TWEN – TWIE
TWCR用来控制TWI操作。它用来使能TWI,通过施加START到总线上来启动主机访问,产生接收器应答,产生STOP状态,以及在写入数据到TWDR寄存器时控制总线的暂停等。这个寄存器还可以给出在TWDR无法访问期间,试图将数据写入到TWDR而引起的写入冲突信息。
位 7——TWINT:TWI中断标志
当TWI完成当前工作,希望应用程序介入时TWINT置位。若SREG的I标志以及TWCR寄存器的TWIE标志也置位,则MCU执行TWI中断例程。当TWINT置位时,SCL信号的低电平被延长。TWINT标志的清零必须通过软件写'1”来完成。执行中断时硬件不会自动将其改写为'0”。要注意的是,只要这一位被清零,TWI立即开始工作。因此,在清零TWINT之前一定要首先完成对地址寄存器TWAR,状态寄存器TWSR,以及数据寄存器TWDR的访问。
位 6——TWEA:使能TWI应答
TWEA标志控制应答脉冲的产生。若TWEA置位,出现如下条件时接口发出ACK脉冲:
(1).器件的从机地址与主机发出的地址相符合
(2).TWAR的TWGCE置位时接收到广播呼叫
(3).在主机/从机接收模式下接收到一个字节的数据
(4).将TWEA清零可以使器件暂时脱离总线。置位后器件重新恢复地址识别。
位 5——TWSTA:TWI START状态标志
当CPU希望自己成为总线上的主机时需要置位TWSTA。TWI硬件检测总线是否可用。若总线空闲,接口就在总线上产生START状态。若总线忙,接口就一直等待,直到检测到一个STOP状态,然后产生START以声明自己希望成为主机。发送START之后软件必须清零TWSTA。
位 4——TWSTO:TWI STOP状态标志
在主机模式下,如果置位TWSTO,TWI接口将在总线上产生STOP状态,然后TWSTO自动清零。在从机模式下,置位TWSTO可以使接口从错误状态恢复到未被寻址的状态。此时总线上不会有STOP状态产生,但TWI返回一个定义好的未被寻址的从机模式且释放SCL与SDA为高阻态。
位 3——TWWC:TWI写碰撞标志
当TWINT为低时写数据寄存器TWDR将置位TWWC。当TWINT为高时,每一次对TWDR的写访问都将更新此标志。
位 2——TWEN:TWI使能
TWEN位用于使能TWI操作与激活TWI接口。当TWEN位被写为'1”时,TWI引脚将I/O引脚切换到SCL与SDA引脚,使能波形斜率限制器与尖峰滤波器。如果该位清零,TWI接口模块将被关闭,所有TWI传输将被终止。
位1——Res:保留
保留,读返回值为”0”。
位 0——TWIE:使能TWI中断
当SREG的I以及TWIE置位时,只要TWINT为'1”,TWI中断就激活。
3.TWSR——TWI状态寄存器
位 [7..3]——TWS:TWI状态
这5位用来反映TWI逻辑和总线的状态。不同的状态代码将会在后面的部分描述。注意从TWSR读出的值包括5位状态值与2位预分频值。检测状态位时设计者应屏蔽预分频位为'0”。这使状态检测独立于预分频器设置。
位 2——Res:保留
保留,读返回值为'0”。
位[ 1..0]——TWPS:TWI预分频位
这两位可读/写,用于控制比特率预分频因子。
TWPS1 TWPS0 预分频器值
0 0 1
0 1 4
1 0 16
1 1 64
4.TWDR——TWI数据寄存器
位 [7..0[——TWD:TWI数据寄存器
根据状态的不同,其内容为要发送的下一个字节,或是接收到的数据。
5.TWAR——TWI地址寄存器
位[7..1]——TWA:TWI从机地址寄存器
其值为从机地址。
位0——TWGCE:使能TWI广播识别
置位后MCU可以识别TWI总线广播。