#include "GXHT30.h"
#include "delay.h"
#define write 0
#define read 1
//定义全局变量
float GXHT30_temp,GXHT30_humi,GXHT30_Temperature,GXHT30_Humidity;
/*
* @name CRC_8
* @brief CRC-8校验
* @param Crc_ptr -> 校验数据首地址
L EN -> 校验数据长度
* @retval CRC_Value -> 校验值
*/
static uint8_t CRC_8(uint8_t *Crc_ptr,uint8_t LEN)
{
uint8_t CRC_Value = 0xFF;
uint8_t i = 0,j = 0;
for(i=0;i<LEN;i++)
{
CRC_Value ^= *(Crc_ptr+i);
for(j=0;j<8;j++)
{
if(CRC_Value & 0x80)
CRC_Value = (CRC_Value << 1) ^ 0x31;
else
CRC_Value = (CRC_Value << 1);
}
}
return CRC_Value;
}
/****************************************************************************
* Function Name : GXHT30_INIT
* Description : 初始化GPIO.
****************************************************************************/
void GXHT30_INIT()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GXHT30_SDA;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_Init(GPIOA,&GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin=GXHT30_SCL;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GXHT30_SCL_H;
GXHT30_SDA_H;
}
/*******************************************************************************
* 函 数 名 : GXHT30_SDA_OUT
* 函数功能 : SDA输出配置
*******************************************************************************/
void GXHT30_SDA_OUT()
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GXHT30_SDA;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
/*******************************************************************************
* 函 数 名 : GXHT30_SDA_IN
* 函数功能 : SDA输入配置
*******************************************************************************/
void GXHT30_SDA_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GXHT30_SDA;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void GXHT30_SDA_in(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GXHT30_SDA;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
/*******************************************************************************
* 函 数 名 : GXHT30_StarT
* 函数功能 : IIC起始信号
*******************************************************************************/
void GXHT30_StarT(void)
{
GXHT30_SDA_OUT();
GXHT30_SDA_H;
GXHT30_SCL_H;
delay_us(5);
GXHT30_SDA_L;
delay_us(6);
GXHT30_SCL_L;
}
/*******************************************************************************
* 函 数 名 : GXHT30_StoP
* 函数功能 : 产生停止信号
*******************************************************************************/
void GXHT30_StoP(void)
{
GXHT30_SDA_OUT();
GXHT30_SCL_L;
G
STM32、C51驱动中科银河芯GXHT30温湿度芯片,可PIN TO PIN软硬件兼容SHT30 SHT31_gxht30驱动程序
最新推荐文章于 2024-05-13 02:38:57 发布