【RT-Thread】基于Sensor框架TMP1075温度传感器驱动软件包

1 简介

  tmp1075 软件包是基于RT-Thread sensor框架实现的一个驱动包。基于该软件包,RT-Thread应用程序可以使用标准的sensor接口访问tmp1075,获取传感器数据。


1.1 目录结构

名称 说明
docs 文档目录
examples 例子目录
inc 头文件目录
src 源代码目录
LICENSE 许可证文件
SConscript RT-Thread默认构建脚本

1.2 许可证

  tmp1075 软件包遵循 Apache license v2.0 许可,详见 LICENSE 文件。


2 传感器介绍

  tmp1075 是 Texas Instruments(德州仪器)公司开发的一款i2c接口的数字式温度传感器,具有供电范围广、功耗低、精度高优点。tmp1075与经典lm75、tmp75等xx75系列的温度传感器硬件上pin对pin完全兼容,软上基本兼容,稍作修改代码即可兼容使用(官方称100%兼容)。

  • 1.7—5.5V宽范围供电
  • 2.7uA工作电流,0.37uA待机电流
  • 支持i2c和SMBus接口
  • 12 Bit ADC
  • 支持32个从地址
  • 良好的温度特性
功能 量程 分辨率 精度
温度 -55—127℃ 0.0625℃ ±1℃

2.1 电路连接

  tmp1075通信接口为标准i2c,支持SMBus模式,支持温度比较器模式和中断模式报警输出,并映射到一个开漏IO引脚上,可以用于唤醒CPU、报警控制等;另外还提供三个地址选择引脚。

在这里插入图片描述

单片tmp1075常规应用电路

2.2 i2c从地址

  一般地,常见i2c接口的器件,3根地址选择线最多支持2^3=8个地址。但是,tmp1075就比较厉害了,根据地址线不同接法,可以支持达到32个地址,也就是一根i2c总线可以挂32片tmp1075,特别适用于多个温度传感器的应用场合。下面表格是地址与地址线接法的关系表,如上图中的电路连接,此时的器件地址为0x48。

在这里插入图片描述

地址选择

3 支持情况

包含设备 温度计
通信接口
IIC
SPI
工作模式
轮询
中断
FIFO
电源模式
掉电
低功耗
普通

4 使用说明

4.1 依赖

  • RT-Thread 4.0.0+

  • sensor 框架组件

  • I2C 驱动,tmp1075设备使用 I2C 进行数据通讯,需要系统 I2C 驱动框架支持

4.2 获取软件包

  首先需更新RT-Thread Env中软件包索引,才能选择 tmp1075包。在 RT-Thread Env 环境下执行 pkgs --upgrade 更新软件包索引,然后在包管理器中选择tmp1075,具体路径如下。然后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。如需使用示例程序,则使能Enable tmp1075 sample

RT-Thread online packages --->
    peripheral libraries and drivers --->
        sensors drivers --->
            [*] TMP1075 digital temperature sensor for i2c interface.
            		[*] Enable tmp1075 sample
                    Version (latest)  --->

Version:软件包版本选择,默认选择最新版本。

在这里插入图片描述


4.3 初始化

  tmp075驱动包对外函数接口只有一个初始化函,初始化函数如下所示:

int rt_hw_tmp1075_init(const char *name, struct rt_sensor_config *cfg);

该函数需要由用户调用,函数主要完成的功能有:

  • 根据配置信息配置i2c名称、i2c地址等(可增加其他配置信息),然后初始化设备

  • 注册相应的传感器设备,完成 tmp1075设备的注册

参考示例:

#include "tmp1075.h"

static int rt_hw_tmp1075_port(void)
{
    struct rt_sensor_config cfg;
    	
	cfg.intf.dev_name = "i2c1"; 		/* i2c bus */
    cfg.intf.user_data = (void *)0x48;	/* tmp1075 slave addr */
    rt_hw_tmp1075_init("tmp1075", &cfg);/* tmp1075 */

    return RT_EOK;
}
INIT_COMPONENT_EXPORT(rt_hw_tmp1075_port);

4.4 读取数据

  tmp1075软件包基于sensor框架,sensor框架继承于RT-Thread标准设备框架,可以使用RT-Thread标准设备接口"open/read/write"读取传感器数据。

参考伪代码:

 rt_device_t temp_dev = RT_NULL;
 struct rt_sensor_data temp_data;
    
temp_dev = rt_device_find("temp_tmp1075");
rt_device_open(temp_dev, RT_DEVICE_FLAG_RDONLY)rt_device_read(temp_dev, 0, &sensor_data, 1);

4.5 msh/finsh测试

查看设备注册

msh >list_device
device           type         ref count
-------- -------------------- ----------
temp_tmp Sensor Device        1            
i2c1     I2C Bus              0       
pin      Miscellaneous Device 0       
uart4    Character Device     2       

注:

完整设备名称为“temp_tmp1075”,终端显示有长度限制


运行例程周期打印数据

 \ | /
- RT -     Thread Operating System
 / | \     4.0.1 build Apr 28 2020
 2006 - 2019 Copyright by rt-thread team
[I/sensor] rt_sensor init success
temp[27.1C],timestamp[2]
msh >temp[27.1C],timestamp[502]
temp[27.1C],timestamp[1002]
temp[27.0C],timestamp[1502]

使用RTT自带的测试命令

  • 探测设备
msh >sensor probe temp_tmp1075
[I/sensor.cmd] device id: 0x7500!

注:

tmp1075设备id是16bit,“sensor”函数中,存放设备id变量为8bit,需改更改为16bit,否则输出id有误。sensor框架默认设备id为8bit?


  • 获取传感器信息
msh >sensor info
vendor :11
model  :tmp1075_temp
unit   :8
range_max :1250
range_min :-550
period_min:100
fifo_max  :0

注:

tmp1075器件厂商为德州仪器,sensor框架暂未提供,现暂定序号为11,已在RT-Thread源码上PR。


  • 读取温度数据
msh >sensor read 3
[I/sensor.cmd] num:  0, temp: 27.8C, timestamp: 3679
[I/sensor.cmd] num:  1, temp: 27.9C, timestamp: 3690
[I/sensor.cmd] num:  2, temp: 28.0C, timestamp: 3700

5 代码仓库

【1】 https://github.com/Prry/rtt-tmp1075


6 相关文章

【1】基于RT-Thread sensor框架的BMP180气压传感器应用

原创文章 128 获赞 147 访问量 36万+

猜你喜欢

转载自blog.csdn.net/qq_20553613/article/details/105871072