I2C總線是由Philips公司開(kāi)發(fā)的一種簡(jiǎn)單、雙向二線制同步串行總線,它只需要兩根線SDA(串行數(shù)據(jù)線)和SCL(串行時(shí)鐘線)即可在連接于總線上的器件之間傳送信息。I2C總線上可以掛載很多設(shè)備,比如ELF?1開(kāi)發(fā)板,I2C1總線上掛載有電容屏的觸摸芯片,溫度傳感器,rx8010時(shí)鐘芯片,I2C2上掛載有光線傳感器,NAU88C22音頻解碼芯片。下面我們以溫濕度傳感器為例,介紹如何添加I2C設(shè)備。
硬件原理


IOMUX配置
溫濕度傳感器掛載在I2C1總線上,I2C1數(shù)據(jù)IIC1_SDA和時(shí)鐘IIC1_SCL,分別對(duì)應(yīng)的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 |
然后打開(kāi)設(shè)備樹(shù)文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts,我們看到原來(lái)的設(shè)備樹(shù)文件已經(jīng)添加了pinctrl_i2c1子節(jié)點(diǎn),而且選擇的引腳與UART4_TX_DATA、UART4_RX_DATA一致,所以此處無(wú)需修改,
效果如下:

添加設(shè)備節(jié)點(diǎn)
查看arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,其實(shí)已經(jīng)有了I2C1節(jié)點(diǎn),可以看到其下有兩個(gè)子節(jié)點(diǎn),這兩個(gè)子節(jié)點(diǎn)是掛載在I2C總線上的具體設(shè)備,我們沒(méi)有用到,這里可以注釋掉:

添加如下內(nèi)容:
????????aht20@38{
compatible = "elf,aht20";
reg = <0x38>;
status = "okay";
}; |
添加后效果如下:

添加AHT20驅(qū)動(dòng)
一、將ELF 1開(kāi)發(fā)板資料包