基本信息
文件名称:NXP 系列:LPC1700 系列_(10).LPC1700系列的I2C接口.docx
文件大小:28.43 KB
总页数:29 页
更新时间:2025-06-20
总字数:约1.59万字
文档摘要

PAGE1

PAGE1

LPC1700系列的I2C接口

1.I2C接口概述

I2C(Inter-IntegratedCircuit)接口是一种简单、双向的二线制同步串行通信接口,广泛应用于各种嵌入式系统中。LPC1700系列单片机提供了两个I2C接口,分别称为I2C0和I2C1。这些接口可以用于连接各种外部设备,如温湿度传感器、EEPROM存储器、ADC转换器等。

I2C接口的基本特性包括:

两线制:SCL(串行时钟线)和SDA(串行数据线)。

主从模式:支持一个主设备和多个从设备。

多主设备控制:可以支持多个主设备在同一总线上通信。

数据传输速率:标准模式下为100kbps,快速模式下为400kbps,高速模式下为3.4Mbps。

2.I2C接口的寄存器

LPC1700系列的I2C接口通过一系列寄存器来控制其操作。这些寄存器包括:

I2C_CONSET:用于设置I2C接口的操作模式和使能。

I2C_CONCLR:用于清除I2C接口的操作模式和使能。

I2C_SCLA:设置SCL线的时钟分频器。

I2C_SCL:设置SDA线的时钟分频器。

I2C_SDATASET:用于设置SDA线的状态。

I2C_SDATACLR:用于清除SDA线的状态。

I2C_STAT:显示I2C接口的状态。

I2C_DATA:用于读取或写入数据。

I2C_TXFIFO:发送数据FIFO。

I2C_RXFIFO:接收数据FIFO。

I2C_CONSET_I2EN:使能I2C接口。

I2C_CONSET_AA:应答使能。

I2C_CONSET_SI:状态指示。

I2C_CONSET_STA:启动条件。

I2C_CONSET_STO:停止条件。

I2C_CONSET_AA:应答使能。

I2C_CONSET_SI:状态指示。

I2C_CONCLR_I2ENC:清除I2C使能。

I2C_CONCLR_AAC:清除应答使能。

I2C_CONCLR_SIC:清除状态指示。

I2C_CONCLR_STAC:清除启动条件。

I2C_CONCLR_STOC:清除停止条件。

3.I2C接口的初始化

在使用I2C接口之前,需要对其进行初始化。初始化步骤包括设置时钟分频器、使能I2C接口、配置主从模式等。

#includeLPC17xx.h

voidI2C_Init(uint32_ti2cClock){

//使能I2C的时钟

LPC_SC-PCONP|=(122);//PCONP:I2C0

LPC_SC-PCONP|=(123);//PCONP:I2C1

//配置I2C的引脚

LPC_PINCON-PINSEL1=~(0x0F12);//清除I2C0的SCL和SDA引脚配置

LPC_PINCON-PINSEL1|=(0x0512);//设置I2C0的SCL和SDA引脚

//设置I2C时钟分频器

LPC_I2C0-I2C_SCLH=(i2cClock/100000)/2;

LPC_I2C0-I2C_SCLL=(i2cClock/100000)/2;

//使能I2C接口

LPC_I2C0-I2C_CONSET=(17);//使能I2C接口

}

4.I2C接口的主模式操作

在主模式下,LPC1700系列单片机可以主动发起通信,读取或写入数据。

4.1发送数据

发送数据时,主设备首先发送启动条件,然后发送从设备的地址和读写标志,接着发送数据,最后发送停止条件。

voidI2C_MasterSend(uint8_tslaveAddress,uint8_t*data,uint32_tlength){

//发送启动条件

LPC_I2C0-I2C_CONSET=(12);//设置启动条件

//等待启动条件完成

while(!(LPC_I2C0-I2C_CONSET(17)));//等待状态指示

//发送从设备地址和写标志

LPC_I2C0-I2C_DATA=(slaveAddress1)|0;//写标志为0

LPC_I2C0-I2C_CONSET=(12);//设置启动条件

//等待应答

while(!(LPC_I2C0-I2C_CONSET(17)));

//发送数据

for(uint32_ti=0