5718使用I2C讀取感光模組的資料

2021-10-03 23:30:05 字數 2954 閱讀 1895

5718車載顯示控制器外接乙個i2c環境光感測器,用來採集外部環境的光亮,從而自動調節控制器的lcd背光

max44009環境光感測器提供i²c數字輸出

資料手冊:

max44009.pdf

使用的是3.0.2的版本

修改對應makefile

prefix = /home/siasun/ok5718-sdk-v1.0/ok57xx-linux-fs/usr

cc = arm-linux-gnueabihf-gcc

ar = arm-linux-gnueabihf-ar

strip = arm-linux-gnueabihf-strip

i2ctransfer工具

原始碼:

git clone

----沒弄懂i2ctransfer工具資料怎麼寫的

疑問: 暫存器位址是怎麼確定的、暫存器資料連續讀多少個位元組又是怎麼確定的

i2c_backlight.c

#include 

#include

#include

#include

#include

#include

//double型別列印0表示位數,預設6位

//printf(

" %.0lf \n",lux)

;/* 背光調節顯示

lux範圍 亮度檔位

0 - 1300 echo 2 > /sys/class/backlight/backlight/brightness

1301 - 8500 echo 4 > /sys/class/backlight/backlight/brightness

8501 - 4177920 echo 7 > /sys/class/backlight/backlight/brightness

其他值 echo 3 > /sys/class/backlight/backlight/brightness

*/int main();

char buff_03[10]

; char buff_04[5]

; char buff_mid[2]

; file * fp;

while(1)

fgets(buff_03,sizeof(buff_03),fp)

; //printf(

"%s\n",buff_03)

; pclose(fp);

fp = popen(

"i2cget -f -y 0 0x4a 0x04", "r");

if(!fp)

fgets(buff_04,sizeof(buff_04),fp)

; //printf(

"%s\n",buff_04)

; pclose(fp)

; buff_03[4]

= buff_04[3]

; //printf(

"***** %s *****\n",buff_03)

; //printf(

"***** %s *****\n\n",buff_04);

fprintf(stderr, "***** %s *****\n",buff_03)

; fprintf(stderr, "***** %s *****\n\n",buff_04)

; //0x03、0x04位址資料處理---fgets讀取上來是乙個字串

for(i=2;i<=4;i++)

else if(

(buff_03[i]

=='a')||

(buff_03[i]

=='a'))

else if(

(buff_03[i]

=='b')||

(buff_03[i]

=='b'))

else if(

(buff_03[i]

=='c')||

(buff_03[i]

=='c'))

else if(

(buff_03[i]

=='d')||

(buff_03[i]

=='d'))

else if(

(buff_03[i]

=='e')||

(buff_03[i]

=='e'))

else if(

(buff_03[i]

=='f')||

(buff_03[i]

=='f'))

else

} int mantissa = 0;

int lux = 1;

mantissa = data[3] * 16 + data[4]

; //printf(

"mantissa = %d \n",mantissa)

; if(data[2]

== 0)

else

lux = lux * mantissa;

//printf(

"lux = %d \n",lux);}

if(lux >= 0 && lux <= 200)

else if(lux >= 201 && lux <= 700)

else if(lux >= 701 && lux <= 11200)

else

sleep(1);}

return 0;

}

背光突變考慮:

採三次取平均值 

pid調節

線性調節

i2c通訊的詳細講解 I2C匯流排簡介

本文介紹了內部積體電路 aka i2c 序列通訊協議的基本特性和突出優點。元件之間的通訊 通訊協議 毫無疑問,電子系統的共同特徵是需要在兩個或三個或十個單獨的元件之間共享資訊。工程師已經開發出許多標準協議,可以幫助不同的晶元成功通訊 當您在微控制器或數字訊號處理器的功能列表中 通訊 下面對縮略語時,...

i2c匯流排時序

一心想踏入linux device driver的世界,想著i2c匯流排相對於usb等其他匯流排較為簡單,就以i2c作為切入點,希望可以逐步理解ldd的設計思想,並能理解其裝置模型的概念。在此對近期於i2c匯流排及驅動原始碼的理解做備忘,以免徒勞。平台友善之臂s70 tiny6410 cpusams...

I2C讀寫問題

a.完全不能進行讀寫 1 通訊協議不正確 有很多的i2c裝置,並不支援所有的i2c協議,同時也不是乙個比較標準的i2c裝置 軟體的通訊時序不正確。2 i2c裝置位址不正確 有很多的i2c裝置的位址是可以通過硬體設定的 也有器件資料提供的資料是錯誤的。3 i2c通訊線上沒有加上拉電阻 由於i2c的從裝...