I2C设备驱动与设备树配置详解
1. 设备树概念与I2C设备节点示例
设备树(DT)是一种描述硬件设备信息的数据结构,它可以替代传统的硬编码设备配置方式。以下是一个设备树中I2C节点的示例:
i2c0: i2c@cc0e0000 {
compatible = "sirf,marco-i2c";
reg = <0xcc0e0000 0x10000>;
interrupt-parent = <&phandle_to_interrupt_controller_node>
interrupts = <0 24 0>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
这个节点描述了一个I2C控制器,其中 compatible
属性指定了设备的兼容性, reg
属性指定了设备的寄存器地址范围。
2. I2C总线概述
I2C总线是由飞利浦(现在的恩智浦)发明的两线异步串行总线,包括串行数据线(SDA)和串行时钟线(SCL)。它是一种多主总线,但多主模式并不常用。SDA和SCL都是开漏/集电极开路的,需要上拉电阻才能将输出拉高。SCL由主设备生成,用于同步总线上的数据传输。主设备和从设备都可以发送数据,但不能同时进行,因此SDA是双向的。SCL信号也是双向的,因为从设备可以通过保持SCL线低电平来延长时钟。I2C总线的时钟速度范围从10 KHz到100 KHz