RK3568-GPIO扩展-TCA9539/PCA9539驱动加载
简介
TCA9539/PCA9539 是一款 I2C 接口的 IO 扩展芯片,很多需要IO不够的场合都需要使用 IO 扩展芯片;
在 RK3568 平台加载驱动
- 在 /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 */ };
- 在使用 make ARCH=arm64 menuconfig 进入内核配置界面,使能 IO 扩展的驱动支持
- 重新编译内核烧录到开发板中,硬件没有问题的情况下,就可以在系统的 /sys/class/gpio 中查看扩展的GPIO
扩展出来的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 //取消导出引脚,仅在不再使用该引脚时使用,正常不使用该指令 //其他输入管脚以此类推