在线时间828 小时
UID3079326
注册时间2015-2-11
NXP金币12
TA的每日心情 | 郁闷 2022-4-4 11:28 |
---|
签到天数: 351 天 [LV.8]以坛为家I
金牌会员
- 积分
- 5740
- 最后登录
- 2022-4-4
|
概述 | LM75A是一款内置带隙温度传感器和∑-Δ模数转换功能的温度数字转换器,它也是温度检测器,可提供过热输出功能。LM75A包含多个数据寄存器:配置寄存器(Conf)用来存储器件的某些设置,如器件的工作模式、OS工作模式、OS极性和OS错误队列等;温度寄存器(Temp)用来存储读取的数字温度;设定点寄存器(Tos & Thyst)用来存储可编程的过热关断和滞后限制,器件通过两线的串行I2C总线接口与控制器通信。LM75A还包含一个开漏输出(OS)管脚,当温度超过编程限制的值时该输出有效。LM75A有3个可选的逻辑地址管脚,使得同一总线上可同时连接8个器件而不发生地址冲突。
LM75A可配置成不同的工作模式。它可设置成在正常工作模式下周期性地对环境温度进行监控,或进入关断模式来将器件功耗降至最低。OS输出有2种可选的工作模式:OS比较器模式和OS中断模式。OS输出可选择高电平或低电平有效。错误队列和设定点限制可编程,可以激活OS输出。
温度寄存器通常存放着一个11位的二进制数的补码,用来实现0.125℃的精度,在需要精确地测量温度偏移或超出限制范围的应用中非常有用。当LM75A在转换过程中不产生中断(I2C总线部分与∑-Δ转换部分完全独立)或LM75A不断被访问时,器件将一直更新温度寄存器中的数据。
正常工作模式下,当器件上电时,OS工作在比较器模式,温度阈值为80℃,滞后75℃,这时,LM75A就可用作独立的温度控制器,预定义温度设定点。
| |
特点 | 器件可以完全取代工业标准的LM75,并提供了良好的温度精度(0.125℃),单个器件的电源范围可超出2.8V~5.5V的范围
- 具有I2C总线接口,同一总线上可连接多达8个器件
- 电源电压范围:2.8V~5.5V
- 环境温度范围:Tamb=-55℃~+125℃
- 提供0.125℃的精度的11位ADC
- 温度精度:
- -25℃~+100℃时为±2℃
- -55℃~+125℃时为±3℃
- 可编程温度阈值和滞后设定点
- 为了减低功耗,关断模式下消耗的电流仅为3.5μA
- 上电时器件可用作一个独立的温度控制器
- ESD保护:
- JESD22-A114为2000V HBM
- JESD22-A115为200V和JESD22-C101为1000V CDM
- 超过100mA的JESDEC标准JESD78要进行栓锁测试(Latch-up testing
|
上表中的11位2进制以补码形式存储。
1. bit D10 = 0, 温度是正的,温度值(°C) = +(Temp data) × 0.125 °C.
2. bit D10 = 1, 温度是负的,温度值[size=13.3333px](°C) = -(0x800-Temp data) × 0.125 °C.
- #include <stdio.h>
- #include <string.h>
- #include "gpio.h"
- #include "common.h"
- #include "i2c.h"
- #include "uart.h"
- float L75_Temp;
- void LM75A_Temp(void)
- {
-
- uint8_t Temp_Data[2]={0};
- uint16_t Temp;
- I2C_BurstRead(HW_I2C0, 0x48, 0x00, 0, Temp_Data, 2);
- Temp=(uint16_t)Temp_Data[0];
- Temp=(Temp<<8|Temp_Data[1])>>5;
- if(!(Temp_Data[0]&0x80))
- {
- L75_Temp=Temp*0.125;
- printf("当前温度:+%.3f度\r\n",L75_Temp);
- }
- else
- {
- L75_Temp=(0x800-Temp)*0.125;
- printf("当前温度:-%.3f度\r\n",L75_Temp);
- }
- }
- int main(void)
- {
-
- /* 开机延时 */
- DelayInit();
- /* UART 初始化 */
- GPIO_QuickInit(HW_GPIOB, 6, kGPIO_Mode_OPP);
- UART_QuickInit(UART0_RX_B2_TX_B1, 9600);
- UART_ITConfig(HW_UART0, kUART_IT_Rx, true);
- I2C_QuickInit(I2C0_SCL_PB03_SDA_PB04, 576000);
- printf("LM75A温度传感器\r\n");
- while(1)
- {
- LM75A_Temp();
- GPIO_ToggleBit(HW_GPIOB, 6);
- DelayMs(1000);
- }
-
- }
复制代码
|
评分
-
查看全部评分
|