首页 理论教育 使用IIC模块寄存器的实践-单片机与嵌入式系统

使用IIC模块寄存器的实践-单片机与嵌入式系统

时间:2023-11-19 理论教育 版权反馈
【摘要】:当IIC模块处于主设备时,该寄存器忽略,IIC地址寄存器如图12-7所示。写IIC1C寄存器将清除该位。

使用IIC模块寄存器的实践-单片机与嵌入式系统

IIC模块的控制通过寄存器实现,在其内部结构中与模块相关的寄存器有5个,即IIC地址寄存器(IIC1A)、IIC频率分频寄存器(IIC1F)、IIC控制寄存器(IIC1C)、IIC状态寄存器(IIC1S)和IIC数据寄存器(IIC1D)。

1.IIC地址寄存器IIC1A

当IIC模块作为从设备时,该寄存器用于设定IIC模块的从地址,对于不同的从设备该地址不同,只有和命令中的地址相同的从设备才会响应主设备。当IIC模块处于主设备时,该寄存器忽略,IIC地址寄存器如图12-7所示。

●ADDR[7:1]:包含被IIC模块使用的从机地址。该寄存器包含7位地址方案和10位地址方案中的低7位。当IIC模块为从设备时,模块将会响应主设备的地址呼叫。

2.IIC频率分频寄存器IIC1F

IIC模块频率分频寄存器主要用于确定IIC模块的串行总线时钟频率。

IIC时钟频率=总线时钟/(mul×SCL分频系数) (式12-1)

式中总线频率为Hz,mul和SCL分频因子由本寄存器设定,IIC模块频率分频寄存器见图12-8。

978-7-111-50417-7-Chapter12-6.jpg

图12-6 IIC模块内部框结构图

978-7-111-50417-7-Chapter12-7.jpg

图12-7 IIC地址寄存器

978-7-111-50417-7-Chapter12-8.jpg

图12-8 IIC模块频率分频寄存器

●MULT:IIC倍频因子位(IIC Multiplier Factor),定义了倍频因子(mul),mul和SCL分频系数一起确定IIC的波特率,倍频因子共有3种,如表12-1所示。

●ICR:IIC时钟速率位(IIC Clock Rate),用于总线时钟预分频。此6位定义了SCL分频系数和SDA维持时间,IIC分频因子和保持值如表12-2所示。SDA维持时间定义为从SCL的下降沿到SDA发生改变的延迟时间。维持时间的计算公式如下:

SDA维持时间=总线周期×SDA维持值 (式12-2)

式中,总线周期的单位为s。

表12-1 IIC倍频因子表

978-7-111-50417-7-Chapter12-9.jpg

表12-2 IIC分频因子和保持值

978-7-111-50417-7-Chapter12-10.jpg

例如:内部总线频率为4MHz,倍频因子为2(即MULT=01),要使IIC总线频率设置在100kbit/s,则代入式12-1计算。

100000=4000000/(2×SCL分频系数)

可得SCL分频系数=20,此时,ICR=0x00,SDA维持值=7。代入式12-2计算可得

SDA维持时间=(1/4000000)s×7=1.75μs。

3.IIC控制寄存器IIC1C

IIC控制寄存器主要用于IIC模块、中断、应答使能,以及选择主模式、从模式和发送模式等控制,是模块中较为重要的寄存器之一,IIC控制寄存器见图12-9。

978-7-111-50417-7-Chapter12-11.jpg

图12-9 IIC控制寄存器

●IICEN:IIC模块使能位(IIC Enable)。

0:IIC模块禁用。

1:IIC模块使能。

●IICIE:IIC中断使能位(IIC Interrupt Enable)。

0:IIC中断禁止。

1:IIC中断使能。

●MST:主设备模式选择位(Master Mode Select)。在该位由0变为1时,主设备模式被选定,总线上产生一个开始(START)信号。在该位由1变为0时,IIC模块由主设备模式变为从设备模式,总线产生一个停止(STOP)信号。

0:从设备模式。

1:主设备模式。

●TX:发送模式选择位(Transmit Mode Select)。用于选择主/从设备模式下的传送方向。在主设备模式下,根据传送要求的类型确定TX位是否置位,因而对于寻址周期而言,该位将始终为高。当IIC模块作为从设备被寻址时,软件根据状态寄存器的从设备读/写标志位(SRW)选择是否将TX位置位。(www.xing528.com)

0:接收。

1:发送。

●TXAK:发送应答使能位(Transmit Acknowledge Enable)。

0:接收到一字节数据后,发送应答信号到总线上。

1:不发送应答信号。

●RSTA:重复开始位(Repeat START)。如果MCU的IIC模块是当前主设备,向该位写1将产生一个重复开始信号。读该位始终为0,在错误时间发送重复开始信号将导致仲裁失败。

4.IIC状态寄存器IIC1S

IIC状态寄存器用于显示IIC模块数据传输是否完成、总线忙碌和是否收到应答等当前状态,IIC状态寄存器如图12-10所示。

978-7-111-50417-7-Chapter12-12.jpg

图12-10 IIC状态寄存器

●TCF:传输完成标志位(Transfer Complete Flag),当一字节传送完成后该位置位。注意,该位只在向IIC模块发送数据或接收数据期间或结束后片刻才有效。接收模式下读IIC1D存器或在发送模式时写IIC1D存器,均可清除该位。

0:正在传送。

1:传送完成。

●IAAS:从设备寻址位(Addressed as a Slave),当调用地址与从设备的可编程地址(由IIC1A的值和读/写位确定)匹配时,该位置位。写IIC1C寄存器将清除该位。

0:未被寻址。

1:作为从设备被寻址到。

●BUSY。总线忙标志位(Bus Busy),不管IIC模块处于主设备模式还是从设备模式,该位都表明总线的当前状态。当检测到起始信号,BUSY位置位,当检测到STOP信号时该位清除。

0:总线空闲。

1:总线忙。

●ARBL:仲裁失败标志位(Arbitration Lost),仲裁过程失败时该位将硬件置位,ARBL必须通过软件向该位写1才能清除。

0:标准总线操作。

1:仲裁失败。

●SRW:从设备读/写标志位(Slave Read/Write)。

0:从设备接收,主设备写数据到从设备。

1:从设备发送,主设备读取从设备数据。

●IICIF:IIC中断标志位(IIC Interrupt Flag),必须通过软件向该位写1才能清除。当一字节传送完毕、从地址匹配调用地址或仲裁失败这3类事件中的任意一种发生时都将置位IICIF位。

0:未产生中断。

1:产生中断。

●RXAK:接收应答位(Receive Acknowledge),该位为低表明在总线传送完一字节后收到一个应答信号;该位为高表示未收到应答信号。

0:收到应答信号。

1:未收到应答信号。

5.IIC数据寄存器IIC1D

IIC数据寄存器可用于暂存接收或发送数据,IIC数据寄存器如图12-11所示。

978-7-111-50417-7-Chapter12-13.jpg

图12-11 IIC数据寄存器

●DATA:数据位(Data)。

在主设备发送模式下,如果数据写入IIC1D将开始一次数据传送,最高有效位(MSB)先被发送。在主设备接收模式,读取该寄存器开始下一字节数据接收。需要注意的是,当主设备由接收模式转为发送模式时,IIC模块应在读IIC1D前切换以避免无意中启动一次主设备接收数据传送。

在从设备模式下,当地址匹配后,IIC1D的功能和主设备模式时相同。注意,需由IIC1C寄存器中的TX位确定主/从设备模式下的数据传送方向。

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

我要反馈