I2C驱动实验:向设备树添加 I2C设备的设备节点信息

一.  简介

I2C设备驱动实验以 I.MX6U-ALPHA 开发板上的 AP3216C 这个三合一环境光传感器为例,通过 AP3216C讲解 一下,如何编写 Linux 下的 I2C 设备驱动程序。
因为 IMX6ULL所运行的 内核是支持设备树的,所以,本文来学习如何向设备树文件中添加 I2C设备节点信息,具体就是 添加 AP3216C设备的设备节点信息。

二. I2C驱动实验:AP3216C设备的硬件原理图

打开 AP3216C的硬件原理图,我这里打开 "IMX6ULL_ALPHA_V2.2(底板原理图).pdf",如下:

I2C是有两根线,一个是 SCL为时钟线,一个是SDA为数据线。

上图可以看出,AP3216C使用的 I2C1控制器,除了 I2C的这两条线外,还有一个AP_INT接口,这是个中断接口。本实验不用这个中断功能。

在硬件原理图中搜索 "I2C1_SCL"与 "I2C1_SDA"这两个接口,对应连接芯片的哪个PIN:

可以看出, "I2C1_SCL"使用的 UART4_TXD这个pin, "I2C1_SDA"使用的 UART4_RXD这个pin。

接下来就是找到这两个PIN,向设备树中添加 AP3216C设备的设备节点信息。

具体就是将这两个PIN配置为I2C功能,配置这两个PIN的器属性值,设置一些设备节点信息(例如,最重要的是 compatile属性)。

三.  向设备树添加 I2C设备(AP3216C)的设备节点信息

打开ubuntu系统,通过vscode 打开系统下 之前使用的内核源码(NXP官方提供)工程。

注意:这里开发板使用的Nand_flash版的ALPHA开发板,所以,对应的设备树文件(源文件)为 imx6ull-alientek-nand.dts。

1.  查看 i2c1 控制器节点

设备树文件 imx6ull-alientek-nand.dts有调用到 imx6ull-14x14-evk-gpmi-weim.dts文件,这两个文件中都没有 i2c设备节点,继续追溯到 imx6ull-14x14-evk.dts设备树文件。i2c1 设备节点就在 imx6ull-14x14-evk.dts 设备树文件中。

注意: imx6ull.dtsi设备树文件是 NXP官方编写的,虽然这里也有 i2c设备节点,不能在这个设备树文件中进行更改。

在 imx6ull-14x14-evk.dts设备树文件中查找到 i2c1控制器节点。

2. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值