基本信息
文件名称:NXP 系列:LPC1114 系列_(10).LPC1114I2C通信.docx
文件大小:25.1 KB
总页数:24 页
更新时间:2025-06-05
总字数:约1.23万字
文档摘要

PAGE1

PAGE1

LPC1114I2C通信

I2C通信概述

I2C(Inter-IntegratedCircuit)是一种串行通信协议,允许多个设备通过两根线(SDA和SCL)进行通信。I2C协议最初由Philips(现为NXP)开发,广泛应用于微控制器和外围设备之间的通信。I2C协议的主要特点包括:

两线通信:仅使用两根线(SDA:数据线,SCL:时钟线)。

多主多从:支持多个主设备和多个从设备。

地址机制:每个从设备都有一个唯一的7位或10位地址。

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

在LPC1114单片机中,I2C通信是由I2C控制器实现的。LPC1114支持标准和快速模式下的I2C通信,并且可以通过软件配置来实现主设备和从设备的功能。

I2C通信硬件配置

引脚配置

LPC1114的I2C通信引脚可以通过引脚复用功能进行配置。通常,I2C通信引脚配置如下:

SDA:P0.10

SCL:P0.11

要配置这些引脚为I2C功能,需要进行以下步骤:

启用I2C功能:通过设置引脚功能寄存器(PINSEL)来选择I2C功能。

配置GPIO:确保GPIO引脚处于输入模式,以便I2C控制器可以控制它们。

启用内部上拉电阻:LPC1114内部具有上拉电阻,可以通过配置寄存器启用。

示例代码:引脚配置

#includeLPC11xx.h

voidI2C_init(void){

//配置SDA和SCL引脚为I2C功能

LPC_PINCON-PINSEL4=~(0xF8);//清除P0.10和P0.11的当前设置

LPC_PINCON-PINSEL4|=(0x28)|(0x212);//设置P0.10和P0.11为I2C功能

//启用内部上拉电阻

LPC_IOCON-P0_10=~(0x33);//清除P0.10的模式设置

LPC_IOCON-P0_10|=(0x13);//设置P0.10为上拉模式

LPC_IOCON-P0_11=~(0x33);//清除P0.11的模式设置

LPC_IOCON-P0_11|=(0x13);//设置P0.11为上拉模式

}

I2C通信协议

通信时序

I2C通信时序包括启动、停止、应答和数据传输等几个关键步骤。以下是I2C通信的基本时序:

启动条件:SCL为高电平时,SDA从高电平变为低电平。

停止条件:SCL为高电平时,SDA从低电平变为高电平。

应答:从设备在接收到每个字节后发送一个应答信号,表示数据已被正确接收。

数据传输:数据在SCL的每个时钟周期传输一位,从最高位(MSB)到最低位(LSB)。

通信模式

LPC1114支持以下I2C通信模式:

主模式:LPC1114作为主设备,控制SCL和SDA线,发起通信。

从模式:LPC1114作为从设备,响应主设备的通信请求。

示例代码:主模式配置

#includeLPC11xx.h

voidI2C_Master_Init(void){

//配置I2C时钟

LPC_SYSCTL-SYSAHBCLKCTRL|=(113);//启用I2C时钟

LPC_SYSCTL-PRESETCTRL=~(18);//复位I2C

LPC_SYSCTL-PRESETCTRL|=(18);//释放I2C复位

//配置I2C速度

LPC_I2C-SPEED=0x9;//设置I2C速度为100kbps

LPC_I2C-SIE=0x80;//启用I2C中断

//配置I2C为主模式

LPC_I2C-CON=0x00;//设置为主模式

}

voidI2C_Master_Start(void){

LPC_I2C-CONSET=(16);//设置启动条件

}

voidI2C_Master_Stop(void){

LPC_I2C-CONCLR=(14);//设置停止条件

}

voidI2C_Master_Write(uint8_tdata){

LPC_I2C-DAT=data;//发送数据

while(!(LPC_I2C-STA(16)));//等待传输完成

}

ui