RK3288GPIO计算方法
来自ARM Wiki
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