Files
player/Project/Src/Drive/Source/touch_iic.c

301 lines
8.7 KiB
C
Raw Normal View History

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"
#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)
{
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;
}
/********************************************************************************************/