PAGE1
PAGE1
LPC1768系列I2C接口
I2C接口概述
I2C(Inter-IntegratedCircuit)是一种用于短距离通信的串行总线协议,由Philips公司(现为NXPSemiconductors)在1980年代初开发。I2C总线使用两根线进行通信:SDA(串行数据线)和SCL(串行时钟线)。I2C接口支持多主设备和多从设备,每个设备都有一个唯一的7位地址,主设备通过地址选择从设备进行通信。I2C总线的数据传输速率通常为100kbps到400kbps,但在高速模式下可达3.4Mbps。
LPC1768系列微控制器集成了两个I2C接口,分别为I2C0和I2C1。这些接口支持标准模式(100kbps)和快速模式(400kbps),并且可以配置为主设备或从设备模式。I2C接口主要用于与各种传感器、EEPROM、ADC等外设进行通信。
I2C接口寄存器
LPC1768的I2C接口通过一组寄存器进行控制和管理。这些寄存器包括:
I2CCONSET(ControlSetRegister):用于设置I2C接口的操作模式。
I2CCONCLR(ControlClearRegister):用于清除I2C接口的控制位。
I2CSTAT(StatusRegister):用于读取I2C接口的状态。
I2CDATA(DataRegister):用于读取或写入数据。
I2CSCLH(SCLHighPeriodRegister):用于设置SCL线上的高电平周期。
I2CSCLL(SCLLowPeriodRegister):用于设置SCL线上的低电平周期。
I2CSTHR(StartandStopTransmitHoldingRegister):用于设置启动和停止条件的保持时间。
I2CMTPUP(MasterTransmitPulseUpRegister):用于设置主设备传输脉冲的上升时间。
I2CI2CMSC:用于设置I2C接口的中断使能和状态。
I2CCONSET寄存器
I2CCONSET寄存器用于设置I2C接口的操作模式,其主要位包括:
I2EN(I2CEnable):使能或禁用I2C接口。
AA(AssertAcknowledge):控制是否发送应答信号。
SI(SerialInterface):表示是否有数据可发送或接收。
STO(StopCondition):生成停止条件。
STA(StartCondition):生成启动条件。
I2CEN:使能I2C接口。
I2CCONCLR寄存器
I2CCONCLR寄存器用于清除I2C接口的控制位,其主要位包括:
SI_C(SerialInterfaceClear):清除SI位。
STO_C(StopConditionClear):清除STO位。
STA_C(StartConditionClear):清除STA位。
ICC_C(InterruptClearClear):清除中断请求。
I2CSTAT寄存器
I2CSTAT寄存器用于读取I2C接口的状态,其主要位包括:
AL(ArbitrationLost):表示仲裁失败。
BUSY(BusBusy):表示总线忙。
RX_ACK(ReceivedAcknowledge):表示接收到应答信号。
TX_EMPTY(TransmitBufferEmpty):表示发送缓冲区为空。
STATE:表示当前的传输状态。
I2CDATA寄存器
I2CDATA寄存器用于读取或写入数据,其主要功能包括:
DATA:8位数据寄存器,用于读取或写入数据。
I2CSCLH和I2CSCLL寄存器
I2CSCLH和I2CSCLL寄存器用于设置SCL线上的高电平周期和低电平周期,以控制I2C总线的时钟频率。
SCLH:设置SCL线上的高电平周期。
SCLL:设置SCL线上的低电平周期。
I2CSTHR寄存器
I2CSTHR寄存器用于设置启动和停止条件的保持时间,以确保I2C总线的稳定性。
START_HOLD:设置启动条件的保持时间。
STOP_HOLD:设置停止条件的保持时间。
I2CMTPUP寄存器
I2CMTPUP寄存器用于设置主设备传输脉冲的上升时间,以确保信号的完整性。
MTP_UP:设置主设备传输脉冲的上升时间。
I2CI2CMSC寄存器
I2CI2CMSC寄存器用于设置I2C接口的中断使能和状态。
INTEN(InterruptEnable):使能或禁用I2C中断。
STAT(Status):表示I2C中断的状态。
I2C接口配置
初始化I2C接口
在使用I2C接口之前,需要进行初始化配置。