基本信息
文件名称:NXP 系列:LPC1768 (适用于复杂娱乐设备)_(10).LPC1768I2C接口.docx
文件大小:24.06 KB
总页数:24 页
更新时间:2025-06-15
总字数:约1.26万字
文档摘要

PAGE1

PAGE1

LPC1768I2C接口

I2C接口概述

I2C(Inter-IntegratedCircuit)是一种串行通信协议,用于在微控制器和外设之间进行简单、双向的数据传输。I2C协议使用两条线进行通信:SCL(串行时钟线)和SDA(串行数据线)。I2C接口支持多主多从架构,允许多个设备共享同一总线。

I2C接口的特点

简单性:仅需两条线即可实现数据传输。

双向通信:支持主设备和从设备之间的双向数据传输。

多设备:支持多个主设备和从设备共享同一总线。

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

地址识别:每个从设备都有一个唯一的7位或10位地址,主设备通过地址选择与哪个从设备通信。

LPC1768I2C接口硬件配置

LPC1768微控制器具有多个I2C接口,每个接口都有独立的SCL和SDA引脚。这些引脚可以通过寄存器配置为I2C功能。

引脚配置

I2C0:

SCL0:P0.10

SDA0:P0.11

I2C1:

SCL1:P0.2

SDA1:P0.3

寄存器配置

要将引脚配置为I2C功能,需要设置相应的PINSEL寄存器。例如,将P0.10和P0.11配置为I2C0的SCL和SDA引脚:

//配置I2C0引脚

PINSEL_CFG_TypePinCfg;

PinCfg.Funcnum=2;//功能2

PinCfg.OpenDrain=0;//推挽模式

PinCfg.Pinmode=0;//普通模式

PinCfg.Portnum=0;//端口0

PinCfg.Pinnum=10;//引脚10

PINSEL_ConfigPin(PinCfg);

PinCfg.Pinnum=11;//引脚11

PINSEL_ConfigPin(PinCfg);

LPC1768I2C接口初始化

在使用I2C接口之前,需要进行初始化配置,包括设置波特率、使能I2C功能等。

初始化步骤

配置引脚:如上所述,配置SCL和SDA引脚。

设置波特率:通过I2C接口的寄存器设置通信波特率。

使能I2C功能:通过使能寄存器启用I2C功能。

代码示例

以下是一个初始化I2C0接口的示例代码:

#includeLPC17xx.h

#includelpc17xx_i2c.h

voidI2C0_Init(void){

//配置I2C0引脚

PINSEL_CFG_TypePinCfg;

PinCfg.Funcnum=2;//功能2

PinCfg.OpenDrain=0;//推挽模式

PinCfg.Pinmode=0;//普通模式

PinCfg.Portnum=0;//端口0

PinCfg.Pinnum=10;//引脚10(SCL0)

PINSEL_ConfigPin(PinCfg);

PinCfg.Pinnum=11;//引脚11(SDA0)

PINSEL_ConfigPin(PinCfg);

//初始化I2C0

I2C_Init(LPC_I2C0,100000);//设置波特率为100kbps

//使能I2C0

I2C_Cmd(LPC_I2C0,ENABLE);

}

I2C数据传输

I2C接口支持主模式和从模式下的数据传输。在主模式下,微控制器可以作为主设备发起数据传输;在从模式下,微控制器可以作为从设备接收数据。

主模式数据传输

主设备可以通过I2C总线发送数据到从设备或从从设备接收数据。数据传输的基本步骤包括:

启动条件:发送启动信号,指示数据传输开始。

发送地址:发送从设备的地址,指示要与哪个从设备通信。

发送/接收数据:发送或接收数据。

停止条件:发送停止信号,指示数据传输结束。

代码示例

以下是一个主设备发送数据到从设备的示例代码:

#includeLPC17xx.h

#includelpc17xx_i2c.h

#defineI2C_ADDRESS0x68//从设备地址

voidI2C0_Write(uint8_treg,uint8_tdata){

//启动I2C传输

I2C_MasterSendStart(LPC_I2C0,I2C_ADDRESS,I2C_DIRECTION_TX);

//发送寄存器地址

I2C_MasterSen