GPIO 子系统重要概念

GPIO 子系统重要概念

要操作 GPIO 引脚,先把所用到的引脚配置为 GPIO 功能,通过Pinctrl 子系统来实现。然后根据设置引脚方向(输入还是输出)、读取值 —— 获得电平状态,写入值—— 输出高低电平。

以前我们通过寄存器来操作 GPIO 引脚,即使LED 驱动程序,对于不同的板子它的代码也完全不同。

当BSP 工程师实现了GPIO 子系统后,我们就可以

  1. 在设备树里面指定GPIO 引脚。
  2. 在驱动代码中:使用GPIO 子系统的标准函数获得 GPIO 、设置GPIO 方向、读取/设置GPIO 的值。

这样的驱动代码,将与单板无关。

设备树中指定引脚

几乎在所有的ARM 芯片中,GPIO 都分为几组,每组若干个引脚,所以在使用GPIO 子系统之前,我们就要确定它是哪组的,组里的哪一个的。
在设备树中, GPIO 组就是一个 GPIO Controller ,这通常都由芯片厂家设置好,我们要做的是找到它的名字,比如gpio1,然后指定要用它里面的那个引脚,比如 <&gpio1 0>。

下图是一些芯片的 GPIO 控制器节点,他们一般都是厂家定义好,在xxx.dtsi文件中
在这里插入图片描述
我们暂时需要关心的属性有2个

gpio-controller;
#gpio-cells=<2>;
  • gpio-controller 表示这个节点是一个 GPIO Controller ,它下面有很多引脚。
  • #gpio-cells=<2> 表示这个控制器下每一个引脚要用2个32位的数字(cell)来描述。

为什么要用 2 个数?其实使用多个 cell 来描述一个引脚,这是 GPIO Controller 自己决定的。比如可以用其中一个 cell 来表示那是哪一个引脚,用另一个 cell 来表示它是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值