ARM微控制器與嵌入式系統(tǒng) 課件 35 BH1750光照度傳感器_第1頁
ARM微控制器與嵌入式系統(tǒng) 課件 35 BH1750光照度傳感器_第2頁
ARM微控制器與嵌入式系統(tǒng) 課件 35 BH1750光照度傳感器_第3頁
ARM微控制器與嵌入式系統(tǒng) 課件 35 BH1750光照度傳感器_第4頁
ARM微控制器與嵌入式系統(tǒng) 課件 35 BH1750光照度傳感器_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

ARM微控制器與嵌入式系統(tǒng)

BH1750光照度傳感器主講人:景妮琴北京電子科技職業(yè)學(xué)院BH1750概述1BH1750FVI是一款數(shù)字型光強(qiáng)度傳感器集成芯片。BH1750FVI是一種用于兩線式串行總線接口的數(shù)字型光強(qiáng)度傳感器集成電路。這種集成電路可以根據(jù)收集的光線強(qiáng)度數(shù)據(jù)來調(diào)整液晶或者鍵盤背景燈的亮度。利用它的高分辨率可以探測較大范圍的光強(qiáng)度變化。(1lx-65535lx,照度:單位被照面積上接收到的光通量,用E表示,單位是勒克斯(lx)1.支持I2CBUS接口(f/sModeSupport)。(使用過)2.接近視覺靈敏度的光譜靈敏度特性(峰值靈敏度波長典型值:560nm)。3.輸出對應(yīng)亮度的數(shù)字值,

對應(yīng)廣泛的輸入光范圍(相當(dāng)于1-65535lx)。4.支持1.8V邏輯輸入接口。5.光源依賴性弱(白熾燈,熒光燈,鹵素?zé)?,白光LED,日光燈)。6.有兩種可選的I2Cslave地址。7.可調(diào)的測量結(jié)果,影響較大的因素為光入口大小。8.使用這種功能能計(jì)算1.1lx到100000lx/分鐘的范圍。9.最小誤差變動(dòng)在±20%。10.受紅外線影響很小。BH1750概述1BH1750的內(nèi)部由光敏二極管、運(yùn)算放大器、ADC采集、晶振等組成。?PD,接近人眼反應(yīng)的光敏二極管。(Photodiodewithapproximatelyhumaneyeresponse.)?AMP,集成運(yùn)算放大器:將PD電流轉(zhuǎn)換為PD電壓。?ADC,模數(shù)轉(zhuǎn)換獲取16位數(shù)字?jǐn)?shù)據(jù)。?Logic+ICInterface(邏輯+IC界面),光強(qiáng)度計(jì)算和I2C總線接口,包括下列寄存器:數(shù)據(jù)寄存器→光強(qiáng)度數(shù)據(jù)寄存。初始值是:“0000_0000_0000_0000”。測量時(shí)間寄存器→時(shí)間測量數(shù)據(jù)寄存。初始值是:“0100_0101”。?OSC,內(nèi)部振蕩器(時(shí)鐘頻率典型值:320kHz)。該時(shí)鐘為內(nèi)部邏輯。BH1750概述1引腳說明BH1750概述1引腳說明BH1750概述1BH1750的內(nèi)部由光敏二極管、運(yùn)算放大器、ADC采集、晶振等組成。引腳號(hào)名稱說明1VCC供電電壓源正極(3.3V)2SCLIIC時(shí)鐘線,時(shí)鐘輸入引腳,由MCU輸出時(shí)鐘3SDAIIC數(shù)據(jù)線,雙向IO口,用來傳輸數(shù)據(jù)4ADDRIIC地址線,接GND時(shí)器件地址為0100011,接VCC時(shí)器件地址為10111005GND供電電壓源負(fù)極BH1750概述1BH1750FVI電氣參數(shù)。BH1750概述1BH1750FVI電氣參數(shù)。BH1750概述1BH1750BH1750概述1指令集合結(jié)構(gòu)指令功能代碼注釋斷電0000_0000無激活狀態(tài)。通電0000_0001等待測量指令。重置0000_0111重置數(shù)字寄存器值,重置指令在斷電模式下不起作用。連續(xù)H分辨率模式0001_0000在1lx分辨率下開始測量。測量時(shí)間一般為120ms。連續(xù)H分辨率模式20001_0001在0.5lx分辨率下開始測量。測量時(shí)間一般為120ms。連續(xù)L分辨率模式0001_0011在41lx分辨率下開始測量。測量時(shí)間一般為16ms。一次H分辨率模式0010_0000在1lx分辨率下開始測量。測量時(shí)間一般為120ms。測量后自動(dòng)設(shè)置為斷電模式。一次H分辨率模式20010_0001在0.5lx分辨率下開始測量。測量時(shí)間一般為120ms。測量后自動(dòng)設(shè)置為斷電模式。一次L分辨率模式0010_0011在41lx分辨率下開始測量。測量時(shí)間一般為16ms。測量后自動(dòng)設(shè)置為斷電模式。改變測量時(shí)間(高位)01000_MT[7,6,5]改變測量時(shí)間※請參考“根據(jù)光學(xué)扇窗的影響調(diào)整測量結(jié)果?!备淖儨y量時(shí)間(低位)011_MT[4,3,2,1,0]改變測量時(shí)間※請參考“根據(jù)光學(xué)扇窗的影響調(diào)整測量結(jié)果?!盉H1750概述1測量模式說明測量模式測量時(shí)間.分辨率H-分辨率模式2典型時(shí)間:120ms0.5lxH-分辨率模式典型時(shí)間:120ms.1lx.L-分辨率模式典型時(shí)間:16ms.4lx建議使用H分辨率模式。H分辨率模式下足夠長的測量時(shí)間(積)能抑制一些噪聲包括(50Hz/60Hz)。同時(shí),H分辨率模式的分辨率在1lx下,適用于黑暗場合(少10lx)。H分辨率模式2同樣適用于黑暗場合下的檢測。BH1750概述1從“寫指示”到“讀出測量結(jié)果”的測量時(shí)序?qū)嵗龑?shí)例:(ADDR='L')BH1750概述1I2C通信時(shí)序BH1750概述1I2C通信時(shí)序BH1750概述1I2C通信時(shí)序2一根是數(shù)據(jù)線SDA一根是時(shí)鐘線SCLI2C總線只有兩根雙向信號(hào)線。I2C協(xié)議—物理層2I2C總線通過上拉電阻接正電源。當(dāng)總線空閑時(shí),兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號(hào)變低,即各器件的SDA及SCL都是線“與”關(guān)系。I2C協(xié)議—物理層2I2C協(xié)議—物理層連接到相同總線的IC數(shù)量受到總線的最大電容400pF限制。標(biāo)準(zhǔn)模式傳輸速率為100kbit/s快速模式為400kbit/s具有三種傳輸模式:高速模式下可達(dá)3.4Mbit/s,但目前大多I2C設(shè)備尚不支持高速模式。2I2C協(xié)議—協(xié)議層通信的起始和停止信號(hào)數(shù)據(jù)有效性響應(yīng)仲裁時(shí)鐘同步地址廣播I2C的協(xié)議規(guī)定了:2I2C協(xié)議—協(xié)議層起始和停止信號(hào):SCL線為高電平期間,SDA線由高電平向低電平的變化表示起始信號(hào);SCL線為高電平期間,SDA線由低電平向高電平的變化表示停止信號(hào)。起始和停止信號(hào)一般由主機(jī)產(chǎn)生。2I2C協(xié)議—協(xié)議層I2C總線進(jìn)行數(shù)據(jù)傳送時(shí),時(shí)鐘信號(hào)為高電平期間,數(shù)據(jù)線上的數(shù)據(jù)必須保持穩(wěn)定,只有在時(shí)鐘線上的信號(hào)為低電平期間,數(shù)據(jù)線上的高電平或低電平狀態(tài)才允許變化。數(shù)據(jù)的有效性:2I2C協(xié)議—協(xié)議層地址及數(shù)據(jù)方向:I2C總線上的每個(gè)設(shè)備都有自己的獨(dú)立地址,主機(jī)發(fā)起通信時(shí),通過SDA信號(hào)線發(fā)送設(shè)備地址(SLAVE_ADDRESS)來查找從機(jī)。設(shè)備地址可以是7位或10位。1緊跟設(shè)備地址的一個(gè)數(shù)據(jù)位R/W用來表示數(shù)據(jù)傳輸方向,數(shù)據(jù)方向位為“1”時(shí)表示主機(jī)由從機(jī)讀數(shù)據(jù),該位為“0”時(shí)表示主機(jī)向從機(jī)寫數(shù)據(jù)。22I2C協(xié)議—協(xié)議層響應(yīng)I2C的數(shù)據(jù)和地址傳輸都帶響應(yīng)。響應(yīng)包括“應(yīng)答(ACK)”和“非應(yīng)答(NACK)”兩種信號(hào)。01傳輸時(shí)主機(jī)產(chǎn)生時(shí)鐘,在第9個(gè)時(shí)鐘時(shí),數(shù)據(jù)發(fā)送端會(huì)釋放SDA的控制權(quán),由數(shù)據(jù)接收端控制SDA,若SDA為高電平,表示非應(yīng)答信號(hào)(NACK),低電平表示應(yīng)答信號(hào)(ACK)。022I2C協(xié)議—協(xié)議層地址及數(shù)據(jù)方向:

