FT5X06 触摸芯片
FT5X06 触摸芯片除了 I2C 部分,还有另外两个 GPIO 分别为中断引脚和复位引脚。
关于设备树设置:
1. 在iic总线下挂载:
&i2c1 {
status = "okay"; //开启iic1myft5x06: my-ft5x06@38 { compatible = "my-ft5x06";reg = <0x38>; //设备的iic地址reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>; //定义了设备的复位引脚,连接到GPIO0 的 RK_PB6 引脚,电平为低电平有效。interrupt-parent = <&gpio3>;//指定中断的父节点为 GPIO3interrupts-gpio = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>;//定义了设备的中断引脚,连接到 GPIO3 的 RK_PA5 引脚,电平为低电平触发。interrupts = <RK_PA5 IRQ_TYPE_LEVEL_LOW>;//进一步描述了中断的触发方式,为电平低电平触发pinctrl-names = "default";// 指定了设备使用的默认针脚配置。pinctrl-0 = <&myft5x06_pins>;//这里指定的 pinctrl 节点名为 myft5x06_pins};
};
2. 对 pinctrl 节点进行追加,追加内容如下所示:
&pinctrl {myft5x06 {myft5x06_pins: myft5x06-pins {rockchip,pins =<0 RK_PB6 RK_FUNC_GPIO &pcfg_pull_none>,// 0:表示GPIO控制器编号(这里指gpio0)// RK_PB6:该控制器下的具体引脚编号// RK_FUNC_GPIO:引脚功能为通用GPIO(而非其他复用功能如I2C、SPI等)// &pcfg_pull_none:引用的引脚电气配置(此处为无上下拉)<0 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;};};
}
3. GPIO 属性(如 reset-gpios
)通常不需要额外 “追加”。只需要在节点中说明哪些是复位或者中断对应的引脚和触发方式即可。
- GPIO 子系统是 “软件驱动硬件操作”(API 主导),设备树只是提供引脚 “地址”;
- pinctrl 子系统是 “设备树定义硬件配置”(设备树主导),软件只需 “引用” 配置即可。
具体来说,GPIO 子系统:依赖软件 API 操作,如:gpiod_get_optional从设备树中获取,gpiod_direction_output
配置引脚为输出模式 GPIO 描述符等。设备树仅提供引脚信息如 reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>。
但是,
pinctrl 子系统:依赖设备树配置,无需显式调用 API。
驱动代码:
1. 主功能驱动: