使用ESP32驱动TI的TMP117温度传感器(带例程)
简介
硬件连接
TMP117的引脚定义

这里需要注意的是芯片根据ADD0引脚连接不同的网络,I2C地址会发生变化,具体的定义如下图

表中的X代表I2C通讯中代表读写的bit,需要注意的是,在ESP的I2C库函数中,传入参数的地址是7位的地址,在函数中会右移一位并在最低位加上代表读写的bit组成8位的读地址或写地址。举例来说,假如ADD0连接Ground,按照表中的地址是1001000X,那么要传入I2C函数中传入的地址应该为01001000也就是0x48。
TI的数据手册上给出的典型应用电路

这里需要注意的是在使用ESP32作为主机的时候,由于ESP32的芯片手册上提醒了ESP32的数字IO口自带上拉电阻,所以应用电路图中的5Kohm上拉电阻要去掉直接连接到ESP32的IO口。
本人搭建的ESP32-S电路

本人搭建的TMP117外围电路

这里为了方便我将ADD0接到了3.3V,按照前面的表格地址变成了0x49,具体按照自己的要求来接。
使用方法
首先配置ESP-IDF的配置文件,将I2C使用的SDA和SCL引脚配置为和电路中一样(按照自己的电路连接配置)。在VSCODE主界面按F1,在弹出的搜索框内选择ESP-IDF SDK配置编辑器。在左边选择Example Configuration,在右边的SCL GPIO Num和SDA GPIO Num中输入自己的硬件连接的IO口,点击右上角的保存。

上电后TMP117默认进入连续转换模式,每经过一次转换时间更新一次温度寄存器的值,读取温度寄存器(地址0x00)即可获取当前温度值。精度为0.0078125摄氏度每LSB,也就是读取到的原始数据作为16位有符号数乘上0.0078125就得到当前摄氏温度值。