目錄
簡介:
SHT40.c:
SHT40.h
測試結(jié)果:
簡介:
? ? ? ? SHT40是瑞士Sensirion公司推出的第四代溫濕度傳感器,內(nèi)部集成加熱器用于去除表面微小液滴。集成I2C接口,典型的相對濕度精度1.8%RH,典型溫度精度0.2℃,運(yùn)行在0-100%RH和-40-125℃的環(huán)境中。
主控:STM32H7B0VBT6
平臺:STM32CubeIDE
SHT40一片,使用硬件I2C驅(qū)動:
I2C配置:
如果硬件上沒有上拉電阻,請打開GPIO的上拉電阻:
文章來源:http://www.zghlxwxcb.cn/news/detail-841358.html
SHT40.c:
/********************************Copyright (c)**********************************\
**
** (c) Copyright 2023, Main, China, 被鋼琴支配的悲慘大學(xué)生.
** All Rights Reserved
**
** By(被鋼琴支配的悲慘大學(xué)生 personally owned)
** https://blog.csdn.net/m0_71226271?type=blog
**
**----------------------------------文件信息------------------------------------
** 文件名稱: SHT40.c
** 創(chuàng)建人員: 被鋼琴支配的悲慘大學(xué)生
** 創(chuàng)建日期: 2023-09-04
** 文檔描述:基于STM32H7B0VBT6的HAL庫SHT40驅(qū)動源碼,使用硬件I2C
\********************************End of Head************************************/
#include "main.h"
#include "i2c.h"
#include "SHT40.h"
/*************************************************************************************************
* 函 數(shù) 名: SHT40_Read_Temperature_Humidity
* 入口參數(shù): Temperature溫度指針,Humidity濕度指針
* 返回值:無
* 函數(shù)功能: 以高精度讀取溫度和濕度
* 說 明:不對CRC校驗(yàn)碼做驗(yàn)證
*************************************************************************************************/
void SHT40_Read_Temperature_Humidity(double *Temperature,double *Humidity)
{
uint32_t Temperature_Byte;
uint32_t Temperature_Checksum;
uint32_t Humidity_Byte;
uint32_t Humidity_Checksum;
uint8_t I2C_Transmit_Data[1];
I2C_Transmit_Data[0]=SHT40_MEASURE_TEMPERATURE_HUMIDITY;
uint8_t I2C_Receive_Data[6];
HAL_I2C_Master_Transmit(&hi2c1, SHT30_Write, I2C_Transmit_Data,1,HAL_MAX_DELAY);
HAL_Delay(10);
HAL_I2C_Master_Receive(&hi2c1, SHT30_Read, I2C_Receive_Data,6,HAL_MAX_DELAY);
Temperature_Byte = I2C_Receive_Data[0] << 8| I2C_Receive_Data[1];
Temperature_Checksum= I2C_Receive_Data[2];
Humidity_Byte = I2C_Receive_Data[3] << 8| I2C_Receive_Data[4];
Humidity_Checksum = I2C_Receive_Data[5];
*Temperature = -45 + 175 * Temperature_Byte/65535.0;
*Humidity = -6 + 125 * Humidity_Byte/65535.0;
}
/*************************************************************************************************
* 函 數(shù) 名: SHT40_Read_Serial_Number
* 入口參數(shù): 無
* 返回值:32bit的序列號
* 函數(shù)功能: 讀取SHT40的出場唯一序列號
* 說 明:無
*************************************************************************************************/
uint32_t SHT40_Read_Serial_Number()
{
uint32_t Serial_Number;
uint8_t I2C_Transmit_Data[1];
I2C_Transmit_Data[0]=SHT40_READ_SERIAL_NUMBER;
uint8_t I2C_Receive_Data[6];
HAL_I2C_Master_Transmit(&hi2c1, SHT30_Write, I2C_Transmit_Data,1,HAL_MAX_DELAY);
HAL_I2C_Master_Receive(&hi2c1, SHT30_Read, I2C_Receive_Data,6,HAL_MAX_DELAY);
Serial_Number=(I2C_Receive_Data[0] << 24)|
(I2C_Receive_Data[1] << 16)|
(I2C_Receive_Data[3] << 8)|
(I2C_Receive_Data[4] << 0);
return Serial_Number;
}
/*************************************************************************************************
* 函 數(shù) 名: SHT40_Heater_200mW_1s
* 入口參數(shù): 無
* 返回值:無
* 函數(shù)功能: 開始內(nèi)部加熱器,以200mW加熱1秒(一秒)
* 說 明:加熱時間不能超過運(yùn)行時間的10%,否則會過熱。詳情說明請參考數(shù)據(jù)手冊12頁
*************************************************************************************************/
void SHT40_Heater_200mW_1s()
{
uint8_t I2C_Transmit_Data[1];
I2C_Transmit_Data[0]=SHT40_HEATER_200mW_1s;
HAL_I2C_Master_Transmit(&hi2c1, SHT30_Write, I2C_Transmit_Data,1,HAL_MAX_DELAY);
}
SHT40.h
/********************************Copyright (c)**********************************\
**
** (c) Copyright 2023, Main, China, 被鋼琴支配的悲慘大學(xué)生.
** All Rights Reserved
**
** By(被鋼琴支配的悲慘大學(xué)生 personally owned)
** https://blog.csdn.net/m0_71226271?type=blog
**
**----------------------------------文件信息------------------------------------
** 文件名稱: SHT40.h
** 創(chuàng)建人員: 被鋼琴支配的悲慘大學(xué)生
** 創(chuàng)建日期: 2023-09-04
** 文檔描述:基于STM32H7B0VBT6的HAL庫SHT40驅(qū)動源碼,使用硬件I2C
\********************************End of Head************************************/
#include "main.h"
/**************************I2C地址****************************/
#define SHT30_Write (0x44<<1) //寫入地址
#define SHT30_Read ((0x44<<1)+1) //讀出地址
/**************************SHT40命令****************************/
#define SHT40_MEASURE_TEMPERATURE_HUMIDITY 0xFD //高精度讀取溫濕度命令
#define SHT40_READ_SERIAL_NUMBER 0x89 //讀取唯一序列號命令
#define SHT40_HEATER_200mW_1s 0x39 //200mW加熱1秒命令
/**************************API****************************/
void SHT40_Read_Temperature_Humidity(double *Temperature,double *Humidity);
uint32_t SHT40_Read_Serial_Number(void);
void SHT40_Heater_200mW_1s(void);
測試結(jié)果:
文章來源地址http://www.zghlxwxcb.cn/news/detail-841358.html
到了這里,關(guān)于STM32 SHT40驅(qū)動源碼(使用硬件I2C)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!