I2C總線是由Philips公司開發(fā)的一種簡單、雙向二線制同步串行總線,它只需要兩根線SDA(串行數(shù)據(jù)線)和SCL(串行時鐘線)即可在連接于總線上的器件之間傳送信息。I2C總線上可以掛載很多設備,比如ELF?1開發(fā)板,I2C1總線上掛載有電容屏的觸摸芯片,溫度傳感器,rx8010時鐘芯片,I2C2上掛載有光線傳感器,NAU88C22音頻解碼芯片。下面我們以溫濕度傳感器為例,介紹如何添加I2C設備。
硬件原理
IOMUX配置
溫濕度傳感器掛載在I2C1總線上,I2C1數(shù)據(jù)IIC1_SDA和時鐘IIC1_SCL,分別對應的PAD NAME為,UART4_TX_DATA、UART4_RX_DATA。
在arch/arm/boot/dts/imx6ul-pinfunc.h中找到它們的宏定義,分別如下:
MX6UL_PAD_UART4_TX_DATA__I2C1_SCL
MX6UL_PAD_UART4_RX_DATA__I2C1_SDA |
然后打開設備樹文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,我們看到原來的設備樹文件已經(jīng)添加了pinctrl_i2c1子節(jié)點,而且選擇的引腳與UART4_TX_DATA、UART4_RX_DATA一致,所以此處無需修改,
效果如下:
添加設備節(jié)點
查看arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,其實已經(jīng)有了I2C1節(jié)點,可以看到其下有兩個子節(jié)點,這兩個子節(jié)點是掛載在I2C總線上的具體設備,我們沒有用到,這里可以注釋掉:
添加如下內容:
????????aht20@38{
compatible = "elf,aht20"; reg = <0x38>; status = "okay"; }; |
添加后效果如下:
添加AHT20驅動
一、將ELF 1開發(fā)板資料包