Files
player/Project/Src/Drive/Include/touch_iic.h

60 lines
2.5 KiB
C
Raw Normal View History

2025-06-27 00:32:57 +08:00
#ifndef __IIC_H
#define __IIC_H
#include "stm32f4xx.h"
/*---------------------------------- IIC 引脚配置宏 ---------------------------------*/
#define Touch_IIC_SCL_CLK RCC_AHB1Periph_GPIOC // SCL 引脚时钟
#define Touch_IIC_SCL_PORT GPIOC // SCL 引脚端口
#define Touch_IIC_SCL_PIN GPIO_Pin_13 // SCL 引脚
#define Touch_IIC_SDA_CLK RCC_AHB1Periph_GPIOB // SDA 引脚时钟
#define Touch_IIC_SDA_PORT GPIOB // SDA 引脚端口
#define Touch_IIC_SDA_PIN GPIO_Pin_2 // SDA 引脚
#define Touch_INT_CLK RCC_AHB1Periph_GPIOA // INT 引脚时钟
#define Touch_INT_PORT GPIOA // INT 引脚端口
#define Touch_INT_PIN GPIO_Pin_15 // INT 引脚
#define Touch_RST_CLK RCC_AHB1Periph_GPIOI // RST 引脚时钟
#define Touch_RST_PORT GPIOI // RST 引脚端口
#define Touch_RST_PIN GPIO_Pin_11 // RST 引脚
/*----------------------------------- IIC相关定义 ----------------------------------*/
#define ACK_OK 1 // 响应正常
#define ACK_ERR 0 // 响应错误
// IIC通信延时Touch_IIC_Delay()函数使用,
// 通信速度在100KHz左右由于使用较长的FPC排线连接屏幕不建议使用过高的速度
#define IIC_DelayVaule 20
/*------------------------------------ IO口操作 ------------------------------------*/
#define Touch_IIC_SCL(a) if (a) \
GPIO_SetBits(Touch_IIC_SCL_PORT,Touch_IIC_SCL_PIN);\
else \
GPIO_ResetBits(Touch_IIC_SCL_PORT,Touch_IIC_SCL_PIN)
#define Touch_IIC_SDA(a) if (a) \
GPIO_SetBits(Touch_IIC_SDA_PORT,Touch_IIC_SDA_PIN);\
else \
GPIO_ResetBits(Touch_IIC_SDA_PORT,Touch_IIC_SDA_PIN)
/*------------------------------------ 函数声明 -----------------------------------*/
void Touch_IIC_GPIO_Config (void); // IIC引脚初始化
void Touch_IIC_Delay(u32 a); // IIC延时函数
void Touch_INT_Out(void); // INT数据脚配置为输出模式
void Touch_INT_In(void); // INT数据脚配置为输入模式
void Touch_IIC_Start(void); // 启动IIC通信
void Touch_IIC_Stop(void); // IIC停止信号
void Touch_IIC_ACK(void); // 发送响应信号
void Touch_IIC_NoACK(void); // 发送非应答信号
u8 Touch_IIC_WaitACK(void); // 等待应答信号
u8 Touch_IIC_WriteByte(u8 IIC_Data); // 写字节函数
u8 Touch_IIC_ReadByte(u8 ACK_Mode); // 读字节函数
#endif //__IIC_H