




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、PC接口溫度傳感器LM75A應(yīng)用案例本實例利用Cortex-M3處理器STM32F10 xxx的PC接II對支持I2-wireICInterfaceSCLGND圖9-9STLM75功能框圖STLM75引腳功能描述C總線協(xié)議的溫度傳感器進行操作,讀取溫度值。LM75A設(shè)計要求根據(jù)本實例的要求,本實例的設(shè)計包含硬件電路設(shè)計和軟件設(shè)計,其中硬件電路設(shè)計是本例的基礎(chǔ),大致劃分如下:(DSTM32F10XXX微處理器與溫度傳感器C接II電路設(shè)計,此部分是該硬件電路設(shè)計的關(guān)鍵;微處理器通過I2C接II讀/寫溫度傳感器的軟件代碼設(shè)計。LM75A硬件電路設(shè)計本實例碩件電路所用的ARMCoitex-M3核心處理
2、器為STM32F103*BH6,I2C數(shù)字溫度傳感器芯片為STLM75,其詳細介紹如下文。LM75A主要器件在本章的實例設(shè)計中,選擇ST公司的STLM75器件,它是一種含9位ADC、溫度分辨率高達0.5C的數(shù)字溫度傳感器,測量范圉能夠達到-55CM25Co它提供兩條線支持I?C總線協(xié)議的接II來監(jiān)測溫度,并具備自校準功能。上位機可以隨時要求STLM75去讀取溫度,當溫度超過設(shè)定的溫度時,芯片系統(tǒng)會自動輸出一個超溫報警信號,可用于上位機的監(jiān)控操作。主機可以通過程序來控制溫度警報器(Tos)及溫度。AO、Al、A3這三只引腳可以設(shè)定地址。下圖是STLM75功能方框圖。指針寄存器控制與邏輯比較器OS
3、/INTA1數(shù)字溫度傳感器STLM75的引腳示意如圖910所示,相關(guān)引腳功能定義如卞表。VDDAoAl2圖9-10STLM75芯片引腳示意圖表8-20STLM75數(shù)字溫度傳感器引腳功能定義引腳信號名稱功能定義1SDA串行數(shù)據(jù)輸入/輸出2SCL串行時鐘輸入3OS/INT超值信號/中斷4GND電源地5A2地址設(shè)定26A1地址設(shè)定17A0地址設(shè)定08DD電源(2.7匸5.5V)STLM75寄存器及寄存器位格式STLM75內(nèi)部有五個寄存器,其中四個寄存器通過命令/指針寄存器進行選擇,在STLM75電時該寄存默認為00,即選擇溫度寄存器(Temperatureregister),這個寄存器中存貯了當前所
4、采樣的溫度值,如果通過PC接II發(fā)出一個讀命令,則STLM75會返回該寄存中的溫度值,該溫度值為一個16位的字。相關(guān)寄存器介紹如下。命令/指針寄存器該寄存器為8位只寫,主要用于選擇溫度寄存器、配置寄存器、滯后寄存器、超閥值溫度關(guān)閉寄存器。相關(guān)格式如下表所示。表821命令/指針寄存器格式MSBLSBBit7Bit6Bit5Bit4Bit3Bit2BitlBitO000000PlP0詳見指針寄存器位選擇表8-22簡介表822指針寄存器位選擇簡介指針值.11名稱寄存器描述字位讀/寫權(quán)限上電默認備注PlP000TEMP溫度寄存器16只讀N/A存貯溫度數(shù)據(jù)00CONF配置寄存器8讀/寫0010Thys滯
5、后寄存器16讀/寫4B00默認=75C11Tos超溫關(guān)閉16讀/寫5000設(shè)定超溫關(guān)閉默認=80C配置寄存器配置寄存器8位可讀/寫,是用來存儲設(shè)備設(shè)置的操作模式,比如超閥值溫度關(guān)閉運行模式,超溫極性和超溫故障隊列等。如下表所示。表8-23配置寄存器格式及位功能定義ByteMSBLSBBit7Bit6Bit5Bit4Bit3Bit2BitlBitOSTLM75保留00FTlFTOPOLMSD默認00000000位功能定義SD關(guān)閉控制位0正常工作,T關(guān)斷模式M:控器模式,0比較器模式中斷模式POL:出極性,低有效,T高有效fto:fti:故障隊列,在輸出更新前,有相同結(jié)果的溫度-數(shù)字轉(zhuǎn)換的個數(shù).0
6、0、表1(上電默認值)01表示2個,10表示4個,11表示6個.位46:設(shè)定為0位7:設(shè)置為XT,保留溫度寄存器溫度寄存器是一個由兩個字節(jié)組成的16位“只讀”操作寄存器,當溫度一數(shù)字轉(zhuǎn)換過程中,溫度值存貯于此寄存器,每當溫一數(shù)轉(zhuǎn)換完成,該寄存器內(nèi)容將更新。表8-24溫度寄存器格式及位功能定義ByteHSByteLSByte位MSBTMSBTLSBLSB151413211109876543210STLM75TD8SignTD7TMSBTD6TD5TD4TD3TD2TD1TD0TLSB0000000位功能定義SB補碼符號位2表正溫度,表負溫度TMSB:溫度值最高位TLSB:溫度值最低位TD08:溫
7、度數(shù)據(jù)位超閥值溫度寄存器(Tos)超溫寄存器是由兩個字節(jié)組成的16位可讀/寫操作的寄存器,存儲了溫度報警值的高位。默認為80C。如下表8-25所示。遲滯溫度寄存器(Thys)遲滯溫度寄存器是由兩個字節(jié)組成的16位可讀/寫操作寄存器,存儲用戶設(shè)定的溫度報警值低位,默認設(shè)置為75匸。超溫寄存器及滯后溫度寄存器格式如下表所示。表8-25超溫寄存器及滯后溫度寄存器格式及位功能定義ByteHSByteLSByte位MSBTMSBTLSBLSB151413211109876543210STLM75SBTMSBTDTDTDTDTDTD9BitTLSB0000000位功能定義SB補碼符號位2表正溫度,表負溫度
8、TMSB:溫度值最高位TLSB:溫度值最低位TD:溫度數(shù)據(jù)位注:該寄存器格式兼容TDS75等同類芯片。在溫度寄存器,超閥值寄存器,滯后寄存器中,每單位值代表0.5C。該值均以二進制補碼表示,因而讀000000000b時相當于OC。STLM75溫度數(shù)值格式表8-26顯示的是外部溫度與數(shù)字輸出數(shù)據(jù)值之間的關(guān)系,溫度寄存器,超閥值溫度關(guān)閉寄存器,滯后寄存器組成的溫度相關(guān)數(shù)據(jù)值用補碼表示。左邊的數(shù)據(jù)包含了溫度極性信息,當為時,表示此時的溫度是正溫;為T時,表示此時的溫度為負溫。表8-25溫度與數(shù)字輸出關(guān)系表溫度數(shù)字輸出二進制碼十六進制碼+125C0111110100FA11+2590001100100
9、32h+0.5C000000001OOlhoc000000000000h-0.5X?111111111IFFh-259111001110ICEh-40X?110110000IBOh-55X?110010010192hSTLM75工作模式介紹STLM75所有的傳輸都在微處理器的控制卞進行,微處理器作為主設(shè)備工作并提供給STLM75時鐘信號,STLM總是作為從設(shè)備身份工作。所有數(shù)據(jù)傳輸過程中數(shù)據(jù)字節(jié)都是先傳高位。讀/寫操作由開始狀態(tài)(START)開始,緊跟著的是設(shè)備地址字節(jié)和一個或多個數(shù)據(jù)字節(jié),設(shè)備地址字節(jié)(如表8-26所示)包括了讀/寫選擇位,每次讀/寫操作必須由停止狀態(tài)(STOP)結(jié)束。稱作確
10、認(ACK)的約定確認了每個字節(jié)的接收。表8-26STLM75從地址字節(jié)定義ByteMSBLSBBit7Bit6Bit5Bit4Bit3Bit2BitlBitO1001A2AlAOR-W位功能定義位77固定為1001A2A1A0位設(shè)定狀態(tài)必須與STLM75A2A1A0引接輸入狀態(tài)匹配,以便得到ACK信號RW:讀/寫操作選擇位STLM75的FC串行總線數(shù)據(jù)傳輸序列圖分別如卞所示圖9-11所示。I91919IIIMMJ-kLkJ-XImiAJIIJJiLI1111L.i.1LiLi11Vr由(.,.=ji一備開蛤地址字節(jié)中?5給垠高仃效數(shù)據(jù)字節(jié)主伴茫產(chǎn)最低有效數(shù)據(jù)字節(jié)主姿嚴無出覘認出確認確認市主設(shè)
11、備給出結(jié)束狀杰圖9-lla肌型的從預置指針位置讀出2字節(jié),如溫度,超閥值,滯后寄存器一*叮叮/帖g曲jjI。1叮0丨門.丄3口丄由主j一笛開始地址字節(jié)LM75給出確認191919XXWHWfWWIWWWWHWMTr=/A,J/Wbfok融鼬蟲材嵋腦冊冊射曲打/片闞)咖歸忤:(跡y歸重復由!1|I|.1”主設(shè)備覽址字節(jié)片呼給最高有鬆據(jù)宇節(jié)主讐3嚴低有效數(shù)抵宇節(jié)圭驚號處斜開始出確認岀確認尢喘認備結(jié)束狀態(tài)圖9-lib典型的指針設(shè)置后立即讀出2字節(jié),如溫度,超閥值,滯后寄存器1919114IIMMJ-kJ-kkk1JUJ-kLL-kzl由4.備開始地址字節(jié)1-M75董抿皋節(jié)備無由主設(shè)備給出確認確認出結(jié)
12、束狀態(tài)圖9-llc肌型的指針從帶電預置指針的配置寄存器讀出1字節(jié)1從1IIl_lIIIIIIIIIIIIIIIXXI111LXIII11IU1JX-,-1LLkL-LLI.J100/13X從“從只叼0000000/ppJ100/1WDlYAPhZ/旳閔口5燦丫8乂明(0垃對J由押1一備幵始地址了節(jié)眾譲刪和眾譲蠶鮭迪址和眾譲&JK?節(jié)丄片無由上設(shè)條給溜認出結(jié)束狀態(tài)圖9-lld典型的指針設(shè)置后立即讀配置寄存器999999R麗000000D1/D0-nmmwHWIIILLLl/UMMIIII_o0由主1徭開始地址宇節(jié)LM75給匕:卜立桔LM75給出確認子出俛認配買宇節(jié)IN75給由主設(shè)備出確認結(jié)朿狀態(tài)
13、圖9-lle寫配置寄存器lliIIIIUULLI-LIIIIIIIIIIIIIIIIJUJJJIjXUjJJXtUXKUjI00廠住爐“0)皆D00Q00何X冋(j頑必顧可可冋何何由丄1備開始地址字苗LM75給戶日Q伙LM75給岀確認蹄岀確認最高仃效數(shù)據(jù)字節(jié)n設(shè)備錯束狀態(tài)圖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應(yīng)用程序流程圖分析微處理器向從器件發(fā)送指令及從器件接收的數(shù)據(jù)流程分別如圖9-14和9-15所示。視始化開趨配It12(接口尊PH7-SUA1,昭SCLptjsusr巨只鬲件応址圖914主設(shè)備發(fā)送程序流程圖圖915從設(shè)備接收程序流程圖LM75A應(yīng)用程序代碼設(shè)計整個工程文件包含五個文件:cortexm3_macro.s,stin32f1Ox_vector.s是啟動代碼文件;其它函數(shù)包含在niain.c,stm32flOx_it.c,tsensor.c當中。限于篇幅cortexm3_niacro.s?stm32f1Ox_vector.s省略介紹。具體的程斥代碼及其說明(見注釋語句
16、)如卞。/*寧文件名寧*寧*寧*寧*寧*寧*寧寧*寧*描述:mam.c:主程序*寧*寧*寧*寧*寧*寧*/*頭文件/#include”stm32fl0 x_lib.h”#iiicludeEiTorStatusHSEStartUpStatus;/*函數(shù)及引用外部函數(shù)*/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/*系統(tǒng)時鐘配置*/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卩輸入字符*/坤*坤*函數(shù)名*描述*輸入*輸出*返回:assert_failed:報告石錯:-文件指針-行指針:無:無*/voidasseil_failed(u8*file,u32line)/*當STLM75異常時輸出報錯信息*/pnntf(nnrWrongparamet
19、ervaluedetectedonrHT);printf(,rfile%srn役file);printf(,rIme%drn篤line);#endif函數(shù)名:RCC_Coiifigiuation描述:報告出錯輸入:配置系統(tǒng)時鐘輸出:無返回:無*寧*/voidRCC_Coiifigiiration(void)此處省略,請讀者參考其它章節(jié)/*使能USART1與GPIOA*/RCC_APB2PenphClockCmd(RCC_APB2Penph_USARTl|RCC_APB2Peiiph_GPIOA,ENABLE);*函數(shù)名:N7C_Configiu-ation描述:報告占錯輸入:配置向量地址輸出:
20、無返回:無*voidNTC_Coiifiguration(void)此處省略,請讀者參考其它章節(jié)/*函數(shù)名:GPIO_Configiuation描述:GPIO配置輸入:無輸出:無返回:無*voidGPIO_Configuratioii(void)此處省略,請讀者參考其它章節(jié)/*函數(shù)名:USART_Configiiration描述:串口配置輸入:無輸出:無返回:無*voidUSART_Configuration(void)*/*/USART_IiutTypeDefUSART_ImtStructuie;此處省略,請讀者參考其它章節(jié)USART_Imt(USARTl,&USARTJmtStructur
21、e);/*打開USART1*/USART_Cmd(USARTl?ENABLE);*函數(shù)名:mtc*描述:串口輸出函數(shù)TOC o 1-5 h z*輸入:無*輸出:無*返回:無*intfyutc(intch,FILE*f)USART_SendData(USARTl?(u8)ch);/*循壞只到傳送結(jié)束*/while(USART_GetFlagStatus(USARTl,USART_FLAG_TC)=RESET)returnch;Tsensor.c文件名:tsensor.c*功能描述:溫度傳感器STLM75讀/寫程序-該程序包括I2C總線協(xié)議及讀寫STLM75所有的功能函數(shù)及攝氏度華氏度溫度顯示/*
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/*設(shè)置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;,*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*)!(寧*寧*寧*寧函數(shù)名:I2C_LM75_Iiut描述:I2C1初始化-輸入:無輸出:無返回:無*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*void12C_LM75_Imt(void)GPIO_IiutTypeDefGPIO_ImtStructuie;I2C_I
24、iiitTypeDefI2C_ImtStructure;/*GPIOB外設(shè)時鐘使能*/RCC_APB2PenphClockCmd(RCC_APB2Penph_AFIO|RCC_APB2Penph_GPIOB:ENABLE);/*I2C1外設(shè)時鐘使能*/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;/*設(shè)置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;/*使能應(yīng)答(ACK)*/I2C_InitStiiicture.I2C_AckiiowledgedAd
27、dress=I2C_AcknowledgedAddi-ess_7bit;/*應(yīng)答7位地址*/I2C_IiutSti-ucture.I2C_ClockSpeed=200000*200K速度*/I2C_Imt(I2Cl,&I2C_ImtStructure);/*I2C1使能*/I2C_Cmd(I2Cl,ENABLE);嚴*寧*函數(shù)名:I2C_LM75_Status*描述:確認STLM75狀態(tài)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);/*發(fā)送I2C1起始條件狀態(tài)位*/I2CGeiierateSTART(I2Cl,ENABLE);/*測試I2C1EV5事件并清除*/while(!I2C_CheckEveut(I2Cl,I2C_E王NT_MASTER_MODE_SELECT)/*EV5爭件*/*發(fā)送STLM75從器件地址字節(jié)(寫)*/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*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*函數(shù)名:I2C_LM75_Reg_Read*描述:讀STLM75寄存器*輸入:讀從器件如下寄存器LM75_TEMP_Reg:溫度寄存器-LM7
30、5_TOS_Reg:超閥值關(guān)斷寄存器-LM75_THYS_Reg滯后寄存器*輸出:無*返回:無*ul6I2C_LM75_Reg_Read(u8RegName)u32RegValue=0;/*使能I2C1應(yīng)答/I2C_AcknowledgeCoiifig(I2C1,ENABLE);/*發(fā)送I2C1起始條件(寫)*/I2C_GenerateSTART(I2C1,ENABLE);/*發(fā)送I2C1起始條件(寫)*/I2C_GenerateSTART(I2C1,ENABLE);/*測試I2C1EV5事件并清除/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MOD
31、E_SELECT)/*EV5*/*發(fā)送STLM75地址(寫)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ection_Transinitter);/*測試I2C1EV6事件并清除/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*發(fā)送指針寄存器數(shù)據(jù)(寫)*/I2C_SendData(I2C1,RegNanie);/*檢測I2C1EV8事件并清除/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_BYTE_T
32、RANSMITTED)/*EV8/*一接收部分*/*發(fā)送重新開始起始位條件*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從地址(讀)/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Diiection_Receiver);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E衛(wèi)NT_MASTER_RECEIVER_MODE_SELECTE
33、D)/*EV6*/*檢測EV7事件并清除*/while(!I2C_CheckEveut(I2Cl,I2C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存儲I2C1接收的數(shù)據(jù)*/RegAalue=(ul6)(I2C_ReceiveData(I2C1)8);/*最后一位接收完成后要關(guān)閉應(yīng)答*/I2C_AcknowledgeCoiifig(I2C1,DISABLE);/*發(fā)送I2C1停止條件位*/I2C_GenerateSTOP(I2C1,ENABLE);/*檢測EV7事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BY
34、TE_RECEITD)/*EV7*/*存儲I2C1接收的數(shù)據(jù)*/RegValue|=I2C_ReceiveData(I2C1);/*返回寄存器值*/return(RegValue7);,*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*函數(shù)名:I2C_LM75_Reg_Wnte*描述:讀STLM75寄存器*輸入:寫從器件如下寄存器LM75_TEMP_Reg:溫度寄存器-LM75_TOS_Reg:超閥值關(guān)斷寄存器-LM75_THYS_Reg滯后寄存器*輸出:無*返回:無*voidI2C_LM75_Reg_Wiite(u8RegName,ul6Regalue)/*左移寄存器值*/RegVa
35、lue=Regalue7;/*傳送過程*/*發(fā)送I2C1起始狀態(tài)位*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從地址(寫)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ection_Transinitter);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_
36、SELECTED)/*EV6*/*發(fā)送指針寄存器數(shù)值*/I2C_SendData(I2C1,RegNanie);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*發(fā)送I2C1數(shù)據(jù)*/I2C_SendData(I2Cl,(u8)(RegValue8);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*發(fā)送I2C1數(shù)據(jù)*/I2C_SendData(I2C1,(u8)Re
37、galue);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*發(fā)送I2C1停止狀態(tài)位*/I2C_GenerateSTOP(I2C1,ENABLE);J*寧*寧*寧*函數(shù)名:I2C_LM75_Temp_Read*描述:讀STLM75寄存器*輸入:讀取STLM75溫度寄存器值2字節(jié)*輸出:無*返回:無*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*)(C*寧*寧*寧*寧*寧*寧*ul6I2C_LM75_Temp_Read(void)u32RegValue=0;/*使能應(yīng)答*/I2
38、C_AcknowledgeCoiifig(I2C1,ENABLE);/*傳送過程*/*發(fā)送I2C1起始狀態(tài)位*/I2C_GeiierateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEveut(I2C1,12C_E王NT_MASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從地址(寫)*/I2C_Send7bitAddiess(I2Cl,LM75_Addi;I2C_Du-ection_Transinitter);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E王NT_MASTER
39、_TRANSMITTER_MODE_SELECTED)嚴EV6*/*發(fā)送溫度寄存器數(shù)據(jù)*/I2C_SendDataQ2C1丄卜I75_TEMP_Reg);/*檢測EV8事件并清除*/while(!I2C_CheckEveut(I2Cl,I2C_E王NT_MASTER_BYTE_TRANSMITTED)/*EV8*/*發(fā)送啟動起始狀態(tài)位*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從地址(讀)/I2C_S
40、end7bitAddress(I2C1,LM75_Addr,12C_Diiection_Receiver);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E衛(wèi)NT_MASTER_RECEIVER_MODE_SELECTED)/*EV6*/*檢測EV7事件并清除*/while(!I2C_CheckEvent(I2C1,12C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存儲I2C1接收的數(shù)據(jù)*/RegValue=I2C_ReceiveData(I2Cl)S;/*關(guān)閉應(yīng)答*/I2C_AcknowledgeCoiifig(I2C1,
41、DISABLE);/*發(fā)送停止狀態(tài)位*/I2C_GenerateSTOP(I2C1,ENABLE);/*檢測EV7事件并清除*/while(!I2C_CheckEvent(I2C1,12C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存儲I2C1接收的數(shù)據(jù)*/RegValue|=I2C_ReceiveData(I2C1);/*返回值*/return(RegAalue5);J*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*寧*函數(shù)名:I2C_LM75_CoiifReg_Rea(i*描述:讀STLM75配置寄希器TOC o 1-5 h z*輸入:無*輸出:無*
42、返回:無*u8I2C_LM75_CoiifReg_Read(void)u32RegValue=0;/*一傳送過程*/*發(fā)送I2C1起始狀態(tài)位*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從設(shè)備地址(寫)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Diiection_Transmitter);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2
43、C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*發(fā)送配置寄存器指針數(shù)據(jù)*/I2C_SendData(I2C1,LM75_CONF_Reg);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*-接收過程一*/*發(fā)送啟動起始狀態(tài)位*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SE
44、LECT)/*EV5*/*發(fā)送STLM75從設(shè)備地址(讀)/I2C_Send7bitAddiess(I2Cl,LM75_Addi;I2C_Duection_Receiver);/*檢測EV6事件并清除*/while(!I2C_CheckEveut(I2C1,I2C_E王NT_MASTER_RECEIVER_MODE_SELECTED)/*EV6*/*關(guān)閉應(yīng)答*/I2C_AcknowledgeCoiifig(I2C1,DISABLE);/*發(fā)送I2C1停止狀態(tài)位*/I2C_GeiierateSTOP(I2C1,ENABLE);/*檢測EV7事件并清除*/while(!I2C_CheckEveut
45、(I2Cl,I2C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存儲I2C1接收的數(shù)據(jù)*/RegValue=I2C_ReceiveData(I2Cl);/*返回寄存器值*/return(RegValue);函數(shù)名:I2CLM75ConfRegWnte描述:寫STLM75配置寄存器輸入輸出返回無無無*voidI2C_LM75_ConfReg_Write(u8Regalue)/*一傳送過程*/*發(fā)送I2C1起始狀態(tài)位*/I2CGenerateSTART(I2Cl,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EAT
46、NT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從設(shè)備地址(寫)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Diiection_Transmitter);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*發(fā)送配置寄存器指針數(shù)據(jù)*/I2C_SendData(I2C1,LM75_CONF_Reg);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_
47、NIASTER_BYTE_TRANSMITTED)/*EV8/*發(fā)送I2C1數(shù)據(jù)*/I2C_SendData(I2Cl,RegValue);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_BYTE_TRANSMITTED)/*EV8/*發(fā)送I2C1停止條件位*/I2C_GenemteSTOP(I2Cl,ENABLE);/*寧*寧*寧*寧寧*寧*寧*寧*寧寧*寧*函數(shù)名:I2C_LM75_ShutDovn描述:打開或關(guān)斷STLM75輸入:無輸出:無返回:無*寧*寧*寧寧*寧*寧*voidI2C_LM75_ShutDown(Fu
48、nctionalStateNewState)u32RegValue=0;/*TransmissionPhase*/*發(fā)送I2C1起始狀態(tài)位*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從設(shè)備地址(寫)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ectioii_Transinitter);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I
49、2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*EV6*/*發(fā)送配置寄存器指針數(shù)據(jù)*/I2C_SendData(I2C1,LM75_CONF_Reg);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_ETNT_NIASTER_BYTE_TRANSMITTED)/*EV8*/*-接收過程-*/*發(fā)送開始起始位條件*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_ETNT_NIASTER_MODE_SE
50、LECT)/*EV5*/*發(fā)送STLM75從設(shè)備地址(讀)*/I2C_Send7bitAddiess(I2Cl,LM75_Addi;12C_Duection_Receiver);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_E王NT_MASTER_RECEIVER_MODE_SELECTED)/*EV6*/*關(guān)閉應(yīng)答*/I2C_AcknowledgeCoiifig(I2C1,DISABLE);/*發(fā)送I2C1停止條件位*/I2C_GenerateSTOP(I2C1,ENABLE);/*檢測EV7事件并清除*/while(!I2C_CheckEvent
51、(I2C1,12C_E王NT_MASTER_BYTE_RECEIVED)/*EV7*/*存儲I2C1接收的數(shù)據(jù)*/RegValue=I2C_ReceiveData(I2Cl);/*一傳送過程*/*發(fā)送I2C1起始狀態(tài)位*/I2C_GenerateSTART(I2C1,ENABLE);/*檢測EV5事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIASTER_MODE_SELECT)/*EV5*/*發(fā)送STLM75從設(shè)備地址(寫)*/I2C_Send7bitAddress(I2C1,LM75_Addr,12C_Dii-ection_Transinitter);/*檢測EV6事件并清除*/while(!I2C_CheckEvent(I2C1,I2C_EATNT_MASTER_TRANSNnTTER_MODE_SELECTED)/*E6*/*發(fā)送配置寄存器指針數(shù)據(jù)*/I2C_SendDataa2Cl,LM75_CONF_Reg);/*檢測EV8事件并清除*/while(!I2C_CheckEvent(I2C1,12C_EATNT_NIAS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑項目合同范本:勘察與設(shè)計
- 山地旅游資源開發(fā)承包合同
- 鋼材采購合同樣本格式
- 餐飲服務(wù)與廚師雇傭合同范文
- 涂料供應(yīng)與采購合同范本
- 合同檔案寄存確認書
- 貸款合同模板:個人貸款標準合同范本
- 銀行與公司短期貸款合同范例
- 氣動系統(tǒng)培訓課件
- 海豚培訓課件下載
- 地中海風格室內(nèi)設(shè)計
- 臨床實習出科小結(jié)神經(jīng)外科
- 碳酸鈣市場分析及競爭策略分析報告
- 糖尿病性眼肌麻痹的護理查房
- 泡泡瑪特展廳活動策劃
- 健康生活方式與健康促進的科學研究
- 文旅部門消防培訓課件
- 中職語文課件:1.1《送瘟神》課件14張2023-2024學年中職語文職業(yè)模塊
- 胃瘍(消化性潰瘍)中醫(yī)護理方案
- 《哲學概論(第2版)》-課件全套 第0-6章 緒論、哲學的形態(tài)-馬克思主義哲學
- 踝關(guān)節(jié)骨性關(guān)節(jié)炎課件整理
評論
0/150
提交評論