【STM32】I2C练习,SHT3X温度传感器的数据读取

简介: 【STM32】I2C练习,SHT3X温度传感器的数据读取

前言

工程的配置可以参考我的上一篇文章,两个不同地址的传感器可以挂载在一条总线上也可以和我一样分别在两个总线上,配置方法是一样的,这里提供代码进行参考。【STM32】I2C练习,HAL库读取MPU6050角度陀螺仪

sht3x.c

#include "sht3x.h"
static int16_t Sht3xAddr = 0x44 << 1; // 读写位0x88
SHT3XDATATYPE Sht3x_Data;
int8_t Sensor_I2C1_Read(uint16_t DevAddr, uint8_t *oData, uint16_t DataLen)
{
  return HAL_I2C_Master_Receive(&hi2c1,DevAddr,oData,DataLen,1000);
}
int8_t Sensor_I2C1_Write(uint16_t DevAddr, uint8_t *iData, uint16_t DataLen)
{
  return HAL_I2C_Master_Transmit(&hi2c1,DevAddr,iData,DataLen,1000);
}
void Sht3x_Read_Data(void)
{
  uint8_t Read_Buf[6];
  
  Read_Buf[0] = 0x24;
  Read_Buf[1] = 0x0b;
  Sensor_I2C1_Write(Sht3xAddr, Read_Buf, 2);
  Sensor_I2C1_Read(Sht3xAddr,Read_Buf, 6);
  
  Sht3x_Data.Temperature = (uint16_t)((Read_Buf[0]<<8) | Read_Buf[1]);    //温度拼接
  Sht3x_Data.Humidity = (uint16_t)((Read_Buf[3]<<8) | Read_Buf[4]);     //湿度拼接
  Sht3x_Data.Temperature = (175.0f * (Sht3x_Data.Temperature / 65535.0f) - 45.0f);    // T = -45 + 175 * tem / (2^16-1)
  Sht3x_Data.Humidity = (100.0f * Sht3x_Data.Humidity / 65535.0f);                  // RH = hum*100 / (2^16-1)
}

sht3x.h

#ifndef __SHT3X_H
#define __SHT3X_H
#include "main.h"
typedef struct{
  float Temperature;
  float Humidity;
}SHT3XDATATYPE;
extern SHT3XDATATYPE Sht3x_Data;
extern I2C_HandleTypeDef hi2c1;
int8_t Sensor_I2C1_Read(uint16_t DevAddr, uint8_t *oData, uint16_t DataLen);
int8_t Sensor_I2C1_Write(uint16_t DevAddr, uint8_t *iData, uint16_t DataLen);
void Sht3x_Read_Data(void);
#endif


相关文章
|
2月前
|
传感器 数据安全/隐私保护 数据格式
STM32CubeMX DHT11温湿度传感器
STM32CubeMX DHT11温湿度传感器
45 11
|
2月前
STM32CubeMX 串口收发一帧数据
STM32CubeMX 串口收发一帧数据
35 9
|
2月前
|
芯片
STM32CubeMX 串口数据收发
STM32CubeMX 串口数据收发
27 2
|
3月前
|
传感器 数据采集 移动开发
基于STM32设计的炉温温度检测仪
本文档描述了一个基于STM32F103C8T6微控制器的炉温检测系统设计。系统采用铂电阻PT100作为温度传感器,提供精确的温度测量,并通过0.96寸IIC接口的OLED显示屏显示结果。STM32F103C8T6因其丰富的外设和计算能力被选为主控芯片,PT100的电阻变化通过ADC转换为数字信号。软件设计包括数据采集、处理和显示三个部分,其中OLED显示屏的初始化函数`oled_init()`设置各种屏幕参数,`OLED_Show_Temperature()`函数负责在指定位置显示温度值。
47 3
|
3月前
|
传感器
【经典案例】STM32F407使用HAL库配置I2C详解
STM32F407是一个强大的微控制器,广泛应用于嵌入式系统中。在许多应用中,我们需要使用I2C总线来与传感器、EEPROM、显示屏等外设进行通信。本文将详细介绍如何使用STM32 HAL库来配置和使用I2C接口。
266 2
|
3月前
|
传感器 数据格式
【STM32】DHT11温湿度模块传感器详解&代码
【STM32】DHT11温湿度模块传感器详解&代码
|
4月前
|
传感器 存储 缓存
|
2月前
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
236 0
|
3月前
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
182 2