110VCGQ/模块资料/AHT20例程/MYI2C.h

99 lines
3.0 KiB
C
Raw Normal View History

2024-11-18 10:09:39 +08:00
#ifndef _MYI2C_h_
#define _MYI2C_h_
#define ARM32 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪARM<52><4D><EFBFBD><EFBFBD><><D7A2>ΪC51<35><31><EFBFBD><EFBFBD>
#ifdef ARM32
#include "ch32f20x.h"
#define IIC_SDA_PORT GPIOB
#define SDA_Pin GPIO_Pin_7
#define IIC_SCL_PORT GPIOB
#define SCL_Pin GPIO_Pin_6
#else
#include "STC12C5A60S2.h"
#define IIC_SDA_PIN P03
#define IIC_SCL_PIN P02
#endif
//<2F>û<EFBFBD><C3BB>޸<EFBFBD><DEB8><EFBFBD>
#define MYI2C_delay_us_cnt 16//<2F>ӳ<EFBFBD><31><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MCU<43><55><EFBFBD><EFBFBD>
#define MYI2C_Tick 10//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>λ:<3A><><EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ1-100ms
#define MYI2C_Buffer_Size 20//<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>
//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD>
#define Wait_Ack_time 199//<2F>ȴ<EFBFBD>ACKӦ<4B><D3A6>ʱ<EFBFBD><EFBFBD><E4A3AC>λ:΢<><CEA2>
#define MinReadTim 500//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4A3AC>λ:<3A><><EFBFBD><EFBFBD>
#define PowerOnTim 10//<2F>ϵ<EFBFBD><CFB5>ӳ<EFBFBD>10<31><30><EFBFBD><EFBFBD>
#define MeasureTim 150//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӳ<EFBFBD>150<35><30><EFBFBD><EFBFBD>
#define SDA_OUT 0 //SDA<44><41><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define SDA_IN 1 //SDA<44><41><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define SCL_OUT 2 //SCL<43><4C><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
#define SDA_R 0 //<2F><>ȡSDA<44><41><EFBFBD><EFBFBD>
#define SCL_H 1
#define SCL_L 2
#define SDA_H 3
#define SDA_L 4
#define SENSOR_IDLE 0 //
#define SENSOR_MEASURE 1 //
#define SENSOR_COMPLETE 2 //
#define MYI2C_SCK_OD_Mode MYI2C_GPIO_MODE(SCL_OUT)
#define MYI2C_SDA_OD_Mode MYI2C_GPIO_MODE(SDA_OUT)
#define MYI2C_SDA_IN_Mode MYI2C_GPIO_MODE(SDA_IN)
#define MYI2C_SCK_Clr() MYI2C_GPIO_DATA(SCL_L);MYI2C_Delay_us(2)
#define MYI2C_SCK_Set() MYI2C_GPIO_DATA(SCL_H);MYI2C_Delay_us(4)
#define MYI2C_SDA_Clr() MYI2C_GPIO_DATA(SDA_L);MYI2C_Delay_us(2)
#define MYI2C_SDA_Set() MYI2C_GPIO_DATA(SDA_H);MYI2C_Delay_us(2)
#define I2C_SDA_PIN P03
#define I2C_SCL_PIN P02
typedef struct
{
unsigned char Adrr;
unsigned int timcnt;
unsigned char ErrFlag;
unsigned char Step;
unsigned int SetRTim;
unsigned char SendByte[MYI2C_Buffer_Size];
unsigned char ReadByte[MYI2C_Buffer_Size];
float RH;//ʪ<><CAAA>
float T;//<2F><EFBFBD>
}MYI2C_Struct;
extern MYI2C_Struct SENx;
/* Exported functions ------------------------------------------------------- */
void MYI2C_Init(MYI2C_Struct *pst,unsigned int ReadTimMS,unsigned char xAddr);
void MYI2C_Handle(MYI2C_Struct *pst);
/* Private functions ---------------------------------------------------------*/
void MYI2C_Delay_us(unsigned long nTim);
void MYI2C_IIC_Start(void);
void MYI2C_IIC_Stop(void);
void MYI2C_IIC_Ack(unsigned char ack);
unsigned char MYI2C_IIC_Wait_Ack(unsigned int wait_time);
void MYI2C_Write_IIC_Byte(unsigned char dat);
unsigned char MYI2C_Read_IIC_Byte(void);
//void MYI2C_Reset(void);
unsigned char MYI2C_READ_FUNC (MYI2C_Struct *pst,unsigned char device_addr,unsigned char register_addr,unsigned char *pDat,unsigned char len);
unsigned char MYI2C_WRITE_FUNC(MYI2C_Struct *pst,unsigned char device_addr,unsigned char register_addr,unsigned char *pDat,unsigned char len);
void MYI2C_GPIO_MODE(unsigned char TYP);
unsigned char MYI2C_GPIO_DATA(unsigned char TYP);
unsigned char CheckCrc8(unsigned char *pDat,unsigned char Lenth);
#endif //_MYI2C_h_