i2c5 {
/omit-if-no-ref/
i2c5m4_xfer: i2c5m4-xfer {
rockchip,pins =
/* i2c5_scl_m4 */
<2 RK_PB6 9 &pcfg_pull_none_smt>,
/* i2c5_sda_m4 */
<2 RK_PB7 9 &pcfg_pull_none_smt>;
};
};
i2c6 {
/omit-if-no-ref/
i2c6m2_xfer: i2c6m2-xfer {
rockchip,pins =
/* i2c6_scl_m2 */
<2 RK_PC3 9 &pcfg_pull_none_smt>,
/* i2c6_sda_m2 */
<2 RK_PC2 9 &pcfg_pull_none_smt>;
};
};
i2c7 {
/omit-if-no-ref/
i2c7m1_xfer: i2c7m1-xfer {
rockchip,pins =
/* i2c7_scl_m1 */
<4 RK_PC3 9 &pcfg_pull_none_smt>,
/* i2c7_sda_m1 */
<4 RK_PC4 9 &pcfg_pull_none_smt>;
};
};
这段配置代码是针对Rockchip平台的设备树(Device Tree)配置,用于定义I2C(Inter-Integrated Circuit)总线接口的引脚配置。设备树是一种数据结构,用于描述硬件的组织和配置,使得操作系统能够了解和管理硬件资源。下面是对这段配置的详细解释:
- i2c5节点:
i2c5m4_xfer
子节点定义了I2C5接口在M4核心上的引脚配置。rockchip,pins
属性列出了I2C5的SCL(时钟线)和SDA(数据线)所使用的引脚。<2 RK_PB6 9 &pcfg_pull_none_smt>
定义了SCL引脚,其中2
表示引脚所属的GPIO组(Group B),RK_PB6
是具体的引脚编号,9
表示引脚的功能模式(I2C5 SCL),&pcfg_pull_none_smt
是引脚配置,表示不使用上拉/下拉电阻,并且适用于SMT(Surface Mount Technology)封装。<2 RK_PB7 9 &pcfg_pull_none_smt>
定义了SDA引脚,配置与SCL相同,只是引脚编号变为RK_PB7
。
- i2c6节点:
i2c6m2_xfer
子节点定义了I2C6接口在M2核心上的引脚配置。- SCL引脚配置为
<2 RK_PC3 9 &pcfg_pull_none_smt>
,SDA引脚配置为<2 RK_PC2 9 &pcfg_pull_none_smt>
,配置方式与i2c5类似,只是引脚编号和GPIO组不同。
- i2c7节点:
i2c7m1_xfer
子节点定义了I2C7接口在M1核心上的引脚配置。- 这里SCL引脚配置为
<4 RK_PC3 9 &pcfg_pull_none_smt>
,SDA引脚配置为<4 RK_PC4 9 &pcfg_pull_none_smt>
。 - 值得注意的是,这里的GPIO组编号变为
4
,表明这些引脚位于另一个GPIO组上。
/omit-if-no-ref/
注释可能是一个指令,用于在设备树编译过程中,如果对应的I2C接口没有被其他部分引用,则省略这部分配置。这有助于减少最终设备树文件的大小,提高系统效率。
总的来说,这段配置定义了三个I2C接口的引脚配置,包括它们所使用的GPIO组、引脚编号、功能模式以及引脚配置(如是否使用上拉/下拉电阻)。这些信息对于操作系统正确初始化和使用这些I2C接口至关重要。