版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PC接口温度传感器LM75A应用案例本实例利用Cortex-M3处理器STM32F10 xxx的PC接II对支持I2-wireICInterfaceSCLGND图9-9STLM75功能框图STLM75引脚功能描述C总线协议的温度传感器进行操作,读取温度值。LM75A设计要求根据本实例的要求,本实例的设计包含硬件电路设计和软件设计,其中硬件电路设计是本例的基础,大致划分如下:(DSTM32F10XXX微处理器与温度传感器C接II电路设计,此部分是该硬件电路设计的关键;微处理器通过I2C接II读/写温度传感器的软件代码设计。LM75A硬件电路设计本实例硕件电路所用的ARMCoitex-M3核心处理
2、器为STM32F103*BH6,I2C数字温度传感器芯片为STLM75,其详细介绍如下文。LM75A主要器件在本章的实例设计中,选择ST公司的STLM75器件,它是一种含9位ADC、温度分辨率高达0.5C的数字温度传感器,测量范圉能够达到-55CM25Co它提供两条线支持I?C总线协议的接II来监测温度,并具备自校准功能。上位机可以随时要求STLM75去读取温度,当温度超过设定的温度时,芯片系统会自动输出一个超温报警信号,可用于上位机的监控操作。主机可以通过程序来控制温度警报器(Tos)及温度。AO、Al、A3这三只引脚可以设定地址。下图是STLM75功能方框图。指針寄存器控制与逻辑比较器OS
3、/INTA1数字温度传感器STLM75的引脚示意如图910所示,相关引脚功能定义如卞表。VDDAoAl2图9-10STLM75芯片引脚示意图表8-20STLM75数字温度传感器引脚功能定义引脚信号名称功能定义1SDA串行数据输入/输出2SCL串行时钟输入3OS/INT超值信号/中断4GND电源地5A2地址设定26A1地址设定17A0地址设定08DD电源(2.7匸5.5V)STLM75寄存器及寄存器位格式STLM75内部有五个寄存器,其中四个寄存器通过命令/指针寄存器进行选择,在STLM75电时该寄存默认为00,即选择温度寄存器(Temperatureregister),这个寄存器中存贮了当前所
4、采样的温度值,如果通过PC接II发出一个读命令,则STLM75会返回该寄存中的温度值,该温度值为一个16位的字。相关寄存器介绍如下。命令/指针寄存器该寄存器为8位只写,主要用于选择温度寄存器、配置寄存器、滞后寄存器、超阀值温度关闭寄存器。相关格式如下表所示。表821命令/指针寄存器格式MSBLSBBit7Bit6Bit5Bit4Bit3Bit2BitlBitO000000PlP0详见指针寄存器位选择表8-22简介表822指针寄存器位选择简介指针值.11名称寄存器描述字位读/写权限上电默认备注PlP000TEMP温度寄存器16只读N/A存贮温度数据00CONF配置寄存器8读/写0010Thys滞
5、后寄存器16读/写4B00默认=75C11Tos超温关闭16读/写5000设定超温关闭默认=80C配置寄存器配置寄存器8位可读/写,是用来存储设备设置的操作模式,比如超阀值温度关闭运行模式,超温极性和超温故障队列等。如下表所示。表8-23配置寄存器格式及位功能定义ByteMSBLSBBit7Bit6Bit5Bit4Bit3Bit2BitlBitOSTLM75保留00FTlFTOPOLMSD默认00000000位功能定义SD关闭控制位0正常工作,T关断模式M:控器模式,0比较器模式中断模式POL:出极性,低有效,T高有效fto:fti:故障队列,在输出更新前,有相同结果的温度-数字转换的个数.0
6、0、表1(上电默认值)01表示2个,10表示4个,11表示6个.位46:设定为0位7:设置为XT,保留温度寄存器温度寄存器是一个由两个字节组成的16位“只读”操作寄存器,当温度一数字转换过程中,温度值存贮于此寄存器,每当温一数转换完成,该寄存器内容将更新。表8-24温度寄存器格式及位功能定义ByteHSByteLSByte位MSBTMSBTLSBLSB151413211109876543210STLM75TD8SignTD7TMSBTD6TD5TD4TD3TD2TD1TD0TLSB0000000位功能定义SB补码符号位2表正温度,表负温度TMSB:温度值最高位TLSB:温度值最低位TD08:温
7、度数据位超阀值温度寄存器(Tos)超温寄存器是由两个字节组成的16位可读/写操作的寄存器,存储了温度报警值的高位。默认为80C。如下表8-25所示。迟滞温度寄存器(Thys)迟滞温度寄存器是由两个字节组成的16位可读/写操作寄存器,存储用户设定的温度报警值低位,默认设置为75匸。超温寄存器及滞后温度寄存器格式如下表所示。表8-25超温寄存器及滞后温度寄存器格式及位功能定义ByteHSByteLSByte位MSBTMSBTLSBLSB151413211109876543210STLM75SBTMSBTDTDTDTDTDTD9BitTLSB0000000位功能定义SB补码符号位2表正温度,表负温度
8、TMSB:温度值最高位TLSB:温度值最低位TD:温度数据位注:该寄存器格式兼容TDS75等同类芯片。在温度寄存器,超阀值寄存器,滞后寄存器中,每单位值代表0.5C。该值均以二进制补码表示,因而读000000000b时相当于OC。STLM75温度数值格式表8-26显示的是外部温度与数字输出数据值之间的关系,温度寄存器,超阀值温度关闭寄存器,滞后寄存器组成的温度相关数据值用补码表示。左边的数据包含了温度极性信息,当为时,表示此时的温度是正温;为T时,表示此时的温度为负温。表8-25温度与数字输出关系表温度数字输出二进制码十六进制码+125C0111110100FA11+2590001100100
9、32h+0.5C000000001OOlhoc000000000000h-0.5X?111111111IFFh-259111001110ICEh-40X?110110000IBOh-55X?110010010192hSTLM75工作模式介绍STLM75所有的传输都在微处理器的控制卞进行,微处理器作为主设备工作并提供给STLM75时钟信号,STLM总是作为从设备身份工作。所有数据传输过程中数据字节都是先传高位。读/写操作由开始状态(START)开始,紧跟着的是设备地址字节和一个或多个数据字节,设备地址字节(如表8-26所示)包括了读/写选择位,每次读/写操作必须由停止状态(STOP)结束。称作确
10、认(ACK)的约定确认了每个字节的接收。表8-26STLM75从地址字节定义ByteMSBLSBBit7Bit6Bit5Bit4Bit3Bit2BitlBitO1001A2AlAOR-W位功能定义位77固定为1001A2A1A0位设定状态必须与STLM75A2A1A0引接输入状态匹配,以便得到ACK信号RW:读/写操作选择位STLM75的FC串行总线数据传输序列图分别如卞所示图9-11所示。I91919IIIMMJ-kLkJ-XImiAJIIJJiLI1111L.i.1LiLi11Vr由(.,.=ji一备开蛤地址字节中?5给垠高仃效数据字节主伴茫产最低有效数据字节主姿严无出覘认出确认确认市主设
11、备给出结束状杰图9-lla肌型的从预置指针位置读出2字节,如温度,超阀值,滞后寄存器一*叮叮/帖g曲jjI。1叮0丨门.丄3口丄由主j一笛开始地址字节LM75给出确认191919XXWHWfWWIWWWWHWMTr=/A,J/Wbfok融鼬蟲材嵋脑册册射曲打/片阚)咖歸忤:(跡y歸重复由!1|I|.1”主设备览址字节片呼给最高有鬆据宇节主讐3嚴低有效数抵宇节圭驚号处斜开始出确认岀确认尢喘认备结束状态图9-lib典型的指针设置后立即读出2字节,如温度,超阀值,滞后寄存器1919114IIMMJ-kJ-kkk1JUJ-kLL-kzl由4.备开始地址字节1-M75董抿皋节备无由主设备給出确认确认出结
12、束状态图9-llc肌型的指针从带电预置指针的配置寄存器读出1字节1从1IIl_lIIIIIIIIIIIIIIIXXI111LXIII11IU1JX-,-1LLkL-LLI.J100/13X从“从只叼0000000/ppJ100/1WDlYAPhZ/旳闵口5灿丫8乂明(0垃对J由押1一备幵始地址了节眾譲刪和眾譲蠶鮭迪址和眾譲&JK?节丄片无由上设条給溜认出结束状态图9-lld典型的指针设置后立即读配置寄存器999999R丽000000D1/D0-nmmwHWIIILLLl/UMMIIII_o0由主1徭开始地址宇节LM75给匕:卜立桔LM75给出确认子出俛认配買宇节IN75给由主设备出确认结朿状态
13、图9-lle写配置寄存器lliIIIIUULLI-LIIIIIIIIIIIIIIIIJUJJJIjXUjJJXtUXKUjI00厂住炉“0)皆D00Q00何X冋(j顽必顾可可冋何何由丄1备开始地址字苗LM75给戶日Q伙LM75给岀确认蹄岀确认最高仃效数据字节n设备錯束状态图9-llf写超阀值寄存器与滞后寄存器I2C接口温度传感器硬件原理图说明微处理器STM32F103BH6与温度传感器STLM75硕件电路原理图分别见下图。C290INTSCLSDA456BBBppp7B23567ccccc17IS6364ddddd1234c.D-D-D-D-D-5075100H吐J*-3V349VSS2VSS
14、JVSS_5VDDA99rTo220RESETXIC2251Hz20pFSWI14IlOSCNOSCOLT4R8NRSTBOOTOVSSA+3V3STM32F103VBII6+3V3ll_RESETOS”104R910K图9-12微处理器STM32F103EH6接II部分原理图spaR1a_q+5V工Qi13SS123LT1Q2BSS123LT1R54.7K:R6:4.7KSDAVDDSCL.A0(DSINTA1GNDA2U1STLM75M2E161y4+5V-图9-13温度传感器STLM75电路部分原理图温度传感器STLM75引脚SDA,OS/INT,SCL定要接上拉电阻,否则将导致电路无法
15、正常工作。LM75A应用程序流程图分析微处理器向从器件发送指令及从器件接收的数据流程分别如图9-14和9-15所示。视始化开趋配It12(接口尊PH7-SUA1,昭SCLptjsusr巨只鬲件応址图914主设备发送程序流程图图915从设备接收程序流程图LM75A应用程序代码设计整个工程文件包含五个文件:cortexm3_macro.s,stin32f1Ox_vector.s是启动代码文件;其它函数包含在niain.c,stm32flOx_it.c,tsensor.c当中。限于篇幅cortexm3_niacro.s?stm32f1Ox_vector.s省略介绍。具体的程斥代码及其说明(见注释语句
16、)如卞。/*寧文件名寧*寧*寧*寧*寧*寧*寧寧*寧*描述:mam.c:主程序*寧*寧*寧*寧*寧*寧*/*头文件/#include”stm32fl0 x_lib.h”#iiicludeEiTorStatusHSEStartUpStatus;/*函数及引用外部函数*/voidRCC_Coiifigiiration(void);voidN7C_Configiiration(void);voidGPIO_Configiuatioii(void);voidUSART_Configuration(void);externvoidI2C_LM75_Imt(void);externu32TempCelsi
17、us_alue;externul6I2C_LM75_Temp_Read(void);externEiTorStatiisI2C_LM75_Statiis(void);externvoidTliermometer_Temperatiu-e(void);intmam(void)ul61=0;#lfdefDEBUGdebug();#endif/*系统时钟配置*/RCC_Configuration();/*中断向量配置*/NlC_Configiuation();/*GPIO配置*/GPIO_Coiifiguration();/*USART1配置*/USART_CoiifigiuationO:I2C_L
18、M75_Init0;/*I2C初始化*/Tliennometer_Teniperatiire();/*温度显示*7while(l)if(USART_GetFlagStatus(USART,USART_IT_RXNE)=SET)i=USART_ReceiveData(USARTl);pnntfC%ch5i&0 xFF);/*打E卩输入字符*/坤*坤*函数名*描述*输入*输出*返回:assert_failed:报告石错:-文件指针-行指针:无:无*/voidasseil_failed(u8*file,u32line)/*当STLM75异常时输出报错信息*/pnntf(nnrWrongparamet
19、ervaluedetectedonrHT);printf(,rfile%srn役file);printf(,rIme%drn笃line);#endif函数名:RCC_Coiifigiuation描述:报告出错输入:配置系统时钟输出:无返回:无*寧*/voidRCC_Coiifigiiration(void)此处省略,请读者参考其它章节/*使能USART1与GPIOA*/RCC_APB2PenphClockCmd(RCC_APB2Penph_USARTl|RCC_APB2Peiiph_GPIOA,ENABLE);*函数名:N7C_Configiu-ation描述:报告占错输入:配置向量地址输出:
20、无返回:无*voidNTC_Coiifiguration(void)此处省略,请读者参考其它章节/*函数名:GPIO_Configiuation描述:GPIO配置输入:无输出:无返回:无*voidGPIO_Configuratioii(void)此处省略,请读者参考其它章节/*函数名:USART_Configiiration描述:串口配置输入:无输出:无返回:无*voidUSART_Configuration(void)*/*/USART_IiutTypeDefUSART_ImtStructuie;此处省略,请读者参考其它章节USART_Imt(USARTl,&USARTJmtStructur
21、e);/*打开USART1*/USART_Cmd(USARTl?ENABLE);*函数名:mtc*描述:串口输出函数TOC o 1-5 h z*输入:无*输出:无*返回:无*intfyutc(intch,FILE*f)USART_SendData(USARTl?(u8)ch);/*循坏只到传送结束*/while(USART_GetFlagStatus(USARTl,USART_FLAG_TC)=RESET)returnch;Tsensor.c文件名:tsensor.c*功能描述:温度传感器STLM75读/写程序-该程序包括I2C总线协议及读写STLM75所有的功能函数及摄氏度华氏度温度显示/*
22、头文件*/#include吐sensor.1T#includenstm32fl0 x_i2c.hH#includeHstin32flOx_inap.hn#includeHstin32flOx_gpio.hn#includenstm32flOx_rcc.hH#includenstdio.hH样defineLM75_Addr样defineLM75_SD_Set#defineLM75_SD_Reset0 x90/*定义LM75地址*/0 x01/*设置STLM75的配置寄存器SD位*/OxFE/*STLM75的配置寄存器SD位复位*/*变量定义*/staticu8Ten)Celsius_Displa
23、y=H+abc.defC用于温度值显示*/staticu8TempFahrenheit_Display=”+abc.defFn;u32Ten甲.Decimal=0,TempCelsiusJValue=0,Temp_Value_Fahrenheit=0;,*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*)!(寧*寧*寧*寧函数名:I2C_LM75_Iiut描述:I2C1初始化-输入:无输出:无返回:无*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*void12C_LM75_Imt(void)GPIO_IiutTypeDefGPIO_ImtStructuie;I2C_I
24、iiitTypeDefI2C_ImtStructure;/*GPIOB外设时钟使能*/RCC_APB2PenphClockCmd(RCC_APB2Penph_AFIO|RCC_APB2Penph_GPIOB:ENABLE);/*I2C1外设时钟使能*/RCC_APB1PenphClockCmd(RCC_APB1Penph_I2C1,ENABLE);/*配置SDASCL引脚*/GPIOIiutSti-uctiire.GPIOPin=GPIOPin6|GPIOPin7;/*PB7-SDA,PB6-SCL*/GPIO_ImtStructure.GPIO_Speed=GPIO_Speed_50MHz;
25、/*50NIHz*/GPIO_IiutSti-uctiire.GPIO_Mode=GPIO_Mode_AF_OD;/*开漏复用功能*/GPIO_Imt(GPIOB、&GPIO_InitStructure);/*配置PB5输入上拉用于连接STLM75的OS/INT引脚*/GPIO_IiiitSti-uctiire.GPIO_Pm=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_lOMHz;GPIO_IiiitSti-uctiire.GPIO_Mode=GPIO_Mode_IPU;GPIO_Imt(GPIOB、&GPIO_InitStruct
26、ure);I2C_DeInit(I2C1);/*先禁止7/*I2C1初始化*/I2C_IiiitSti-uctiire.I2C_Mode=I2C_ModeJ2C;/*设置I2C模式1*/I2C_ImtStructuie.I2C_DutyCycle=I2C_DutyCycle_2;/*I2C快速模式Tlow/Thigh=2*/I2C_ImtStructure.I2C_OwnAddressl=OxOO;/*自身地址*/I2C_ImtStructuie.I2C_Ack=I2C_Ack_Enable;/*使能应答(ACK)*/I2C_InitStiiicture.I2C_AckiiowledgedAd
27、dress=I2C_AcknowledgedAddi-ess_7bit;/*应答7位地址*/I2C_IiutSti-ucture.I2C_ClockSpeed=200000*200K速度*/I2C_Imt(I2Cl,&I2C_ImtStructure);/*I2C1使能*/I2C_Cmd(I2Cl,ENABLE);严*寧*函数名:I2C_LM75_Status*描述:确认STLM75状态TOC o 1-5 h z*输入:无*输出:无*返回:无*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*EnorStatusI2C_LM75_Status(void)u32I2C_Ti
28、meOut=0 x3FFFF;/*清除I2C1AF位*/I2C_ClearFlag(I2Cl,I2C_FLAG_AF);/*使能ACK配置*/I2C_AcknowledgeCoiifig(I2C1,ENABLE);/*发送I2C1起始条件状态位*/I2CGeiierateSTART(I2Cl,ENABLE);/*测试I2C1EV5事件并清除*/while(!I2C_CheckEveut(I2Cl,I2C_E王NT_MASTER_MODE_SELECT)/*EV5爭件*/*发送STLM75从器件地址字节(写)*/I2C_Send7bitAddiess(I2Cl,LM75_Addi;I2C_Du-
29、ection_Transinitter);while(!I2C_CheckEveiit(I2C1,I2C_E王NT_MASTER_TRANSMITTER_MODE_SELECTED)&I2C_TimeOut)/*EV6*/I2C_TmieOut;if(I2C_GetFlagStatiis(I2C1,12C_FLAG_AF)!=0 x0)returnERROR:elseretiimSUCCESS;J*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*函数名:I2C_LM75_Reg_Read*描述:读STLM75寄存器*输入:读从器件如下寄存器LM75_TEMP_Reg:温度寄存器-LM7
30、5_TOS_Reg:超阀值关断寄存器-LM75_THYS_Reg滞后寄存器*输出:无*返回:无*ul6I2C_LM75_Reg_Read(u8RegName)u32RegValue=0;/*使能I2C1应答/I2C_AcknowledgeCoiifig(I2C1,ENABLE);/*发送I2C1起始条件(写)*/I2C_GenerateSTART(I2C1,ENABLE);/*发送I2C1起始条件(写)*/I2C_GenerateSTART(I2C1,ENABLE);/*测试I2C1EV5事件并清除/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MOD
31、E_SELECT)/*EV5*/*发送STLM75地址(写)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ection_Transinitter);/*测试I2C1EV6事件并清除/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*发送指针寄存器数据(写)*/I2C_SendData(I2C1,RegNanie);/*检测I2C1EV8事件并清除/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_BYTE_T
32、RANSMITTED)/*EV8/*一接收部分*/*发送重新开始起始位条件*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从地址(读)/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Diiection_Receiver);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E卫NT_MASTER_RECEIVER_MODE_SELECTE
33、D)/*EV6*/*检测EV7事件并清除*/while(!I2C_CheckEveut(I2Cl,I2C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存储I2C1接收的数据*/RegAalue=(ul6)(I2C_ReceiveData(I2C1)8);/*最后一位接收完成后要关闭应答*/I2C_AcknowledgeCoiifig(I2C1,DISABLE);/*发送I2C1停止条件位*/I2C_GenerateSTOP(I2C1,ENABLE);/*检测EV7事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BY
34、TE_RECEITD)/*EV7*/*存储I2C1接收的数据*/RegValue|=I2C_ReceiveData(I2C1);/*返回寄存器值*/return(RegValue7);,*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*函数名:I2C_LM75_Reg_Wnte*描述:读STLM75寄存器*输入:写从器件如下寄存器LM75_TEMP_Reg:温度寄存器-LM75_TOS_Reg:超阀值关断寄存器-LM75_THYS_Reg滞后寄存器*输出:无*返回:无*voidI2C_LM75_Reg_Wiite(u8RegName,ul6Regalue)/*左移寄存器值*/RegVa
35、lue=Regalue7;/*传送过程*/*发送I2C1起始状态位*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从地址(写)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ection_Transinitter);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_
36、SELECTED)/*EV6*/*发送指针寄存器数值*/I2C_SendData(I2C1,RegNanie);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*发送I2C1数据*/I2C_SendData(I2Cl,(u8)(RegValue8);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*发送I2C1数据*/I2C_SendData(I2C1,(u8)Re
37、galue);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*发送I2C1停止状态位*/I2C_GenerateSTOP(I2C1,ENABLE);J*寧*寧*寧*函数名:I2C_LM75_Temp_Read*描述:读STLM75寄存器*输入:读取STLM75温度寄存器值2字节*输出:无*返回:无*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*)(C*寧*寧*寧*寧*寧*寧*ul6I2C_LM75_Temp_Read(void)u32RegValue=0;/*使能应答*/I2
38、C_AcknowledgeCoiifig(I2C1,ENABLE);/*传送过程*/*发送I2C1起始状态位*/I2C_GeiierateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEveut(I2C1,12C_E王NT_MASTER_MODE_SELECT)/*EV5*/*发送STLM75从地址(写)*/I2C_Send7bitAddiess(I2Cl,LM75_Addi;I2C_Du-ection_Transinitter);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E王NT_MASTER
39、_TRANSMITTER_MODE_SELECTED)严EV6*/*发送温度寄存器数据*/I2C_SendDataQ2C1丄卜I75_TEMP_Reg);/*检测EV8事件并清除*/while(!I2C_CheckEveut(I2Cl,I2C_E王NT_MASTER_BYTE_TRANSMITTED)/*EV8*/*发送启动起始状态位*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从地址(读)/I2C_S
40、end7bitAddress(I2C1,LM75_Addr,12C_Diiection_Receiver);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E卫NT_MASTER_RECEIVER_MODE_SELECTED)/*EV6*/*检测EV7事件并清除*/while(!I2C_CheckEvent(I2C1,12C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存储I2C1接收的数据*/RegValue=I2C_ReceiveData(I2Cl)S;/*关闭应答*/I2C_AcknowledgeCoiifig(I2C1,
41、DISABLE);/*发送停止状态位*/I2C_GenerateSTOP(I2C1,ENABLE);/*检测EV7事件并清除*/while(!I2C_CheckEvent(I2C1,12C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存储I2C1接收的数据*/RegValue|=I2C_ReceiveData(I2C1);/*返回值*/return(RegAalue5);J*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*函数名:I2C_LM75_CoiifReg_Rea(i*描述:读STLM75配置寄希器TOC o 1-5 h z*输入:无*输出:无*
42、返回:无*u8I2C_LM75_CoiifReg_Read(void)u32RegValue=0;/*一传送过程*/*发送I2C1起始状态位*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从设备地址(写)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Diiection_Transmitter);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2
43、C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*发送配置寄存器指针数据*/I2C_SendData(I2C1,LM75_CONF_Reg);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*-接收过程一*/*发送启动起始状态位*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SE
44、LECT)/*EV5*/*发送STLM75从设备地址(读)/I2C_Send7bitAddiess(I2Cl,LM75_Addi;I2C_Duection_Receiver);/*检测EV6事件并清除*/while(!I2C_CheckEveut(I2C1,I2C_E王NT_MASTER_RECEIVER_MODE_SELECTED)/*EV6*/*关闭应答*/I2C_AcknowledgeCoiifig(I2C1,DISABLE);/*发送I2C1停止状态位*/I2C_GeiierateSTOP(I2C1,ENABLE);/*检测EV7事件并清除*/while(!I2C_CheckEveut
45、(I2Cl,I2C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存储I2C1接收的数据*/RegValue=I2C_ReceiveData(I2Cl);/*返回寄存器值*/return(RegValue);函数名:I2CLM75ConfRegWnte描述:写STLM75配置寄存器输入输出返回无无无*voidI2C_LM75_ConfReg_Write(u8Regalue)/*一传送过程*/*发送I2C1起始状态位*/I2CGenerateSTART(I2Cl,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EAT
46、NT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从设备地址(写)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Diiection_Transmitter);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*发送配置寄存器指针数据*/I2C_SendData(I2C1,LM75_CONF_Reg);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_
47、NIASTER_BYTE_TRANSMITTED)/*EV8/*发送I2C1数据*/I2C_SendData(I2Cl,RegValue);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*发送I2C1停止条件位*/I2C_GenemteSTOP(I2Cl,ENABLE);/*寧*寧*寧*寧寧*寧*寧*寧*寧寧*寧*函数名:I2C_LM75_ShutDovn描述:打开或关断STLM75输入:无输出:无返回:无*寧*寧*寧寧*寧*寧*voidI2C_LM75_ShutDown(Fu
48、nctionalStateNewState)u32RegValue=0;/*TransmissionPhase*/*发送I2C1起始状态位*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从设备地址(写)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ectioii_Transinitter);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I
49、2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*发送配置寄存器指针数据*/I2C_SendData(I2C1,LM75_CONF_Reg);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_ETNT_NIASTER_BYTE_TRANSMITTED)/*EV8*/*-接收过程-*/*发送开始起始位条件*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MODE_SE
50、LECT)/*EV5*/*发送STLM75从设备地址(读)*/I2C_Send7bitAddiess(I2Cl,LM75_Addi;12C_Duection_Receiver);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E王NT_MASTER_RECEIVER_MODE_SELECTED)/*EV6*/*关闭应答*/I2C_AcknowledgeCoiifig(I2C1,DISABLE);/*发送I2C1停止条件位*/I2C_GenerateSTOP(I2C1,ENABLE);/*检测EV7事件并清除*/while(!I2C_CheckEvent
51、(I2C1,12C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存储I2C1接收的数据*/RegValue=I2C_ReceiveData(I2Cl);/*一传送过程*/*发送I2C1起始状态位*/I2C_GenerateSTART(I2C1,ENABLE);/*检测EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*发送STLM75从设备地址(写)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ection_Transinitter);/*检测EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*E6*/*发送配置寄存器指针数据*/I2C_SendDataa2Cl,LM75_CONF_Reg);/*检测EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIAS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 量子精密测量设备运维技师考试试卷及答案
- 2025年南平延平区区属国有企业公开招聘笔试历年参考题库附带答案详解
- 2025年下半年山东高速青岛产业投资有限公司招聘5人笔试历年参考题库附带答案详解
- 2025山煤国际井下岗位高校毕业生招聘300人(山西)笔试历年参考题库附带答案详解
- 2025山东枣庄东林农文化产业发展有限公司招聘68人笔试历年参考题库附带答案详解
- 2025太平洋产险福建福清支公司招聘3人笔试历年参考题库附带答案详解
- 2025国家能源投资集团内蒙古神东天隆集团股份有限公司招聘28人笔试历年参考题库附带答案详解
- 2025四川迪佳通电子有限公司招聘采购管理岗等岗位14人笔试历年参考题库附带答案详解
- 2025四川九洲电器集团有限责任公司招聘天线工程师(校招)等岗位15人笔试历年参考题库附带答案详解
- 2025包头市热力(集团)有限责任公司招聘工作人员7人笔试历年参考题库附带答案详解
- 医药生物行业2026年市场前景及投资研究报告:创新药新技术看多中国创新出海
- 4.5-北师数学二下第四单元《哪座山更高》课件
- 2026年数字技术在环境监测中的应用
- 小学科学新教科版三年级下册2.1.不同种类的动物 练习题(附参考答案和解析)2026春
- 福建省厦门外国语中学2026届高一下数学期末综合测试模拟试题含解析
- 2026中国林业集团有限公司校园招聘115人笔试参考题库附带答案详解
- 2026年山东省消防设施操作员职业技能鉴定及答案
- DB42T2488-2025微型钢管桩应用技术规程
- 2026年游戏前端开发合同协议
- phc管桩施工培训课件
- 2025年威海市荣成市辅警(协警)招聘考试题库附答案解析
评论
0/150
提交评论