如何用Windows .NET或Mac OS应用读取TI TMP117EVM模块实时温度?
读取TMP117EVM实时温度(Windows .NET/MacOS)方案
由于TI未提供针对Windows .NET或MacOS的官方编程接口,且未搭建独立I2C硬件接口,可通过以下两种方案实现温度读取:
方案1:直接操作USB-I2C桥接通信
TMP117EVM通过USB转I2C桥接芯片与电脑通信,可借助通用USB通信库直接读写传感器寄存器:
- Windows .NET:使用
HidLibrary或LibUsbDotNet枚举EVM的USB设备(需提前获取设备VID/PID,可通过设备管理器查看),按照TMP117的I2C协议发送指令。核心流程:- 发送I2C起始信号+传感器地址(默认
0x48)+温度寄存器地址(0x00) - 发送重复起始信号,读取2字节温度数据
- 将16位补码数据转换为实际温度(分辨率0.0078125℃)
- 发送I2C起始信号+传感器地址(默认
- MacOS:通过
libusb的Swift/Objective-C绑定或系统IOUSBHost框架实现USB通信,逻辑与Windows端一致,直接解析传感器返回的寄存器数据。
方案2:逆向复用TI官方GUI通信协议
TI配套的TMP117EVM GUI工具已实现完整通信逻辑,可通过抓包工具(如Wireshark的USB抓包功能)分析工具与EVM的交互指令,在自己的应用中复现这些指令序列,快速实现温度读取。
.NET端核心代码示例(伪代码)
using HidLibrary; // 替换为TMP117EVM的实际VID和PID var evmDevice = HidDevices.Enumerate(0x0451, 0x16A8).FirstOrDefault(); if (evmDevice != null) { evmDevice.Open(); // 构造读取温度寄存器的指令包(需匹配EVM的USB通信格式) byte[] readTempCmd = { 0x02, 0x48, 0x00, 0x02 }; evmDevice.Write(readTempCmd); // 读取返回数据 byte[] tempResponse = new byte[6]; if (evmDevice.Read(tempResponse, 1000)) { // 解析16位补码温度值 short rawTemp = BitConverter.ToInt16(tempResponse, 2); float currentTemp = rawTemp * 0.0078125f; Console.WriteLine($"实时温度:{currentTemp:F2}℃"); } evmDevice.Close(); }
关键注意事项
- 务必参考TMP117官方 datasheet 确认寄存器地址、通信时序和数据转换规则。
- MacOS开发需注意USB权限申请,需在Info.plist中添加
USB Device Usage Description声明。 - Windows端若使用LibUsbDotNet,需为EVM安装对应的WinUSB驱动。
内容的提问来源于stack exchange,提问作者Doug Null
相关产品推荐
相关产品推荐

