STM32H750XB_RT-THREAD/26-27-LTDC—液晶显示/2-LTDC—液晶显示中文(字库在外部FLASH)/User/touch/bsp_i2c_touch.h
2025-07-21 14:34:29 +08:00

77 lines
2.9 KiB
C
Raw Permalink 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 __I2C_TOUCH_H
#define __I2C_TOUCH_H
#include "stm32h7xx.h"
/*使用软件IIC把SOFT_IIC宏设置为1硬件IIC则设置为0
!!使用硬件IIC时非常容易出现错误不推荐*/
#define SOFT_IIC 1
/*设定使用的电容屏IIC设备地址*/
/* 如果用的是4.3寸/5寸的RGB屏其触摸芯片可能是GT1151QM它的I2C地址不同需要定义这个宏切换一下地址 */
#define LCD_TOUCH_IC_GT1151QM
#ifndef LCD_TOUCH_IC_GT1151QM
#define GTP_ADDRESS 0xBA
#else
#define GTP_ADDRESS 0x28
/* 4.3寸和5寸电容屏都用 GT1151QM 这个新触摸芯片,
只能选择这两个屏幕当中的一个默认选5寸电容屏定义宏为1选中*/
#define TOUCH_GT1151QM_LCD_4_3 0 //使用的是4.3寸电容屏(GT1151QM)
#define TOUCH_GT1151QM_LCD_5 1 //使用的是5寸电容屏(GT1151QM)
#endif
#define I2CT_FLAG_TIMEOUT ((uint32_t)0x1000)
#define I2CT_LONG_TIMEOUT ((uint32_t)(10 * I2CT_FLAG_TIMEOUT))
/*I2C引脚*/
#define GTP_I2C I2C2
#define GTP_I2C_CLK_ENABLE() __HAL_RCC_I2C2_CLK_ENABLE()
#define GTP_I2C_CLK_INIT RCC_APB1PeriphClockCmd
#define GTP_I2C_SCL_PIN GPIO_PIN_4
#define GTP_I2C_SCL_GPIO_PORT GPIOH
#define GTP_I2C_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE()
#define GTP_I2C_SCL_AF GPIO_AF4_I2C2
#define GTP_I2C_SDA_PIN GPIO_PIN_5
#define GTP_I2C_SDA_GPIO_PORT GPIOH
#define GTP_I2C_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOH_CLK_ENABLE()
#define GTP_I2C_SDA_AF GPIO_AF4_I2C2
/*复位引脚*/
#define GTP_RST_GPIO_PORT GPIOG
#define GTP_RST_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
#define GTP_RST_GPIO_PIN GPIO_PIN_7
/*中断引脚*/
#define GTP_INT_GPIO_PORT GPIOG
#define GTP_INT_GPIO_CLK_ENABLE() __HAL_RCC_GPIOG_CLK_ENABLE()
#define GTP_INT_GPIO_PIN GPIO_PIN_3
#define GTP_INT_EXTI_IRQ EXTI3_IRQn
/*中断服务函数*/
#define GTP_IRQHandler EXTI3_IRQHandler
//软件IIC使用的宏
#define I2C_SCL_1() HAL_GPIO_WritePin(GTP_I2C_SCL_GPIO_PORT, GTP_I2C_SCL_PIN,GPIO_PIN_SET) /* SCL = 1 */
#define I2C_SCL_0() HAL_GPIO_WritePin(GTP_I2C_SCL_GPIO_PORT, GTP_I2C_SCL_PIN,GPIO_PIN_RESET) /* SCL = 0 */
#define I2C_SDA_1() HAL_GPIO_WritePin(GTP_I2C_SDA_GPIO_PORT, GTP_I2C_SDA_PIN,GPIO_PIN_SET) /* SDA = 1 */
#define I2C_SDA_0() HAL_GPIO_WritePin(GTP_I2C_SDA_GPIO_PORT, GTP_I2C_SDA_PIN,GPIO_PIN_RESET) /* SDA = 0 */
#define I2C_SDA_READ() HAL_GPIO_ReadPin(GTP_I2C_SDA_GPIO_PORT, GTP_I2C_SDA_PIN) /* 读SDA口线状态 */
//函数接口
void I2C_Touch_Init(void);
uint32_t I2C_WriteBytes(uint8_t ClientAddr,uint8_t* pBuffer, uint8_t NumByteToWrite);
uint32_t I2C_ReadBytes(uint8_t ClientAddr,uint8_t* pBuffer, uint16_t NumByteToRead);
void I2C_ResetChip(void);
void I2C_GTP_IRQDisable(void);
void I2C_GTP_IRQEnable(void);
#endif /* __I2C_TOUCH_H */