RK3288GPIO计算方法

来自ARM Wiki
Tangdapeng讨论 | 贡献2020年6月30日 (二) 19:43的版本 (Tangdapeng移动页面3288GPIO计算方法RK3288GPIO计算方法
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

RK3288 GPIO

  • RK3288在不同的系统版本下计算方式略有不同

Android 5.1

  • 计算模板:

将引脚定义转换成以下形式
GPIOX_YZ
我们得到3个参数X、Y、Z;Y在引脚定义是以字母形式存在需要替换成数字,对应关系如下

A = 0
B = 1
C = 2
D = 3
  • 算法:
(X*32)+(Y*8)+Z

计算示例:

GPIO1_A7   (1*32)+(0*8)+7 = 39
GPIO1_B1   (1*32)+(1*8)+1 = 41
GPIO2_C4   (2*32)+(2*8)+4 = 84
GPIO3_D0   (3*32)+(3*8)+1 = 120
GPIO3_D6   (3*32)+(3*8)+6 = 126

Android 7.1& Linux

  • 计算模板:

将引脚定义转换成以下形式
GPIOX_YZ
我们得到3个参数X、Y、Z;Y在引脚定义是以字母形式存在需要替换成数字,对应关系如下

A = 0
B = 1
C = 2
D = 3
  • 当X=0时(引脚定义以GPIO0开头的GPIO)
  • 算法:
(Y*8)+Z

计算示例:

GPIO0_A7   (0*8)+7 = 7
GPIO0_B4   (1*8)+4 = 12
GPIO0_C2   (2*8)+2 = 18
  • 当X>0时(以GPIO0以外形式开头的GPIO)
  • 算法:
24+((X-1)*32)+(Y*8)+Z

计算示例:

GPIO1_A7   24+((1-1)*32)+(0*8)+7 = 31
GPIO1_B1   24+((1-1)*32)+(1*8)+1 = 33
GPIO2_C4   24+((2-1)*32)+(2*8)+4 = 76
GPIO3_D0   24+((3-1)*32)+(3*8)+0 = 112
GPIO3_D6   24+((3-1)*32)+(3*8)+6 = 118