首页 理论教育 功能描述-I2C模块功能描述

功能描述-I2C模块功能描述

时间:2023-11-17 理论教育 版权反馈
【摘要】:每个I2C模块都具有主机和从机功能,要使其正常运转,SDA和SCL引脚必须设置成开漏形式。I2C总线每次传输的数据长度为9位,其中包括8位数据位和1位应答位。当接收器不能接收另一个完整的字节时,它会保持时钟线SCL为低电平,并强制发送器进入等待状态。第8位确定报文的方向。图8-7高速模式的数据格式3.中断I2C将在以下条件时产生中断:①主机通信完成。⑦监测到总线上发生停止条件。

功能描述-I2C模块功能描述

每个I2C模块都具有主机和从机功能,要使其正常运转,SDA和SCL引脚必须设置成开漏形式。典型的I2C总线配置如图8-2所示。

1.I2C总线的功能概述

I2C总线只使用两个信号:SDA和SCL。在TM4C123GH6PM微控制器上,它们的名称分别是I2CSDA和I2CSCL。SDA是双向串行数据线,SCL是双向串行时钟线。当两根线都为高电平时,总线处于空闲状态。

I2C总线每次传输的数据长度为9位,其中包括8位数据位和1位应答位。每次传输的字节数没有限制,但是每个字节后面必须紧跟1位应答位,而且数据传输时必须首先传送最高有效位(MSB)。当接收器不能接收另一个完整的字节时,它会保持时钟线SCL为低电平,并强制发送器进入等待状态。在接收器释放时钟线SCL之后,数据传送将继续进行。

(1)开始和停止条件

I2C总线协议定义了两种状态:开始和停止,以便开始和结束数据传输。当SCL为高电平时,SDA线上由高电平变为低电平定义为开始信号;当SCL为高电平时,SDA线上由低电平变为高电平被定义为停止信号。符合开始条件后,总线将占线;达到停止条件后,总线将空闲。如图8-3所示。

978-7-111-51624-8-Chapter08-3.jpg

图8-2 I2C总线配置

978-7-111-51624-8-Chapter08-4.jpg

图8-3 I2C总线开始和停止条件

STOP位决定数据周期在结束时是停止还是继续重复运行,直到出现重复的START条件。要产生单次传输,应在I2C主机从机地址寄存器(I2CMSA)中写入所需的地址,并将R/S位清零,在控制寄存器中写入ACK=X(0或1)、STOP=1、START=1与RUN=1,来执行单次传输并停止。在传输完成后(或由于错误退出),中断引脚将被激活,数据可从I2C主机数据寄存器(I2CMDR)中读出。在I2C模块以主接收器模式工作时,ACK位通常被置位,让I2C总线控制器在每个字节接收完成后自动发出一个应答信号。在I2C总线控制器无需接收从发送器发送的数据时,该位须清零。

在此模块以从机模式工作时,I2C从机原始中断状寄存器态(I2CSRIS)中的两位用来监测总线上的开始和停止条件;而I2C从机屏蔽中断状态寄存器(I2CSMIS)中的两位将STARTRIS与STOPRIS位转变成控制器中断(当中断功能已使能)。

(2)带7位地址的数据格式

在满足开始条件之后,将发送从机地址。该地址长度为7位,第8位是数据方向位(I2CMSA寄存器中的R/S位)。如果R/S位被清零,则表示发送操作;如果被置位,则表示接收操作。数据传送由主机产生的停止条件终止。但是,主机无需首先产生停止条件即可与总线上的其他设备通信。因此,在单次传输中可以存在多种接收/发送格式组合,如图8-4所示。

978-7-111-51624-8-Chapter08-5.jpg

图8-4 7位地址的完整数据传输

第一字节中的前7位即构成从机地址(如图8-5所示)。第8位确定报文的方向。若第一字节中的R/S位为零,则表示主机向选定的从机发送数据,该位为1则表示主机接收从机发送的数据。

(3)数据有效性

SDA线上的数据在时钟的高电平期间必须稳定,只有在SCL为低电平时,数据线才能改变,如图8-6所示。

978-7-111-51624-8-Chapter08-6.jpg

图8-5 第一字节中的R/S位

978-7-111-51624-8-Chapter08-7.jpg

图8-6 I2C总线位传输过程中的数据有效性

(4)应答

所有的总线传输都包含一个由主机产生的应答时钟周期。在应答周期中,发送器(主机或者从机)会释放SDA线。在应答时钟周期内,接收器必须将SDA拉低。且在应答周期内,接收器发出的数据必须遵循数据有效性要求。

如果从机接收器不应答从机地址,从机必须将SDA保持在高电平,以使主机产生停止条件并终止当前的传输。如果主机设备作为接收器,那么它需要应答每一个由从机发起的数据传输。由于主机控制传输中的字节数,通过不应答最后一个字节,主机将数据的末尾告知从机发送器指示数据的结束。接下来从机发送器必须释放SDA,以便让主机产生停止条件或者重复的开始条件。

