HW I2C

来自拉普兰德Wiki
跳转至: 导航搜索

固件说明

HW_I2C.c和HW_I2C.h是I2C模块的固件驱动文件,这里定义了I2C初始化函数、I2C主机读写函数等相关函数。

结构体

I2C_InitTypeDef

I2C初始化结构体
变量 描述 取值 初始化
I2C_Type *I2C_I2Cx 选择I2Cx I2C0、I2C1 必须初始化
uint8 I2C_ICR 查询I2C时序配置表中的ICR的取值,进而配置SCL总线频率I2C_SCL_BusSpeed、SDA Hold Time、SCL hold start time、SCL hold stop time. I2C时序配置表中获得ICR的值 必须初始化
boolean I2C_IntEnable 使能I2C中断 TRUE - 使能

FALSE - 禁止

不必须初始化,默认值FALSE
PortPinsEnum_Type I2C_SclPin SCL引脚,每个IICx对应不同的Pin I2C0 -*PTB2、PTB0、PTD8

I2C1 -*PTC10、PTE1

不必须初始化、默认值为带*的引脚
PortPinsEnum_Type I2C_SdaPin SDA引脚,每个IICx对应不同的Pin I2C0 -*PTB3、PTB1、PTD9

I2C1 -*PTC11、PTE0

不必须初始化、默认值为带*的引脚
I2C_ISR_CALLBACK I2C_Isr I2C中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断

变量

函数

LPLD_I2C_Init()

函数原型

uint8 LPLD_I2C_Init(I2C_InitTypeDef)

描述

I2C初始化函数

形参

类型 名称 描述 取值
I2C_InitTypeDef i2c_init_structure I2C初始化结构体 结构体定义见I2C_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_I2C_Deinit()

函数原型

uint8 LPLD_I2C_Deinit(I2C_InitTypeDef )

描述

I2C反初始化函数

形参

类型 名称 描述 取值
I2C_InitTypeDef i2c_init_structure I2C初始化结构体 结构体定义见I2C_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_I2C_EnableIrq()

函数原型

uint8 LPLD_I2C_EnableIrq(I2C_InitTypeDef )

描述

I2C使能外设中断

形参

类型 名称 描述 取值
I2C_InitTypeDef i2c_init_structure I2C初始化结构体 结构体定义见I2C_InitTypeDef

LPLD_I2C_DisableIrq()

函数原型

uint8 LPLD_I2C_DisableIrq(I2C_InitTypeDef )

描述

I2C禁止外设中断

形参

类型 名称 描述 取值
I2C_InitTypeDef i2c_init_structure I2C初始化结构体 结构体定义见I2C_InitTypeDef

LPLD_I2C_Start()

函数原型

void LPLD_I2C_Start(I2C_Type *)

描述

I2Cx产生开始信号函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

LPLD_I2C_Stop()

函数原型

void LPLD_I2C_Stop(I2C_Type *)

描述

I2Cx产生停止信号函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

LPLD_I2C_ReStart()

函数原型

void LPLD_I2C_ReStart(I2C_Type *)

描述

I2Cx再次产生开始信号函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

LPLD_I2C_WaitAck()

函数原型

void LPLD_I2C_WaitAck(I2C_Type *, uint8)

描述

I2Cx等待ACK信号函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

uint8 is_wait 选择是否等待应答 I2C_ACK_OFF - 关闭等待Ack

I2C_ACK_ON - 开启等待Ack,并等待ACK信号

LPLD_I2C_WriteByte()

函数原型

void LPLD_I2C_WriteByte(I2C_Type *, uint8)

描述

I2Cx发送一个字节函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

uint8 data8 要发送的字节数据 0 - 255


LPLD_I2C_ReadByte()

函数原型

uint8 LPLD_I2C_ReadByte(I2C_Type *)

描述

I2Cx发送一个字节函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

输出

I2C读取的字节

LPLD_I2C_SetMasterWR()

函数原型

void LPLD_I2C_SetMasterWR(I2C_Type *, uint8)

描述

I2Cx主机读写模式配置函数

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

uint8 mode 读写模式选择 I2C_MWSR - 主机写

I2C_MRSW - 主机读

LPLD_I2C_StartTrans()

函数原型

void LPLD_I2C_StartTrans(I2C_Type *, uint8, uint8)

描述

I2C开始传输函数,需要设置外围设备地址和读写模式

形参

类型 名称 描述 取值
I2C_Type* i2cx 选择I2C模块的通道 I2C0 - I2C通道0

I2C1 - I2C通道1

uint8 addr 外围设备地址 0 - 255
uint8 mode 读写模式选择 I2C_MWSR - 主机写

I2C_MRSW - 主机读

其他

I2C ACK宏定义

该宏定义用于判断开启或者关闭I2C ACK功能。
宏定义名 描述
I2C_ACK_OFF 关闭I2C ACK功能
I2C_ACK_ON 开启I2C ACK功能

I2C 主机读写模式宏定义

该宏定义用于判断I2C 主机读写模式。
宏定义名 描述
I2C_MWSR I2C 主机读
I2C_MWSW I2C 主机写

wangsong