I2C總線上傳送的數(shù)據(jù)信號(hào)是廣義的,既包括地址信號(hào),又包括真正的數(shù)據(jù)信號(hào)。01在起始信號(hào)后必須傳送一個(gè)從機(jī)的地址(可以是7位),接下來(第8位)是數(shù)據(jù)的傳送方向位,用“0”表示主機(jī)發(fā)送數(shù)據(jù)(T),“1”表示主機(jī)接收數(shù)據(jù)(R)。02每次數(shù)據(jù)傳送總是由主機(jī)產(chǎn)生的終止信號(hào)結(jié)束。03若主機(jī)希望繼續(xù)占用總線進(jìn)行新的數(shù)據(jù)傳送,則可以不產(chǎn)生終止信號(hào),馬上再次發(fā)出起始信號(hào)對另一從機(jī)進(jìn)行尋址。04數(shù)據(jù)傳輸分為:主機(jī)寫數(shù)據(jù)到從機(jī)主機(jī)由從機(jī)中讀數(shù)據(jù)寫數(shù)據(jù)與讀數(shù)據(jù)的復(fù)合格式2I2C協(xié)議—協(xié)議層主機(jī)寫數(shù)據(jù)到從機(jī):主機(jī)向從機(jī)發(fā)送數(shù)據(jù),數(shù)據(jù)傳送方向在整個(gè)傳送過程中不變。起始信號(hào)——從機(jī)地址——讀寫信號(hào)—應(yīng)答位—數(shù)據(jù)位——應(yīng)答位——……——停止位2I2C協(xié)議—協(xié)議層主機(jī)由從機(jī)中讀數(shù)據(jù):主機(jī)在第一個(gè)字節(jié)后,立即從從機(jī)讀數(shù)據(jù)。起始信號(hào)——從機(jī)地址——讀寫信號(hào)—應(yīng)答位—數(shù)據(jù)位——應(yīng)答位——……——停止位2I2C協(xié)議—協(xié)議層在傳送過程中,當(dāng)需要改變傳送方向時(shí),起始信號(hào)和從機(jī)地址都被重復(fù)產(chǎn)生一次,但兩次讀/寫方向位正好反相。寫數(shù)據(jù)與讀數(shù)據(jù)的復(fù)合格式:引腳I2C編號(hào)I2C1I2C2I2C3SCLPB6/PB8PF1/PB10/PH4PA8/PH7SDAPB7/PB9PF0/PB11/PH5PC9/PH8引腳定義VCC:3.3VGND:接地SCL:串行時(shí)鐘SDA:串行數(shù)據(jù)PB6PB7ADDR:從屬地址,接地3編程要點(diǎn):硬件連接主機(jī)寫數(shù)據(jù)到從機(jī)010203根據(jù)I2C器件完成主設(shè)備發(fā)送數(shù)據(jù)到從設(shè)備,并接收從設(shè)備數(shù)據(jù)。04開啟時(shí)鐘外設(shè)(GPIO,I2C);初始化對應(yīng)的GPIO引腳,在這里要注意的是一般I2c都配置成開漏輸出就可以了;配置I2C結(jié)構(gòu)體參數(shù),初始化I2C,使能I2C。使能或者失能指定I2C的應(yīng)答功能;3編程要點(diǎn):軟件設(shè)計(jì)主機(jī)由從機(jī)讀數(shù)據(jù)編程要點(diǎn):軟件設(shè)計(jì)3打開GPIO時(shí)鐘配置GPIO的結(jié)構(gòu)體注意:Mode為AF,OType為OD配置復(fù)用GPIO為I2C1GPIO初始化打開I2C2的時(shí)鐘配置I2C的結(jié)構(gòu)體,初始化結(jié)構(gòu)體使能I2CI2C初始化寫數(shù)據(jù)BH1750的函數(shù)讀數(shù)據(jù)編程要點(diǎn):軟件設(shè)計(jì)3打開GPIO時(shí)鐘GPIO初始化RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType=GPIO_OType_OD;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;GPIO_Init(GPIOB,&GPIO_InitStructure);配置復(fù)用GPIO為I2C1配置GPIO的結(jié)構(gòu)體

