Files
player/Project/Src/Drive/Include/touch_iic.h
2025-07-05 19:47:28 +08:00

60 lines
2.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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