(5)仲裁

只有在总线空闲时,主机才可以开始传输。在开始条件的最小保持时间内,可能会有两个或者更多的主机产生开始条件。在这些情况下,当SCL为高电平时,SDA线上将产生仲裁机制。在仲裁过程中,第一个竞争的主机在SDA上设置“1”(高电平),而另一个主机发送“0”(低电平),则发送“1”的这个主机将关闭其数据输出阶段并退出,直至总线再次空闲。

仲裁可以在多个位上发生。仲裁的第一个阶段是比较地址位,若两个主机试图寻址相同的设备,则仲裁继续比较数据位。

2.可用的速度模式

I2C总线可以在标准模式、快速模式、快速+模式和高速模式运行。但选择的模式应和总线上的其他I2C器件的速度匹配。

(1)标准、快速和快速+模式

选择标准、快速和快速+模式,可通过I2C主机定时器周期寄存器(I2CMTPR)得到,它们的SCL频率分别为100kbit/s、400kbit/s和1Mbit/s。(www.xing528.com)

决定I2C时钟速率的参数如下:

978-7-111-51624-8-Chapter08-8.jpg

I2C时钟周期计算公式如下:

SCL_PERIOD=2×(1+TIMER_PRD)×(SCL_LP+SCL_HP)×CLK_PRD

(2)高速模式

TM4C123GH6PM的外设I2C支持主从高速运行模式,可通过将I2C主机控制/状态寄存器(I2CMCS)中的HS位置位来配置高速模式。它以66.6%/33.3%占空比的高位速率进行数据传输,但通信和仲裁取决于用户所选择的标准,即快速模式和快速+模式的速度。当2CMCS寄存器中的HS位被置位时,当前模式的上拉电阻将被使能。

可使用下面的公式来选择时钟周期,这里SCL_LP=2、SCL_HP=1。

SCL_PERIOD=2×(1+TIMER_PRD)×(SCL_LP+SCL_HP)×CLK_PRD

当主机操作时,高速模式的数据格式如图8-7所示。

978-7-111-51624-8-Chapter08-9.jpg

图8-7 高速模式的数据格式

3.中断

I2C将在以下条件时产生中断:

①主机通信完成。

②主机仲裁失败。

③主机通信错误。

④主机总线超时。

⑤从机通信接收。

⑥从机通信请求。

⑦监测到总线上发生停止条件。

⑧监测到总线上发生开始条件。

I2C主机和I2C从机模块具有单独的中断信号。尽管在许多条件下两个模块都可以产生中断,但是最后只有一个中断信号将被发送到中断控制器。

(1)I2C主机中断

当通信结束(发送、接收)、仲裁失败或者通信发生错误等时,I2C主机模块都会产生一个中断,可通过将I2CMIMR寄存器中的IM位置位来使能I2C主机中断。当满足中断条件时,必须通过软件检查I2C主机控制/状态寄存器(I2CMCS)中的ERROR和ARBLST位,以验证错误并未发生在最后一个通信期间,并且确保没有丢掉仲裁。如果最后一个通信没有得到从机的应答,那么就会发生错误。如果没有错误发生,而且主机也没有丢失仲裁,那么应用程序将继续进行数据传输。当I2C主机中断清除寄存器(I2CMICR)中的IC位置位时,就可清除该中断。

如果应用程序无需使用中断,则可通过I2C主机原始中断状态寄存器(I2CMRIS)随时查看原始中断状态。

(2)I2C从机中断

在已接收到数据或请求时,从机模块将会产生中断。将I2C从机中断屏蔽寄存器(I2CSIMR)中的位DATAIM置位即可使能该中断。通过软件检查I2C从机控制/状态寄存器(I2CSCSR)中的RREQ和TREQ位,就可确定该模块应写入(发送)还是读取(接收)来自I2C从机数据寄存器(I2CSDR)中的数据。如果从机模块处于接收模式,且已接收第一个字节,那么FBR和RREQ位将同时置位。如果将I2C从机中断清除寄存器(I2CSICR)中的DATAIC位置位即可清除该中断。

另外,当监测到开始和停止条件时,从机模块也会产生中断。可通过将I2C从机中断屏蔽寄存器(I2CSIMR)中的STARTIM和STOPIM位置位来使能这些中断,并可将I2C从机中断清除寄存器(I2CSICR)中的STOPIC和STARTIC位置位来清除这些中断。

如果应用程序无需使用中断,则可通过I2C从机原始中断状态寄存器(I2CSRIS)随时查看原始中断状态。

4.回送操作

将I2C主机配置寄存器(I2CMCR)中的LPBK位置位来让I2C模块进入内部回送模式,以进行诊断或者调试工作。在回送模式下,主机和从机发出的SDA和SCL信号被绑定在一起,用于在无需使用I/O接口时也可对器件进行内部测试。

说明:本章没有介绍到的内容请读者参考TM4C123GH6PM数据手册的I2C部分。

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

我要反馈