注意:Mode為AF,OType為ODGPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_I2C1);GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_I2C1);編程要點(diǎn):軟件設(shè)計(jì)3打開I2C1的時(shí)鐘I2C初始化使能I2C1配置I2C的結(jié)構(gòu)體,初始化結(jié)構(gòu)體RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);I2C_InitTypeDefI2C_InitStruct;//定義結(jié)構(gòu)體I2C_InitStruct.I2C_ClockSpeed=400000;//I2C的速率位400kHzI2C_InitStruct.I2C_Mode=I2C_Mode_I2C;//模式為I2CI2C_InitStruct.I2C_DutyCycle=I2C_DutyCycle_2;//占空比為2:1I2C_InitStruct.I2C_OwnAddress1=0x00;//主機(jī)自己的地址,這個(gè)可以隨意設(shè)置,因?yàn)橹挥幸粋€(gè)主機(jī)I2C_InitStruct.I2C_Ack=I2C_Ack_Enable;//使能ACKI2C_InitStruct.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;//地址為7為I2C_Init(I2C1,&I2C_InitStruct);//初始化結(jié)構(gòu)體I2CI2C_Cmd(I2C1,ENABLE);//使能I2C1使能I2C的應(yīng)答功能I2C_AcknowledgeConfig(I2C1,ENABLE);//使能I2C1的ACK編程要點(diǎn):軟件設(shè)計(jì)3寫數(shù)據(jù)BH1750的函數(shù)讀數(shù)據(jù)編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過程主接收器的通信過程STM32的I2C通信分為:使用I2C外設(shè)通信時(shí),在通信的不同階段它會(huì)對“狀態(tài)寄存器(SR1及SR2)”的不同數(shù)據(jù)位寫入?yún)?shù),通過讀取這些寄存器標(biāo)志來了解通信狀態(tài)。3主發(fā)送器的通信過程控制產(chǎn)生起始信號(hào)(S)當(dāng)發(fā)生起始信號(hào)后,它產(chǎn)生事件“EV5”并會(huì)對SR1寄存器的“SB”位置1,表示起始信號(hào)已經(jīng)發(fā)送;01編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過程發(fā)送設(shè)備地址并等待應(yīng)答信號(hào)若有從機(jī)應(yīng)答,則產(chǎn)生事件“EV6”及“EV8”這時(shí)SR1寄存器的“ADDR”位及“TXE”位被置1,ADDR為1表示地址已經(jīng)發(fā)送,TXE為1表示發(fā)送數(shù)據(jù)寄存器為空;02編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過程03往I2C的“數(shù)據(jù)寄存器DR”寫入要發(fā)送的數(shù)據(jù)這時(shí)TXE位會(huì)被重置0,表示數(shù)據(jù)寄存器非空,I2C外設(shè)通過SDA信號(hào)線一位位把數(shù)據(jù)發(fā)送出去后又會(huì)產(chǎn)生“EV8”事件,即TXE位被置1,重復(fù)這個(gè)過程,可以發(fā)送多個(gè)字節(jié)數(shù)據(jù);編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主發(fā)送器的通信過程04發(fā)送數(shù)據(jù)完成后,控制I2C設(shè)備產(chǎn)生一個(gè)停止信號(hào)(P),這個(gè)時(shí)候會(huì)產(chǎn)生EV8_2事件,SR1的TXE位及BTF位都被置1,表示通信結(jié)束。編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信編程要點(diǎn):軟件設(shè)計(jì)3寫數(shù)據(jù)BH1750的函數(shù)模仿OLED的寫數(shù)據(jù)函數(shù)編程要點(diǎn):軟件設(shè)計(jì)3寫數(shù)據(jù)BH1750的函數(shù)3主接收器的通信過程起始信號(hào)(S)是由主機(jī)端產(chǎn)生的,控制發(fā)生起始信號(hào)后,它產(chǎn)生事件“EV5”,并會(huì)對SR1寄存器的“SB”位置1,表示起始信號(hào)已經(jīng)發(fā)送;01編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主接收器的通信過程發(fā)送設(shè)備地址并等待應(yīng)答信號(hào),若有從機(jī)應(yīng)答,則產(chǎn)生事件“EV6”這時(shí)SR1寄存器的“ADDR”位被置1,表示地址已經(jīng)發(fā)送。02編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主接收器的通信過程從機(jī)端接收到地址后,開始向主機(jī)端發(fā)送數(shù)據(jù)。當(dāng)主機(jī)接收到這些數(shù)據(jù)后,會(huì)產(chǎn)生“EV7”事件SR1寄存器的RXNE被置1,表示接收數(shù)據(jù)寄存器非空,讀取該寄存器后,可對數(shù)據(jù)寄存器清空,以便接收下一次數(shù)據(jù)。此時(shí)可以控制I2C發(fā)送應(yīng)答信號(hào)(ACK)或非應(yīng)答信號(hào)(NACK)03編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信3主接收器的通信過程若應(yīng)答,則重復(fù)以上步驟接收數(shù)據(jù),若非應(yīng)答,則停止傳輸;發(fā)送非應(yīng)答信號(hào)后,產(chǎn)生停止信號(hào)(P),結(jié)束傳輸。04編程要點(diǎn):軟件設(shè)計(jì)-STM32的I2C通信編程要點(diǎn):軟件設(shè)計(jì)3讀數(shù)據(jù)BH1750的函數(shù)(1)判忙(2)發(fā)送起始信號(hào)(3)等待EV5事件發(fā)生(4)發(fā)送讀地址(5)等待EV6事件發(fā)生(6)等待EV7事件發(fā)生(ACK)(7)讀取一個(gè)字節(jié)(8)等待EV7事件發(fā)生(ACK)(9)再讀取一個(gè)字節(jié)(10)等待EV7_2事件發(fā)生(NACK)(11)發(fā)送停止信號(hào)while(I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)!=RESET);I2C_GenerateSTART(I2C1,ENABLE);while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT))

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論