理论教育 双I2C接口,可配置为主机或从机

双I2C接口,可配置为主机或从机

时间:2023-11-03 理论教育 版权反馈
【摘要】:LPC2138具有具有两个标准的硬件I2C接口,I2C0和I2C1,可配置为主机或从机,总线时钟速率可调整,最高可支持400Kbit/s总线速率。I2C接口的主要特性如下:●标准的I2C总线接口。LPC2138是字节方式的I2C接口,只要把一个字节数据写入I2C数据寄存器I2DAT后,即可由I2C接口自动完成所有的数据位发送。

双I2C接口,可配置为主机或从机

LPC2138具有具有两个标准的硬件I2C接口,I2C0和I2C1,可配置为主机或从机,总线时钟速率可调整,最高可支持400Kbit/s总线速率。使用I2C总线时,要将相应的引脚设置连接SCL、SDA,并且总线上要接2个阻值在1~10kΩ之间的上拉电阻

I2C接口的主要特性如下:

●标准的I2C总线接口。

●可配置为主机、从机或主/从机。

●可编程时钟可实现通信速率控制。

●主机、从机之间双向数据传输。

●多主机总线(无中央主机)。

●同时发送的主机之间仲裁,避免了总线数据冲突。

●串行时钟同步使器件在一条串行总线上实现不同位速率的通信。

●串行时钟同步可作为握手机制。

I2C总线的典型配置如图4-4所示。

978-7-111-44508-1-Chapter04-42.jpg

图4-4 I2C总线的典型配置

根据方向位(R/W)状态的不同,I2C总线上存在以下两种类型的数据传输:

1)从主发送器向从接收器发送数据,即主发送。主机发送的第一个字节是从机地址,接下来是数据字节流。从机每接收一个字节返回一个应答位。

2)从发送器向主接收器发送数据,即主接收。第一个字节(从地址)由主机发送,然后从机返回一个应答位,接下来从机向主机发送数据字节。主机每接收一个字节返回一个应答位,接收完最后一个字节,主机返回一个“非应答位”。

当主机产生起始条件、发送从机寻址字节(从机地址+读写位)之后,即开始一次串行数据发送/接收。当出现停止条件时,此次传输结束。

LPC2138是字节方式的I2C接口,只要把一个字节数据写入I2C数据寄存器I2DAT后,即可由I2C接口自动完成所有的数据位发送。I2C接口可以配置为主机,亦可配置为从机,它有4种操作模式:主发送模式、主接收模式、从发送模式和从接收模式。下面分别予以介绍。

1.主发送模式

在这种模式下,数据从主机发送到从机。在进入主发送器模式之前,必须按照图4-5所示格式对I2CONSET寄存器进行初始化。其中,I2EN位置1使能I2C功能;STA、STO和SI位必须为0,分别表示起始标志为0、停止标志为0和I2C中断标志为0;AA位也必须为0,不产生应答信号,即不允许进入从机模式。

978-7-111-44508-1-Chapter04-43.jpg

图4-5 主模式配置

主模式I2C的数据发送格式如图4-6所示。起始和停止条件用于指示串行传输的起始和结束。第一个发送的数据包含接收器件的从地址(7位)和读写操作位。在主发送模式下,读写操作位(R/W)应当为0,表示执行写操作。数据的发送每次为8位,即1个字节。每发送完一个字节,主机都会接收到一个由从机返回的应答位。

978-7-111-44508-1-Chapter04-44.jpg

图4-6 主发送模式下的数据格式

主发送模式下的数据发送操作步骤如下:

1)通过软件置位STA位,进入主发送模式,I2C逻辑在总线空闲后,立即发送一个起始条件。

2)发送完起始条件后,SI位置位,此时状态寄存器I2STAT中的状态代码为08H。该状态代码用于中断服务程序的处理。

3)将从地址和读/写操作位装入数据寄存器I2DAT,清零SI位,开始发送从地址和W位。(www.daowen.com)

4)当从地址和W位已发送且接收到应答位之后,SI位再次置位,可能的状态代码为18H、20H或38H。

5)若状态码为18H,表示从机已应答,可以将数据装入I2DAT寄存器,然后清零SI位,开始发送数据。

6)当正确发送数据后,SI位再次置位,可能的状态代码为28H或30H,此时可以再次发送数据,或者置位STO,结束总线操作。

2.主接收模式

在这种模式下,主机所接收的数据字节来自从机,数据接收格式如图4-7所示。在此模式下,读/写操作位(R/W)应该为1,表示执行读操作。

978-7-111-44508-1-Chapter04-45.jpg

图4-7 主接收模式下的数据格式

主模式I2C的数据接收操作步骤如下:

1)通过软件置位STA,进入主接收模式,在I2C逻辑总线空闲后,立即发送一个起始条件。

2)发送完起始条件后,SI位置位,此时状态寄存器I2STAT中的状态代码为08H。该状态代码用于中断服务程序的处理。

3)将从地址和读/写操作位装入数据寄存器I2DAT,清零SI位,开始发送从地址和R位。

4)当从地址和R位已发送且接收到应答位之后,SI位再次置位,可能的状态代码为38H、40H或48H。

5)若状态码为40H,表明从机已应答。设置AA位,用来控制接收到数据后是产生应答信号,还是产生非应答信号,然后清零SI位,开始接收数据。

6)正确接收到一个字节数据后,SI位再次置位,可能的状态代码为50H或58H,此时可以再次接收数据,或者置位STO结束总线。

3.从接收模式

在这种模式下,数据从主机读取。为了初始化为从接收模式,用户必须将从地址写入地址寄存器I2ADR,并按照图4-8所示格式对I2CONSET寄存器进行初始化。其中,I2EN位置1使能I2C功能;STA、STO和SI位必须为0,分别表示起始标志为0、停止标志为0和

I2C中断标志为0;AA位为1,应答从机地址。

978-7-111-44508-1-Chapter04-46.jpg

图4-8 从模式配置

实际应用中,通常采用中断方式进行I2C操作。当主机访问从机时,若读/写操作位为0(W),则从机进入从接收模式,接收主机发送过来的数据,并产生应答信号。从接收模式下的数据接收格式如图4-9所示。从接收模式中,总线时钟、起始条件、从机地址、停止条件仍由主机产生。

978-7-111-44508-1-Chapter04-47.jpg

图4-9 从接收模式下的数据格式

使用从模式I2C时,用户程序只需在I2C中断服务中完成各种数据操作,即根据状态码进行相应操作。当地址和读/写操作位接收后,置位SI位并从状态寄存器I2STAT中读取有效的状态码。

4.从发送模式

当主机访问从机时,若读写操作位为1(R),则从机进入从发送模式,向主机发送数据,并等待主机的应答信号。从发送模式下的数据接收格式如图4-10所示。从发送模式中,总线时钟、起始条件、从机地址、停止条件仍由主机产生。

978-7-111-44508-1-Chapter04-48.jpg

图4-10 从发送模式下的数据格式

第一个字节的处理与从接收方式相同。但是在这种方式下,读/写操作位将标明数据传输方向相反。在具体应用中,I2C可能作为主机,也可能作为从机。在从模式下,I2C硬件查找从机地址和通用调用地址。如果检测到其中一个地址,即产生中断请求。当CPU变为主机时,在进入主模式之前,硬件等待总线空闲可能导致从机没有中断,如果在主模式下总线仲裁丢失,I2C将立即转换到从模式,不能检测到自己的从机地址。

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

我要反馈