2025-06-27 00:32:57 +08:00
|
|
|
|
/***
|
|
|
|
|
***************************************************************************************
|
|
|
|
|
* @file touch_iic.c
|
|
|
|
|
* @version V1.0
|
|
|
|
|
* @date 2018-1-1
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* @author <EFBFBD><EFBFBD><EFBFBD>ͿƼ<EFBFBD>
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
***************************************************************************************
|
|
|
|
|
* @description
|
|
|
|
|
*
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* ʵ<EFBFBD><EFBFBD>ƽ̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STM32F429<EFBFBD><EFBFBD><EFBFBD>İ<EFBFBD> + 4.3<EFBFBD><EFBFBD>RGBҺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>Ļ<EFBFBD>ͺ<EFBFBD>RGB043M1)
|
|
|
|
|
* <EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD>https://shop212360197.taobao.com
|
|
|
|
|
* QQ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD>536665479
|
2025-06-27 00:32:57 +08:00
|
|
|
|
*
|
|
|
|
|
*
|
2025-07-05 19:47:28 +08:00
|
|
|
|
>>>>> <EFBFBD>ļ<EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
*
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* 1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>IIC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* 2.ʹ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>IIC
|
|
|
|
|
* 3.ͨ<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>Ĭ<EFBFBD><EFBFBD>Ϊ100KHz
|
2025-06-27 00:32:57 +08:00
|
|
|
|
*
|
|
|
|
|
***************************************************************************************
|
|
|
|
|
***/
|
|
|
|
|
|
|
|
|
|
#include "touch_iic.h"
|
2025-06-30 21:36:12 +08:00
|
|
|
|
#include "rthw.h"
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_GPIO_Config
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>IIC<EFBFBD><EFBFBD>GPIO<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>IICͨ<EFBFBD><EFBFBD><EFBFBD>ٶȲ<EFBFBD><EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IO<EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2M<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_IIC_GPIO_Config (void)
|
|
|
|
|
{
|
|
|
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
2025-07-05 19:47:28 +08:00
|
|
|
|
RCC_AHB1PeriphClockCmd(Touch_IIC_SCL_CLK | Touch_IIC_SDA_CLK | Touch_INT_CLK | Touch_RST_CLK , ENABLE); //<2F><>ʼ<EFBFBD><CABC>IO<49><4F>ʱ<EFBFBD><CAB1>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // <20><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; // <20><>©<EFBFBD><C2A9><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // <20>ٶȵȼ<C8B5>2M
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
GPIO_InitStructure.GPIO_Pin = Touch_IIC_SCL_PIN; // SCL
|
|
|
|
|
GPIO_Init(Touch_IIC_SCL_PORT, &GPIO_InitStructure);
|
|
|
|
|
|
|
|
|
|
GPIO_InitStructure.GPIO_Pin = Touch_IIC_SDA_PIN; // SDA
|
|
|
|
|
GPIO_Init(Touch_IIC_SDA_PORT, &GPIO_InitStructure);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // <20><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
GPIO_InitStructure.GPIO_Pin = Touch_INT_PIN; // INT
|
|
|
|
|
GPIO_Init(Touch_INT_PORT, &GPIO_InitStructure);
|
|
|
|
|
|
|
|
|
|
GPIO_InitStructure.GPIO_Pin = Touch_RST_PIN; // RST
|
|
|
|
|
GPIO_Init(Touch_RST_PORT, &GPIO_InitStructure);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
GPIO_SetBits(Touch_IIC_SCL_PORT,Touch_IIC_SCL_PIN); // SCL<43><4C><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|
|
|
|
GPIO_SetBits(Touch_IIC_SDA_PORT,Touch_IIC_SDA_PIN); // SDA<44><41><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ƽ
|
|
|
|
|
GPIO_ResetBits(Touch_INT_PORT,Touch_INT_PIN); // INT<4E><54><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ƽ
|
|
|
|
|
GPIO_SetBits(Touch_RST_PORT,Touch_RST_PIN); // RST<53><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>ƽ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_Delay
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: a - <EFBFBD><EFBFBD>ʱʱ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҷ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD>ö<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_IIC_Delay(u32 a)
|
|
|
|
|
{
|
2025-06-30 21:36:12 +08:00
|
|
|
|
rt_hw_us_delay(a);
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_INT_Out
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<EFBFBD><EFBFBD>INT<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_INT_Out(void)
|
|
|
|
|
{
|
|
|
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // <20><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // <20>ٶȵȼ<C8B5>2M
|
|
|
|
|
GPIO_InitStructure.GPIO_Pin = Touch_INT_PIN ; // <20><>ʼ<EFBFBD><CABC> INT <20><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
GPIO_Init(Touch_INT_PORT, &GPIO_InitStructure);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_INT_In
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIC<EFBFBD><EFBFBD>INT<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_INT_In(void)
|
|
|
|
|
{
|
|
|
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; // <09><><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // <09>ٶȵȼ<C8B5>2M
|
|
|
|
|
GPIO_InitStructure.GPIO_Pin = Touch_INT_PIN ; // <09><>ʼ<EFBFBD><CABC> INT <20><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
GPIO_Init(Touch_INT_PORT, &GPIO_InitStructure);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_Start
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: IIC<EFBFBD><EFBFBD>ʼ<EFBFBD>ź<EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>SCL<EFBFBD><EFBFBD><EFBFBD>ڸߵ<EFBFBD>ƽ<EFBFBD>ڼ䣬SDA<EFBFBD>ɸߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʼ<EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_IIC_Start(void)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SDA(1);
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
|
|
|
|
|
Touch_IIC_SDA(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_Stop
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: IICֹͣ<EFBFBD>ź<EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>SCL<EFBFBD><EFBFBD><EFBFBD>ڸߵ<EFBFBD>ƽ<EFBFBD>ڼ䣬SDA<EFBFBD>ɵ͵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ʼ<EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_IIC_Stop(void)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SDA(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SDA(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_ACK
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: IICӦ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>SCLΪ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD>ڼ䣬SDA<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_IIC_ACK(void)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SDA(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
Touch_IIC_SCL(0); // SCL<43><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>SDAӦ<41><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
Touch_IIC_SDA(1);
|
|
|
|
|
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_NoACK
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: IIC<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>SCLΪ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD>ڼ䣬<EFBFBD><EFBFBD>SDA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
void Touch_IIC_NoACK(void)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SDA(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_WaitACK
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>SCLΪ<EFBFBD>ߵ<EFBFBD>ƽ<EFBFBD>ڼ䣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SDA<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
u8 Touch_IIC_WaitACK(void)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SDA(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay(IIC_DelayVaule);
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
if( GPIO_ReadInputDataBit(Touch_IIC_SDA_PORT,Touch_IIC_SDA_PIN) != 0) //<2F>ж<EFBFBD><D0B6>豸<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SCL(0);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
return ACK_ERR; //<2F><>Ӧ<EFBFBD><D3A6>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SCL(0);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
return ACK_OK; //Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_WriteByte
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: IIC_Data - Ҫд<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: ACK_OK - <EFBFBD>豸<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ACK_ERR - <EFBFBD>豸<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: дһ<EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ǰ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
u8 Touch_IIC_WriteByte(u8 IIC_Data)
|
|
|
|
|
{
|
|
|
|
|
u8 i;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 8; i++)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SDA(IIC_Data & 0x80);
|
|
|
|
|
|
|
|
|
|
Touch_IIC_Delay( IIC_DelayVaule );
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay( IIC_DelayVaule );
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
if(i == 7)
|
|
|
|
|
{
|
|
|
|
|
Touch_IIC_SDA(1);
|
|
|
|
|
}
|
|
|
|
|
IIC_Data <<= 1;
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
return Touch_IIC_WaitACK(); //<2F>ȴ<EFBFBD><C8B4>豸<EFBFBD><E8B1B8>Ӧ
|
2025-06-27 00:32:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*****************************************************************************************
|
2025-07-05 19:47:28 +08:00
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: Touch_IIC_ReadByte
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD>: ACK_Mode - <EFBFBD><EFBFBD>Ӧģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>źţ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ֵ: ACK_OK - <EFBFBD>豸<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ACK_ERR - <EFBFBD>豸<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* ˵ <EFBFBD><EFBFBD>:1.<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ǰ
|
|
|
|
|
* 2.Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
******************************************************************************************/
|
|
|
|
|
|
|
|
|
|
u8 Touch_IIC_ReadByte(u8 ACK_Mode)
|
|
|
|
|
{
|
|
|
|
|
u8 IIC_Data = 0;
|
|
|
|
|
u8 i = 0;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < 8; i++)
|
|
|
|
|
{
|
|
|
|
|
IIC_Data <<= 1;
|
|
|
|
|
|
|
|
|
|
Touch_IIC_SCL(1);
|
|
|
|
|
Touch_IIC_Delay( IIC_DelayVaule );
|
|
|
|
|
IIC_Data |= (GPIO_ReadInputDataBit(Touch_IIC_SDA_PORT,Touch_IIC_SDA_PIN) & 0x01);
|
|
|
|
|
Touch_IIC_SCL(0);
|
|
|
|
|
Touch_IIC_Delay( IIC_DelayVaule );
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
if ( ACK_Mode == 1 ) // Ӧ<><D3A6><EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
Touch_IIC_ACK();
|
|
|
|
|
else
|
2025-07-05 19:47:28 +08:00
|
|
|
|
Touch_IIC_NoACK(); // <20><>Ӧ<EFBFBD><D3A6><EFBFBD>ź<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
return IIC_Data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/********************************************************************************************/
|