基本信息
文件名称:Microchip 系列:PIC18F 系列_(12).PIC18F系列的I2C模块.docx
文件大小:24.42 KB
总页数:20 页
更新时间:2025-06-19
总字数:约1.06万字
文档摘要

PAGE1

PAGE1

PIC18F系列的I2C模块

I2C模块简介

I2C(Inter-IntegratedCircuit)是一种同步、半双工、多主机、多从机的串行通信总线,由Philips公司(现NXP)在1980年代开发。I2C总线在单片机系统中广泛用于连接各种外设,如EEPROM、温度传感器、ADC等。PIC18F系列单片机集成了I2C模块,支持主模式和从模式的通信。

I2C总线的基本特性

两线通信:I2C总线使用两条线,即SDA(数据线)和SCL(时钟线)。

多设备通信:I2C总线支持多个主设备和从设备,通过设备地址进行寻址。

同步通信:数据传输由时钟线SCL同步。

半双工通信:同一时间内只能有一个方向的数据传输。

简单的仲裁机制:支持多主设备之间的仲裁,避免数据冲突。

PIC18F系列的I2C模块功能

PIC18F系列单片机的I2C模块具有以下功能:

主模式:作为I2C总线的主设备,控制数据的读写操作。

从模式:作为I2C总线的从设备,响应主设备的读写请求。

可配置的数据传输速率:支持标准模式(100kbps)、快速模式(400kbps)和高速模式(3.4Mbps)。

中断支持:可以在数据传输过程中产生中断,方便处理复杂的通信任务。

支持7位和10位设备地址:可以根据需要选择不同的地址格式。

I2C模块的寄存器

PIC18F系列单片机的I2C模块使用多个寄存器来控制和配置通信。以下是一些主要的寄存器及其功能:

I2C控制寄存器(SSPCON1)

位|名称|描述|

|—-|——|——|

7|PEN|停止条件使能位|

6|RSEN|重新启动条件使能位|

5|SEN|启动条件使能位|

4|RCIEN|接收完成中断使能位|

3|SCLIEN|时钟中断使能位|

2|SDOIF|数据输出中断标志位|

1|SDAIF|数据输入中断标志位|

0|I2CEN|I2C使能位|

I2C状态寄存器(SSPSTAT)

位|名称|描述|

|—-|——|——|

7|BF|缓冲区满标志位|

6|UA|未决地址标志位|

5|R/W|读/写选择位|

4|S|模式选择位|

3|P|停止条件检测位|

2|D_A|数据/地址选择位|

1|CKE|时钟输出使能位|

0|CKP|时钟极性选择位|

I2C从机地址寄存器(SSPADD)

7:1位:从设备地址(7位地址模式)或从设备地址的高7位(10位地址模式)。

0位:10位地址模式的低2位。

I2C数据寄存器(SSPBUF)

7:0位:8位数据缓冲区,用于读写数据。

I2C波特率控制寄存器(SSPBRG)

7:0位:波特率控制寄存器,用于设置I2C通信的波特率。

I2C中断标志寄存器(PIR1)

位|名称|描述|

|—-|——|——|

6|SSPIF|I2C中断标志位|

I2C中断使能寄存器(PIE1)

位|名称|描述|

|—-|——|——|

6|SSPIE|I2C中断使能位|

I2C中断优先级寄存器(IPR1)

位|名称|描述|

|—-|——|——|

6|SSP1IP|I2C中断优先级位|

I2C模块的配置

要使用PIC18F系列单片机的I2C模块,首先需要对其进行配置。配置步骤包括设置I2C使能、波特率、地址模式等。

配置I2C主模式

以下是一个配置I2C主模式的例子:

//配置I2C主模式

voidI2C_Master_Init(unsignedintbaud){

//使能I2C模块

SSPCON1=0x28;//主模式,I2C使能

SSPCON2=0x00;//清除所有使能位

//设置波特率

SSPBRG=baud;

//使能全局中断和外设中断

INTCONbits.GIE=1;

INTCONbits.PEIE=1;

//使能I2C中断

PIE1bits.SSPIE=1;

PIR1bits.SSPIF=0;//清除中断标志位

//设置I2C引脚

TRISBbits.TRISB7=1;//SDA引脚设置为输入

TRISBbits.TRISB6=1;//SCL引脚设置为输入

}

//发送启动条件

voidI2C_Master_Start(){

SSPCON2bits.SEN=1;//发送启动条件