RK平台计算GPIO对应的整型数

简介: RK平台计算GPIO对应的整型数

GPIO是比较常用的资源,比如说控制LED灯亮灭,控制LCD上电,控制模块的复位电路,做外设的中断脚等等,这些都有对GPIO的操作和使用,所以说,GPIO开发是驱动开发中必不可少的操作,而且也是最基础的东西。


我们在驱动开发过程中,有时候我们不能确定自己使用和申请的gpio是否对了,我们可以把它对应的数值给打印出来,通过对比对应的数值可以确定我们具体使用的是哪个数值;下面依旧是拿rk平台来举例:



这里使用的是 GPIO7_C5 来举例。首先,需要计算出代表 GPIO7_C5 的值,算法如下:

GPIO7_C5 = 7x32 + (C-A)x8 + 5 = 7x32+2x8+5 = 245;


(注:最前面和 32 相乘的数字因为是 gpio7,所以是 732。如果是 gpio3,那就是 332;

括号里面的 A、B、C、D 分别代表数值 0、1、2、3,在计算时候分别对应去减即可。

这里因为是 C5,所以用 C-A,如果是 B3,就是 B-A;最后的+5 是因为是 GPIO7_C5,

如果是 GPIO7_C4,那么最后就+4。)


此外,我们还可以通过以下两个命令来查看确认(其他平台可能节点不同,不过名称基本上是pinmux-pins):


cat /d/pinctrl/pinctrl/pinmux-pins 或者 cat /sys/kernel/debug/pinctrl/pinctrl/pinmux-pins

cat /sys/kernel/debug/gpio //查看GPIO当前的申请使用情况和当前的电平状态


com-all-enable = <&gpio4 RK_PC5  GPIO_ACTIVE_LOW>;

代表 gpio4 C5 口为低电平

RK_PC5 为宏定义 取值范围为0~31

目录
相关文章
|
存储
华为机试HJ15:求int型正整数在内存中存储时1的个数
华为机试HJ15:求int型正整数在内存中存储时1的个数
|
编译器 C++
结构体的使用与内存计算/对齐数计算
(1)平台原因: 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特 定类型的数据,否则抛出硬件异常 (2)性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。
89 0
|
C++
C++读取一行内个数不定的整数的方式
C++读取一行内个数不定的整数的方式
151 0
wustojc1003设计函数求2个整数的最大值
wustojc1003设计函数求2个整数的最大值
49 0
计算二进制中1的个数
计算二进制中1的个数
62 0
|
存储 机器学习/深度学习
求一个整数存储在内存中的二进制中1的个数;例如15有4个1(三种方法详解)
求一个整数存储在内存中的二进制中1的个数;例如15有4个1(三种方法详解)
140 0
求一个整数存储在内存中的二进制中1的个数;例如15有4个1(三种方法详解)
求两个数二进制中不同位的个数
题目内容:两个int(32)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子: 7
|
C语言
复习C部分:1.设置关机程序 2.函数(strcpy,memset----替换函数;库函数;写一个函数,用该函数实现比较两个数的最大值;写一个数,交换两个整数类型的值)
复习C部分:1.设置关机程序 2.函数(strcpy,memset----替换函数;库函数;写一个函数,用该函数实现比较两个数的最大值;写一个数,交换两个整数类型的值)
90 0