树莓派4B将GPIO映射到IO口扩展器设备树示例
时间: 2023-07-29 22:07:49 浏览: 254
树莓派+GPIO控制
以下是将树莓派4B的GPIO映射到IO口扩展器的设备树示例:
```
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2711";
fragment@0 {
target = <&gpio>;
__overlay__ {
#address-cells = <2>;
#size-cells = <2>;
ranges;
gpio_expander: expander@20 {
compatible = "maxim,max7328";
reg = <0x20>;
gpio-controller;
#gpio-cells = <2>;
interrupt-parent = <&gpio>;
interrupts = <14 IRQ_TYPE_EDGE_FALLING>;
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
gpio_expander_pins: gpio-expander-pins {
compatible = "gpio-expander-pins";
#gpio-expander-cells = <2>;
#gpio-cells = <2>;
gpio_pin_1: pin@0 {
gpio-expander = <&gpio_expander>;
gpio-offset = <0>;
output-high;
};
gpio_pin_2: pin@1 {
gpio-expander = <&gpio_expander>;
gpio-offset = <1>;
input;
interrupt-on-change;
};
};
};
};
};
```
在这个示例中,我们引入了一个新的设备树片段(fragment),并将其目标设置为GPIO节点。在这个片段中,我们定义了一个名为“expander@20”的新设备,该设备使用了Maxim公司的MAX7328 IO口扩展器。我们还为该设备定义了几个属性,包括寄存器地址、GPIO控制器、中断控制等。
接下来,我们定义了另一个片段,该片段的目标路径设置为根节点。在这个片段中,我们定义了一个名为“gpio-expander-pins”的新设备,该设备充当了GPIO扩展器的代理,将扩展器中的GPIO引脚映射为Linux内核中的GPIO引脚。在这个设备中,我们定义了两个GPIO引脚,gpio_pin_1和gpio_pin_2,它们分别与扩展器上的第一个和第二个GPIO引脚对应。我们还为这些引脚定义了一些属性,例如输入/输出模式、中断模式等。
要使用这个设备树片段,您需要将其添加到原始设备树文件中,并编译成适合您的硬件的设备树二进制文件。然后,您可以在Linux内核启动时加载设备树二进制文件,以使GPIO扩展器可用于您的应用程序。
阅读全文