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驱动开发 | 18 - 使用中断方式检测按键