国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
    • OPT3001自學(xué)筆記
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

OPT3001光照傳感器驅(qū)動(dòng)教學(xué)

2024/03/11
3359
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

OPT3001自學(xué)筆記

OPT3001是一款低功耗環(huán)境光照度采集IC,之前的項(xiàng)目中有用到這顆芯片,因此在這里給大家分享一下,如果這篇文章剛好能幫到你那就更好了。

一、OPT3001的寄存器

單片機(jī)是通過(guò)IIC協(xié)議讀寫OPT3001的寄存器來(lái)控制OPT3001的。所以我們要驅(qū)動(dòng)這個(gè)芯片就必須先去了解它的寄存器。OPT3001有6個(gè)寄存器,都是16位寄存器,如圖1所示。

2、 配置寄存器(地址:0x01):配置OPT3001采集的方式

16位配置寄存器具體如表1所示:

15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
RN[3] RN[2] RN[1] RN[0] CT M[1] M[0] OVF CRF FH FL L POL ME FC[1] FC[0]

15~12 RN - 配置測(cè)量光照的范圍,當(dāng)配置位1100傳感器測(cè)量范圍自動(dòng)選擇
11 CT - 測(cè)量時(shí)間配置 0- 100Ms 1-800Ms
10:9 M[1:0] - 轉(zhuǎn)換模式:00:關(guān)閉模式 01:?jiǎn)未无D(zhuǎn)換 10、11:連續(xù)轉(zhuǎn)換
8 OVF - 測(cè)量光照超出設(shè)定的范圍或最大測(cè)量值 溢出標(biāo)志
7 CRF - 轉(zhuǎn)換就緒字段 1-轉(zhuǎn)換完成
6 FH - 轉(zhuǎn)換的光照值 大于上限值 置位
5 FL - 轉(zhuǎn)換的光照值 小于下限值 置位
4 L - 中斷輸出的兩種模式:1-窗口模式:這種模式下高限置位和低限置位INT輸出,0-滯后模式:高限置位INT輸出 具體看手冊(cè)
3 POL - INT 中斷被觸發(fā)輸出極性 0:拉低 1:拉高
2 ME - 掩碼字段
0:1 FC - 超出上限范圍故障計(jì)數(shù),如果超出次數(shù),大于等于計(jì)數(shù)設(shè)定次,INT輸出中斷

注:若要用窗口鎖存模式,OPT3001觸發(fā)中斷后需要讀取配置寄存器才能清除標(biāo)志位。

3、 下限寄存器(地址:0x02):設(shè)置觸發(fā)下限,如果要用中斷方式觸發(fā),需要用到

4、 上限寄存器(地址:0x03):設(shè)置觸發(fā)上限,如果要用中斷方式觸發(fā),需要用到

5、 產(chǎn)商ID寄存器(地址:0x7E):只讀寄存器,固定為0x5449

6、 設(shè)備ID寄存器(地址:0x7F):只讀寄存器,固定為0x3001

二、OPT3001的工作模式

1、OPT3001自動(dòng)采集轉(zhuǎn)換數(shù)據(jù),但不主動(dòng)上報(bào),單片機(jī)需要數(shù)據(jù)的時(shí)候去讀取,計(jì)算。測(cè)量時(shí)間可以設(shè)置為100ms或者800ms,轉(zhuǎn)換方式配置為連續(xù)轉(zhuǎn)換,配置寄存器可以設(shè)為:0xCE10或者0xC410。

2、OTP3001自動(dòng)采集轉(zhuǎn)換數(shù)據(jù),超過(guò)上限或下限會(huì)觸發(fā)中斷,單片機(jī)可以通過(guò)讀取配置寄存器清除OPT3001的中斷。測(cè)量時(shí)間可以設(shè)置為100ms或者800ms,轉(zhuǎn)換方式配置為連續(xù)轉(zhuǎn)換,中斷輸出極性可以是高電平也可以是低電平,配置寄存器可以設(shè)為:0xCE10或者0xCE18。

三、讀寫OPT3001的寄存器

1、寫入數(shù)據(jù)的步驟如下:

1)IIC發(fā)送器件地址+讀/寫位,器件地址和ADDR的狀態(tài)有關(guān),具體如圖2所示。如:ADDR接地,發(fā)送的讀取命令為:10001000,即0x88,前7位是器件地址,最后一位0是讀/寫位,0是寫入,1是讀取。
2)IIC發(fā)送需要寫入數(shù)據(jù)的寄存器地址。如:需要寫入配置寄存器,則發(fā)送0x01。
3)IIC發(fā)送需要寫入的數(shù)據(jù)(兩個(gè)字節(jié),分兩次發(fā)送)。如往配置寄存器連續(xù)發(fā)送0xCE,0x10。

2、讀取的步驟如下:

1)IIC發(fā)送器件地址+讀/寫位,器件地址和ADDR的狀態(tài)有關(guān),具體如圖2所示。如:ADDR接地,發(fā)送的讀取命令為:0x88。
2)IIC發(fā)送需要讀取數(shù)據(jù)的寄存器地址。如:需要讀取結(jié)果寄存器,則發(fā)送0x00。
3)IIC發(fā)送器件地址+讀/寫位,器件地址和ADDR的狀態(tài)有關(guān),具體如圖2所示。如:ADDR接地,讀取的讀取命令為:0x89。
4)IIC連續(xù)接收兩個(gè)字節(jié)的數(shù)據(jù)。

四、完整的IIC通訊過(guò)程

1、 寫入過(guò)程

1)發(fā)送起始信號(hào)
2)發(fā)送發(fā)送器件地址+0
3)發(fā)送應(yīng)答位
4)發(fā)送寄存器地址
5)發(fā)送應(yīng)答位
6)發(fā)送數(shù)據(jù)高8位
7)發(fā)送應(yīng)答位
8)發(fā)送數(shù)據(jù)低8位
9)發(fā)送應(yīng)答位
10)發(fā)送停止信號(hào)

2、讀取過(guò)程

1)發(fā)送起始信號(hào)
2)發(fā)送發(fā)送器件地址+0
3)發(fā)送應(yīng)答位
4)發(fā)送寄存器地址
5)發(fā)送應(yīng)答位
6)發(fā)送發(fā)送器件地址+1
7)接收數(shù)據(jù)高8位
8)發(fā)送應(yīng)答位
9)發(fā)送數(shù)據(jù)低8位
10)不發(fā)送應(yīng)答位
11)發(fā)送停止信號(hào)

IIC讀取和寫入的時(shí)序圖如圖3所示。

驅(qū)動(dòng)源碼下載鏈接:

https://download.csdn.net/download/shenzhen_zixian/11705851
https://download.csdn.net/download/shenzhen_zixian/11939529

相關(guān)推薦

山阳县| 茶陵县| 根河市| 大姚县| 军事| 晋江市| 铁岭县| 太原市| 溧水县| 昆山市| 东平县| 忻城县| 乐山市| 紫云| 株洲市| 高陵县| 漯河市| 独山县| 理塘县| 广水市| 霍林郭勒市| 上蔡县| 贺州市| 昆明市| 南平市| 台南市| 高青县| 会理县| 兴和县| 湖南省| 信宜市| 花垣县| 扶余县| 资兴市| 噶尔县| 赣榆县| 彰化市| 中江县| 清新县| 北京市| 凌云县|