ESP32 TMP75温度采集

一、简介

        TMP75芯片是一款数字温度传感器,由德州仪器生产,它具有高精度、低功耗和小尺寸等优点,广泛应用于电子设备、通信系统、汽车电子、医疗设备等领域的温度测量。

        .可选地址:8个(硬件配置)

        .接口:兼容I2C和SMBUS,

        .分辨率:9~12位,

        .精度:-40~125C°

        .工作电压:2.7~5.5V

 图1.0 芯片引脚框图

        TMP75温度寄存器为12位只读寄存器,所以一般要读取两个字节,低12位表示温度值,负数以补码的形式呈现。

 图1.1 12位温度值对照表

        TMP75芯片有8个地址可选,由硬件配置A1、A2、A3的引脚电平。

 图1.2 TMP75硬件可选地址对照表

二、代码

tmp75源文件

#include "tmp75.h"
#include "bsp_iic.h"
#include "esp_log.h"

static const char *TAG = "tmp75";

/**
* @brief  往TEM75写一个字节函数
* @param  
*	@arg   dev_addr:   器件地址
*	@arg   reg_addr:   寄存器地址
*	@arg   write_data: 写入的数据
* @retval 
*	@arg   ESP_OK:写入成功  ESP_FAIL:写入失败
**/
static esp_err_t TEM75_WriteByte(uint8_t dev_addr,uint8_t reg_addr,uint8_t write_data) 				 
{ 
#if I2C_HARDWARE
    return I2C_Master_WriteByte(dev_addr,reg_addr,write_data,200);
#else
	EspI2cWriteByte(dev_addr,reg_addr,write_data);
	return ESP_OK;
#endif
}

/**
* @brief  读取TEM75一个字节函数
* @param  
*	@arg   dev_addr:   器件地址
*	@arg   reg_addr:   寄存器地址
*	@arg   read_data:  读取的数据
* @retval 
*	@arg   ESP_OK:读取成功  ESP_FAIL:读取失败
**/
static esp_err_t TMP75_ReadByte(uint8_t dev_addr,uint8_t reg_addr,uint8_t *read_data)
{
#if I2C_HARDWARE
	return I2C_Master_ReadByte(dev_addr,reg_addr,read_data,1000);	
#else
	EspI2cReadByte(dev_addr,reg_addr,read_data);
	return ESP_OK;
#endif
}

/**
* @brief  读取TEM75两个字节函数
* @param  
*	@arg   dev_addr:   器件地址
*	@arg   reg_addr:   寄存器地址
*	@arg   *read_data: 读取的数据
*	@arg   read_len:   读取的长度
* @retval 
*	@arg   ESP_OK:读取成功  ESP_FAIL:读取失败
**/
static esp_err_t TMP75_ReadBytes(uint8_t dev_addr,uint8_t reg_addr,uint8_t *read_data)
{
#if I2C_HARDWARE
	return I2C_Master_ReadBytes(dev_addr,reg_addr,read_data,2,1000);
#else
	EspI2cReadBytes(dev_addr,reg_addr,read_data,2); 
	return ESP_OK;
#endif
} 

/**
* @brief  获取TEM75温度函数
* @param  
*	@arg   dev_addr:   器件地址
* @retval 
*	@arg   获取的温度值
**/
float TMP75_GetTemprature(uint8_t dev_addr)
{
	uint8_t  read_data[2] = {0};
	uint16_t reg_value = 0;
	float 	 temp_value = 0.0;

	if(TMP75_ReadBytes(dev_addr,TEMPERATURE_REGISTER,&read_data) == ESP_OK)
	{
		reg_value = (uint16_t)((read_data[0] << 8) | read_data[1]) >> 4 ;
	
		if(reg_value & 0x800)   						
		{
			reg_value = (~reg_value + 1) & 0xfff;    
			temp_value = reg_value * 0.0625 * -1;
		}
		else
		{
			temp_value = reg_value * 0.0625;
		}
	}
	else
	{
		ESP_LOGI(TAG,"read tmp75 data fail\n");
	}
	return temp_value;
}

tmp75头文件

#ifndef _TMP75_H_
#define _TMP75_H_	

#include "stdio.h"

#define  TMP75_SENSOR_ADDR			0X48  
#define  TEMPERATURE_REGISTER       0X00
#define  CONFIGURATION_REGISTER     0X01

float TMP75_GetTemprature(uint8_t dev_addr);

#endif /* TMP75_H_ */
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
ESP32是一种低功耗的微控制器,具有强大的处理能力和丰富的通信接口,可以用于开发各种物联网设备。在开发网络音频采集方面,ESP32可以实现实时获取音频信号并传输到远程服务器或其他设备。 ESP32开发网络音频采集需要使用其内置的Wi-Fi或蓝牙模块,将音频数据传输到网络上。首先,可以使用ESP32的模拟输入引脚或I2S接口来接收音频输入,如麦克风或音频编解码芯片的输出。通过使用ESP32的ADC(模数转换器)将模拟音频信号转换为数字信号,并将数字音频数据发送到处理器进行进一步处理。 接下来,ESP32可以使用其TCP/IP协议栈和内置的Wi-Fi模块或蓝牙模块,将音频数据传输到网络上。通过连接到远程服务器或其他设备的Wi-Fi网络,ESP32可以使用Socket编程接口将音频数据打包为数据包并发送到目标设备。在远程服务器或其他设备上,可以使用相应的软件来接收和处理ESP32发送的音频数据。 为了实现高质量的音频传输,可以使用适当的音频编解码算法和压缩技术对音频数据进行编码和解码。这样可以降低数据传输的带宽需求,并确保音频数据的实时传输和播放。 总的来说,ESP32可以通过其内置的通信模块和TCP/IP协议栈,实现音频数据的采集和传输。这为开发网络音频采集的应用提供了一种低成本、低功耗的解决方案,可以应用于语音通话、音频监控等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值