您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > LM75数字温度传感器应用
IIII2222CCCC接口温度传感器接口温度传感器接口温度传感器接口温度传感器LM75ALM75ALM75ALM75A应用案例应用案例应用案例应用案例本实例利用Cortex-M3处理器STM32F10xxx的I2C接口对支持I2C总线协议的温度传感器进行操作,读取温度值。LM75A设计要求根据本实例的要求,本实例的设计包含硬件电路设计和软件设计,其中硬件电路设计是本例的基础,大致划分如下:(1)STM32F10xxx微处理器与温度传感器I2C接口电路设计,此部分是该硬件电路设计的关键;(2)微处理器通过I2C接口读/写温度传感器的软件代码设计。LM75A硬件电路设计本实例硬件电路所用的ARMCortex-M3核心处理器为STM32F103VBH6,I2C数字温度传感器芯片为STLM75,其详细介绍如下文。LM75ALM75ALM75ALM75A主要器件在本章的实例设计中,选择ST公司的STLM75器件,它是一种含9位ADC、温度分辨率高达0.5℃的数字温度传感器,测量范围能够达到-55℃~125℃。它提供两条线支持I2C总线协议的接口来监测温度,并具备自校准功能。上位机可以随时要求STLM75去读取温度,当温度超过设定的温度时,芯片系统会自动输出一个超温报警信号,可用于上位机的监控操作。主机可以通过程序来控制温度警报器(TOS)及温度。A0、A1、A3这三只引脚可以设定地址。下图是STLM75功能方框图。图9-9STLM75功能框图STLM75STLM75STLM75STLM75引脚功能描述数字温度传感器STLM75的引脚示意如图9-10所示,相关引脚功能定义如下表。图9-10STLM75芯片引脚示意图表8-20STLM75数字温度传感器引脚功能定义STLM75STLM75STLM75STLM75寄存器及寄存器位格式STLM75内部有五个寄存器,其中四个寄存器通过命令/指针寄存器进行选择,在STLM75上电时该寄存默认为00,即选择温度寄存器(Temperatureregister),这个寄存器中存贮了当前所采样的温度值,如果通过I2C接口发出一个读命令,则STLM75会返回该寄存中的温度值,该温度值为一个16位的字。相关寄存器介绍如下。(1)命令/指针寄存器该寄存器为8位只写,主要用于选择温度寄存器、配置寄存器、滞后寄存器、超阀值温度关闭寄存器。相关格式如下表所示。表8-21命令/指针寄存器格式MSBLSBBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0000000P1P0详见指针寄存器位选择表8-22简介表8-22指针寄存器位选择简介指针值选中名称寄存器描述字位读/写权限上电默认备注P1P000TEMP温度寄存器16只读N/A存贮温度数据00CONF配置寄存器8读/写00引脚信号名称功能定义1SDA串行数据输入/输出2SCL串行时钟输入3OS/INT超值信号/中断4GND电源地5A2地址设定26A1地址设定17A0地址设定08VDD电源(2.7V~5.5V)10THYS滞后寄存器16读/写4B00默认=75℃11TOS超温关闭16读/写5000设定超温关闭默认=80℃(2)配置寄存器配置寄存器8位可读/写,是用来存储设备设置的操作模式,比如超阀值温度关闭运行模式,超温极性和超温故障队列等。如下表所示。表8-23配置寄存器格式及位功能定义ByteMSBLSBBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0STLM75保留00FT1FT0POLMSD默认00000000位功能定义SD:关闭控制位,’0’正常工作,’1’关断模式M:控器模式,’0’比较器模式,’1’中断模式POL:出极性,’0’低有效,’1’高有效FT0:FT1:故障队列,在输出更新前,有相同结果的温度-数字转换的个数.’00’表1(上电默认值),’01’表示2个,’10’表示4个,’11’表示6个.位4~6:设定为’0位7:设置为’0’,保留(3)温度寄存器温度寄存器是一个由两个字节组成的16位“只读”操作寄存器,当温度—数字转换过程中,温度值存贮于此寄存器,每当温—数转换完成,该寄存器内容将更新。表8-24温度寄存器格式及位功能定义ByteHSByteLSByte位MSBTMSBTLSBLSB151413211109876543210STLM75TD8SignTD7TMSBTD6TD5TD4TD3TD2TD1TD0TLSB0000000位功能定义SB:补码符号位,’0’表正温度,’1’表负温度TMSB:温度值最高位TLSB:温度值最低位TD0~8:温度数据位(4)超阀值温度寄存器(TOS)超温寄存器是由两个字节组成的16位可读/写操作的寄存器,存储了温度报警值的高位。默认为80℃。如下表8-25所示。(5)迟滞温度寄存器(THYS)迟滞温度寄存器是由两个字节组成的16位可读/写操作寄存器,存储用户设定的温度报警值低位,默认设置为75℃。超温寄存器及滞后温度寄存器格式如下表所示。表8-25超温寄存器及滞后温度寄存器格式及位功能定义ByteHSByteLSByte位MSBTMSBTLSBLSB151413211109876543210STLM75SBTMSBTDTDTDTDTDTD9BitTLSB0000000位功能定义SB:补码符号位,’0’表正温度,’1’表负温度TMSB:温度值最高位TLSB:温度值最低位TD:温度数据位注:该寄存器格式兼容于DS75等同类芯片。在温度寄存器,超阀值寄存器,滞后寄存器中,每单位值代表0.5℃。该值均以二进制补码表示,因而读000000000b时相当于0℃。STLM75STLM75STLM75STLM75温度数值格式表8-26显示的是外部温度与数字输出数据值之间的关系,温度寄存器,超阀值温度关闭寄存器,滞后寄存器组成的温度相关数据值用补码表示。左边的数据包含了温度极性信息,当为’0’时,表示此时的温度是正温;为’1’时,表示此时的温度为负温。表8-25温度与数字输出关系表温度数字输出二进制码十六进制码+125℃0111110100FAh+25℃000110010032h+0.5℃000000001001h0℃000000000000h-0.5℃1111111111FFh-25℃1110011101CEh-40℃1101100001B0h-55℃110010010192hSTLM75STLM75STLM75STLM75工作模式介绍STLM75所有的传输都在微处理器的控制下进行,微处理器作为主设备工作并提供给STLM75时钟信号,STLM总是作为从设备身份工作。所有数据传输过程中数据字节都是先传高位。读/写操作由开始状态(START)开始,紧跟着的是设备地址字节和一个或多个数据字节,设备地址字节(如表8-26所示)包括了读/写选择位,每次读/写操作必须由停止状态(STOP)结束。称作确认(ACK)的约定确认了每个字节的接收。表8-26STLM75从地址字节定义ByteMSBLSBBit7Bit6Bit5Bit4Bit3Bit2Bit1Bit01001A2A1A0R/W位功能定义位7~4固定为1001A2,A1,A0位设定状态必须与STLM75A2,A1,A0引接输入状态匹配,以便得到ACK信号R/W:读/写操作选择位STLM75的I2C串行总线数据传输序列图分别如下所示图9-11所示。图9-11a典型的从预置指针位置读出2字节,如温度,超阀值,滞后寄存器图9-11b典型的指针设置后立即读出2字节,如温度,超阀值,滞后寄存器图9-11c典型的指针从带电预置指针的配置寄存器读出1字节图9-11d典型的指针设置后立即读配置寄存器图9-11e写配置寄存器图9-11f写超阀值寄存器与滞后寄存器I2C接口温度传感器硬件原理图说明微处理器STM32F103VBH6与温度传感器STLM75硬件电路原理图分别见下图。图9-12微处理器STM32F103VBH6接口部分原理图图9-13温度传感器STLM75电路部分原理图温度传感器STLM75引脚SDA,OS/INT,SCL一定要接上拉电阻,否则将导致电路无法正常工作。LM75A应用程序流程图分析微处理器向从器件发送指令及从器件接收的数据流程分别如图9-14和9-15所示。图9-14主设备发送程序流程图图9-15从设备接收程序流程图LM75A应用程序代码设计整个工程文件包含五个文件:cortexm3_macro.s,stm32f10x_vector.s是启动代码文件;其它函数包含在main.c,stm32f10x_it.c,tsensor.c当中。限于篇幅cortexm3_macro.s,stm32f10x_vector.s省略介绍。具体的程序代码及其说明(见注释语句)如下。/*******************************************************************************文件名:main.c*描述:主程序******************************************************************************//*头文件------------------------------------------------------------------*/#includestm32f10x_lib.h#includestdio.hErrorStatusHSEStartUpStatus;/*函数及引用外部函数-----------------------------------------------*/voidRCC_Configuration(void);voidNVIC_Configuration(void);voidGPIO_Configuration(void);voidUSART_Configuration(void);externvoidI2C_LM75_Init(void);externu32TempCelsius_Value;externu16I2C_LM75_Temp_Read(void);externErrorStatusI2C_LM75_Status(void);externvoidThermometer_Temperature(void);intmain(void){u16i=0;#ifdefDEBUGdebug();#endif/*系统时钟配置*/RCC_Configuration();/*中断向量配置*/NVIC_Configuration();/*GPIO配置*/GPIO_Configuration();/*USART1配置*/USART_Configuration();I2C_LM75_Init();/*I2C初始化*/Thermometer_Temperature();/*温度显示*/while(1){if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET){i=USART_ReceiveData(USART1);printf(%c,i&0xFF);/*打印输入字符*/}}}#ifdefDEBUG/********************************************************************************函数名:assert_failed*描述:报告出错*输入:-文件指针*-行指针*输出:无*返回:无******************************************************************************/voidassert_failed(u8*file,u32line){/*当STLM75异常时输出报错信息*/printf(\n\rWrongparametervaluedetectedon\r\n);printf(file%s\r\n,file);print
本文标题:LM75数字温度传感器应用
链接地址:https://www.777doc.com/doc-5424479 .html