i.MX6ULL驱动开发 | 22 - 使用PCF8574扩展gpio

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了i.MX6ULL驱动开发 | 22 - 使用PCF8574扩展gpio相关的知识,希望对你有一定的参考价值。

一、PCF8574

PCF8574是一个 8 bit IO扩展芯片,使用两线I2C通信接口,提供了8位准双向的IO口(P0-P7),包括具有高电流驱动能力的锁存输出,用于直接驱动led。每个准双向I/O都可以用作输入或输出,而无需使用数据方向控制信号。 上电时,所有IO的电平默认是高电平。

1. 引脚描述

引脚图如下:

引脚描述如下:

2. 功能描述

I2C从机地址如下:

二、Linux内核中自带的驱动

Linux对于IO扩展芯片的驱动在drivers/gpio/路径下,比如对于PCF8574芯片,驱动文件为 gpio-pcf857x.c 文件。

可以看到该驱动支持的芯片如下:

控制该文件的宏定义为 CONFIG_GPIO_PCF857X,使能该宏:

也可以使用menuconfig修改,重新编译内核,这样驱动模块就被编译进内核了:

make -j16

三、添加设备树节点

本文中我们将PCF8574芯片接到imx6ull的i2c1上。

1. 查看i2c引脚

2. 添加pcf8574节点

节点描述格式,需要查看绑定文档:Documentation/devicetree/bindings/gpio/gpio-pcf857x.txt

添加pcg8574节点:

3. 重新编译设备树

make dtbs

四、测试

1. 查看系统原有可用GPIO

cat /sys/kernel/debug/gpio

若debug目录下是空的,则表示debugfs未挂载,查看文章:Linux内核开启DebugFS以及查看debug信息(/sys/kernel/debug及debugfs)

2. 加载驱动

使用新的内核和设备树启动系统,查看设备树节点是否存在:

从内核编译出的模块中找到drivers/gpio/gpio-pcf857x.ko,复制到开发板上,加载:

insmod gpio-pcf857x.ko

3. 查看新系统可用GPIO

4. 使用扩展IO点灯

申请GPIO:

echo 504 > /sys/class/gpio/export

设置GPIO方向:

echo out > /sys/class/gpio/gpio504/direction

输出高电平:

echo 1 > /sys/class/gpio/gpio504/value

输出低电平:

echo 0 > /sys/class/gpio/gpio504/value

.

以上是关于i.MX6ULL驱动开发 | 22 - 使用PCF8574扩展gpio的主要内容,如果未能解决你的问题,请参考以下文章

i.MX6ULL驱动开发 | 36 - 注册spilcd为framebuffer设备并使用lvgl测试

i.MX6ULL驱动开发 | 36 - 注册spilcd为framebuffer设备并使用lvgl测试

i.MX6ULL驱动开发1——字符设备开发模板

i.MX6ULL驱动开发 | 18 - 使用中断方式检测按键

i.MX6ULL驱动开发 | 15 - Linux UART 驱动框架

i.MX6ULL驱动开发 | 10 - 修改LCD驱动点亮LCD显示小企鹅logo