RK3568-GPIO扩展-TCA9539/PCA9539驱动加载

简介

TCA9539/PCA9539 是一款 I2C 接口的 IO 扩展芯片,很多需要IO不够的场合都需要使用 IO 扩展芯片;

在 RK3568 平台加载驱动

  1. 在 /home/fdkj/Neardi-3568-SDK-Linux-V2.2/Neardi-3568-SDK-Linux-V2.2/kernel/arch/arm64/boot/dts/rockchip/rk3568-neardi-linux-ld120-base.dtsi 文件中找到挂GPIO扩展芯片的IIC总线的设备树节点,增加 GPIO扩展芯片的节点信息
&i2c5{
    status="okay";
    tca9539: tca9539@74 {
        status = "okay";
        compatible = "nxp,pca9539";//支持NXP/TI等厂家的9539芯片
        reg = <0x74>; //GPIO扩展芯片的I2C从机地址
        gpio-controller;
        #gpio-cells = <2>;
        interrupt-parent = <&gpio0>;
        interrupts = <RK_PC2 IRQ_TYPE_EDGE_FALLING>;
        reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_LOW>;
    };
    /* roger change end */
};
  1. 在使用 make ARCH=arm64 menuconfig 进入内核配置界面,使能 IO 扩展的驱动支持
    RK3568-GPIO扩展-TCA9539/PCA9539驱动加载_第1张图片
  2. 重新编译内核烧录到开发板中,硬件没有问题的情况下,就可以在系统的 /sys/class/gpio 中查看扩展的GPIO
    RK3568-GPIO扩展-TCA9539/PCA9539驱动加载_第2张图片

扩展出来的GPIO使用方法

从 /sys/class/gpio 中可以查看扩展的 IO ;gpiochip495 就是扩展出来的 IO ,因为 PCA9539 是 16 个IO扩展芯片,所有 GPIO495~GPIO510 ,可以看到另外一个GPIO其实的数字是 GPIO511,正好验证系统给pca9539 分配了 16 个GPIO。

  • 将GPIO设置成输入
echo 495 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio495/direction
cat  /sys/class/gpio/gpio495/value    //查看 IO 值
echo 495 > /sys/class/gpio/unexport //取消导出引脚,仅在不再使用该引脚时使用,正常不使用该指令
//其他输入管脚以此类推
  • 将GPIO设置成输出
echo 503 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio503/direction
echo 0 > /sys/class/gpio/gpio503/value //设置 IO 输出为低电平
echo 1 > /sys/class/gpio/gpio503/value //设置 IO 输出为高电平
echo 503 > /sys/class/gpio/unexport   //取消导出引脚,仅在不再使用该引脚时使用,正常不使用该指令
//其他输入管脚以此类推

你可能感兴趣的:(RK35XX系列调试记录,linux,rk3568,pca9539)