LPC2138具有具有两个标准的硬件I2C接口,I2C0和I2C1,可配置为主机或从机,总线时钟速率可调整,最高可支持400Kbit/s总线速率。使用I2C总线时,要将相应的引脚设置连接SCL、SDA,并且总线上要接2个阻值在1~10kΩ之间的上拉电阻。
I2C接口的主要特性如下:
●标准的I2C总线接口。
●可配置为主机、从机或主/从机。
●可编程时钟可实现通信速率控制。
●主机、从机之间双向数据传输。
●多主机总线(无中央主机)。
●同时发送的主机之间仲裁,避免了总线数据冲突。
●串行时钟同步使器件在一条串行总线上实现不同位速率的通信。
●串行时钟同步可作为握手机制。
I2C总线的典型配置如图4-4所示。
图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,不产生应答信号,即不允许进入从机模式。
图4-5 主模式配置
主模式I2C的数据发送格式如图4-6所示。起始和停止条件用于指示串行传输的起始和结束。第一个发送的数据包含接收器件的从地址(7位)和读写操作位。在主发送模式下,读写操作位(R/W)应当为0,表示执行写操作。数据的发送每次为8位,即1个字节。每发送完一个字节,主机都会接收到一个由从机返回的应答位。
图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,表示执行读操作。
图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,应答从机地址。
图4-8 从模式配置
实际应用中,通常采用中断方式进行I2C操作。当主机访问从机时,若读/写操作位为0(W),则从机进入从接收模式,接收主机发送过来的数据,并产生应答信号。从接收模式下的数据接收格式如图4-9所示。从接收模式中,总线时钟、起始条件、从机地址、停止条件仍由主机产生。
图4-9 从接收模式下的数据格式
使用从模式I2C时,用户程序只需在I2C中断服务中完成各种数据操作,即根据状态码进行相应操作。当地址和读/写操作位接收后,置位SI位并从状态寄存器I2STAT中读取有效的状态码。
4.从发送模式
当主机访问从机时,若读写操作位为1(R),则从机进入从发送模式,向主机发送数据,并等待主机的应答信号。从发送模式下的数据接收格式如图4-10所示。从发送模式中,总线时钟、起始条件、从机地址、停止条件仍由主机产生。
图4-10 从发送模式下的数据格式
第一个字节的处理与从接收方式相同。但是在这种方式下,读/写操作位将标明数据传输方向相反。在具体应用中,I2C可能作为主机,也可能作为从机。在从模式下,I2C硬件查找从机地址和通用调用地址。如果检测到其中一个地址,即产生中断请求。当CPU变为主机时,在进入主模式之前,硬件等待总线空闲可能导致从机没有中断,如果在主模式下总线仲裁丢失,I2C将立即转换到从模式,不能检测到自己的从机地址。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。