EMC1402 温度传感器的配置

11 篇文章 0 订阅
1 篇文章 0 订阅

EMC1402 温度传感器的配置
这里介绍一下 EMC1402 温度传感器的配置方法:单片机用的是STM32F103
1.首先简单的介绍一下这款温度传感器的硬件连接,如下图所示:
在这里插入图片描述该 EMC1402 不仅可以感应自身的周围的温度,还可以扩展通过 DP、DN和外部CPU连接,测量外部的CPU温度。

  1. EMC1402 有两种温度范围 ,一种是标准的0 - 127.875,另一种是扩展的温度范围:-64 - + 191.875. 通过配置寄存器的 B2 进行配置,如下图所示:
    在这里插入图片描述3. EMC1402 的温度值,存储在温度数据寄存器里,高位存储温度值的整数,低位存储温度值的小数。 地址: 00h 和 29h 存储的是 EMC1402 的内部温度值,00h 存储温度值的整数, 29h 存储温度值的小数。 地址: 01h 和 10h 存储的是和 EMC1402连接 的外部CPU的温度值,01h 存储温度值的整数, 10h 存储温度值的小数。如下图所示:在这里插入图片描述4. EMC1402 的温度值的存储格式,计算方式如下:
    1)标准格式:存储的是实际温度。
    温度值 = 整数 + 分数 >> 5 * 0.125
    2)扩展格式:存储的温度
    if(Integer_Date < 64)
    {
    Temperature_Date = -(64 - Integer_Date + ((Fractional_Date >>5) * 0.125));
    }
    else
    {
    Temperature_Date = (float)Integer_Date - 64 + ((Fractional_Date >>5) * 0.125);
    }
    如图所示:
    在这里插入图片描述

配置为标准的温度模式,代码的配置如下:
/*


  • 函 数 名: EMC1402_InitSet(void)
  • 功能说明: 设置 EMC1402 温度传感器的温度范围:0°C - 127.875°C
  • 形 参:无
  • 返 回 值: 无

*/
void EMC1402_InitSet(void)
{
uint8_t EMC1402_Config_Status = 0;
IIC_Init();
iic_write(IIC_ADDRESS,0x03,0x00);
EMC1402_Config_Status = iic_read(IIC_ADDRESS,0x03);
EMC1402_Config_Status &= 0xFB;
iic_write(IIC_ADDRESS,0x03,EMC1402_Config_Status);
}

/*


  • 函 数 名: Internal_Temperature(void)
  • 功能说明: 获取 EMC1402 内部温度传感器的温度(温度范围:0°C - 127.875°C )
  • 形 参:无
  • 返 回 值: 温度值

/
float Internal_Temperature(void)
{
uint8_t Integer_Date = 0;
uint8_t Fractional_Date = 0;
float Temperature_Date = 0;
Integer_Date = iic_read(IIC_ADDRESS,0x00);
Fractional_Date = iic_read(IIC_ADDRESS,0x29);
Temperature_Date = (float)Integer_Date + ((Fractional_Date >>5) * 0.125);
return Temperature_Date;
}
配置为扩展的温度模式,代码的配置如下:
/


  • 函 数 名: EMC1402_InitExternSet(void)
  • 功能说明: 设置 EMC1402 温度传感器的温度范围:-64°C - +191.875°C
  • 形 参:无
  • 返 回 值: 无

*/
void EMC1402_InitExternSet(void)
{
uint8_t EMC1402_Config_Status = 0;
IIC_Init();
iic_write(IIC_ADDRESS,0x03,0x00);
EMC1402_Config_Status = iic_read(IIC_ADDRESS,0x03);
EMC1402_Config_Status |= 0x04;
iic_write(IIC_ADDRESS,0x03,EMC1402_Config_Status);
}

/*


  • 函 数 名: Internal_TemperatureExtern(void)
  • 功能说明: 获取 EMC1402 内部温度传感器的温度(温度范围:-64°C - +191.875°C )
  • 形 参:无
  • 返 回 值: 温度值

*/
float Internal_TemperatureExtern(void)
{
uint8_t Integer_Date = 0;
uint8_t Fractional_Date = 0;
float Temperature_Date = 0;
Integer_Date = iic_read(IIC_ADDRESS,0x00);
Fractional_Date = iic_read(IIC_ADDRESS,0x29);
if(Integer_Date < 64)
{
Temperature_Date = -(64 - Integer_Date + ((Fractional_Date >>5) * 0.125));
}
else
{
Temperature_Date = (float)Integer_Date - 64 + ((Fractional_Date >>5) * 0.125);
}

return Temperature_Date;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值