歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OpenWrt驅動OLED(SSD1306)過程記錄

OpenWrt驅動OLED(SSD1306)過程記錄

日期:2017/3/1 9:10:53   编辑:Linux編程

用ralink自帶的I2C驅動,i2cdetect不能檢測到任何設備,用示波器觀察不到SCLK腳的波形。可能I2C的硬件驅動有問題,這個問題留待以後解決。

先用i2c-gpio-custom測試:

insmod i2c-dev

insmod i2c-gpio-custom bus0=0,1,2

用i2cdetect 0,可以在0x3c檢測到ssd1306,。

在user space控制I2C的時候,需要注意一些細節:

1.可以用open打開I2C設備節點

2.對I2C設備進行寫操作的時候,先調用ioctl(fd,I2C_SLAVE,_i2caddr);

注意:調用write操作的時候,會自動將i2caddr寫入到I2C總線,每次write操作都會自動加入i2caddr,這個細節非常關鍵。通過示波器可以看的非常清楚,例如,下面的代碼片段對0x3c地址進行寫入數據的操作:

uint8_t control = 0x00;uint8_t data = 0x56ioctl(fd,I2C_SLAVE, 0x3C);uint8_t buf[] = {control, data};write(fd,buf,2);
I2C總線上實際輸出了3字節的內容:

我們可以看到,第一個字節是0x78(0x3C<<1)

從第二個字節開始,才是write寫入的內容:0x00,0x56

OpenWrt:Ubuntu 12.04搭建OpenWrt編譯環境 http://www.linuxidc.com/Linux/2016-07/133764.htm

Copyright © Linux教程網 All Rights Reserved