原创 嵌入式开发实践

01 产品特性

GD60914是一款高性能非接触式红外温度传感器,采用热电堆探测技术与数字信号处理芯片集成方案,支持医疗级精度与工业级稳定性。出厂前就已经完成了温度采集运算校准,只需连接通讯即可获取到精准的温度值。它的核心优势包括:

非接触测温:可选近、中、远距离

多模式测温:体温模式、物温模式、环境温模式

宽测温范围:-40°C至+600°C

高分辨率:24位ADC,0.1°C温度分辨率

低功耗设计:待机电流<0.08ma

TO-39封装:抗电磁干扰

02 硬件连接配置

03关键代码实现

设备地址:7bit address 0x18 (读地址:0x31 写地址:0x30)

常用读指令:

读0x1A(返回0x55AA),等待0.5秒, 读0x1C,返回体温

读0x1F(返回0x55AA),等待0.5秒, 读0x1C,返回当前物体温度

读0x1E(返回0x55AA),等待0.5秒, 读0x1C,返回当前环境温度

(1)额头温度模式:读0x80(返回0x8080),读0x1A(返回0x55AA),等待0.5秒,再读0x1C ,返回体温

(2)手腕温度模式:读0x81(返回0x8181),读0x1A(返回0x55AA),等待0.5秒,再读0x1C ,返回体温

  备注:温度数据说明:0x016D=365,除以10,表示36.5度

        0xFED4=-300,除以10,表示-30度

工程指令:只供生产用

读指令0x58,等待2秒,读0x1C,校准35度温度(35度黑体)

读指令0x62,等待2秒,读0x1C,校准42度温度(42度黑体)

读指令0x59,等待0.5秒,读0x1C,清除校准数据

示例代码:

/* 宏定义I2C设备地址 */

#define temperature_SLAVEADDR_W  0x30    // 写入地址:0x0011 0000

#define temperature_SLAVEADDR_R  0x31    // 读取地址:0x0011 0001

/* 全局变量声明 */

int16 tem_temperature;  // 有符号16位整型存储温度值

/* 主程序调用示例 */

void main() {

    // 读取0x1F寄存器(设备状态)

    temperature_read(0x1F, &tem_temperature);  // 返回0x55AA表示设备正常

    temperature_i2c_ms(500);                   // 延时500ms

    // 读取0x1C寄存器(温度数据)

    temperature_read(0x1C, &tem_temperature);  // 示例返回0x00F4→24.4℃

}

/* I2C寄存器读取函数实现 */

void temperature_read(uint8 reg, int16 *val) {

    uint8 temp_data_L, temp_data_H;

    uint16 temp_data;

    // I2C通信流程

    temperature_i2c_start();                          // 起始信号

    temperature_SendByte(temperature_SLAVEADDR_W);    // 发送写地址

    if(0 == temperature_ChkAck()) { /* ACK检查 */ }    // 空语句保留结构

    

    temperature_SendByte(reg);                        // 发送寄存器地址

    if(0 == temperature_ChkAck()) { /* ACK检查 */ }    // 空语句保留结构

    

    temperature_i2c_start();                          // 重复起始信号

    temperature_SendByte(temperature_SLAVEADDR_R);    // 发送读地址

    if(0 == temperature_ChkAck()) { /* ACK检查 */ }    // 空语句保留结构

    

    temp_data_L = temperature_ReadByteAck();          // 读取低字节(ACK)

    temp_data_H = temperature_ReadByteNAck();         // 读取高字节(NACK)

    

    temp_data = temp_data_H << 8 | temp_data_L;       // 合并16位数据

    *val = temp_data;                                 // 赋值输出参数

    

    temperature_i2c_stop();                           // 停止信号

}

可向谷德官方获取参考代码与代码移植指南,参考代码可适配市面上90%以上的单片机(某宝搜索GD60914可获样品)。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