5718車載顯示控制器外接乙個i2c環境光感測器,用來採集外部環境的光亮,從而自動調節控制器的lcd背光max44009環境光感測器提供i²c數字輸出
資料手冊:
max44009.pdf
使用的是3.0.2的版本
i2ctransfer工具修改對應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
疑問: 暫存器位址是怎麼確定的、暫存器資料連續讀多少個位元組又是怎麼確定的
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的從裝...