I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线,它只需要两根线SDA(串行数据线)和SCL(串行时钟线)即可在连接于总线上的器件之间传送信息。I2C总线上可以挂载很多设备,比如ELF 1开发板,I2C1总线上挂载有电容屏的触摸芯片,温度传感器,rx8010时钟芯片,I2C2上挂载有光线传感器,NAU88C22音频解码芯片。下面我们以温湿度传感器为例,介绍如何添加I2C设备。
硬件原理
IOMUX配置
温湿度传感器挂载在I2C1总线上,I2C1数据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,我们看到原来的设备树文件已经添加了pinctrl_i2c1子节点,而且选择的引脚与UART4_TX_DATA、UART4_RX_DATA一致,所以此处无需修改,
效果如下:
添加设备节点
查看arch/arm/boot/dts/imx6ull-elf1-emmc.dts文件,其实已经有了I2C1节点,可以看到其下有两个子节点,这两个子节点是挂载在I2C总线上的具体设备,我们没有用到,这里可以注释掉:
添加如下内容:
| aht20@38{
compatible = "elf,aht20"; reg = <0x38>; status = "okay"; }; |
添加后效果如下:
添加AHT20驱动
一、将ELF 1开发板资料包
863