TB-RK3399pro开发板上引出了通用IO口,位于40pin针脚中间,如图所示:
用表笔测量GPIO0_A5、GPIO0_A6上面的电压,均为低电平,现将GPIO0_A6设置为高电平输出。
查询参考寄存器手册Address Maping部分:
- GPIO0基地址为0xFF720000
- DDR(方向寄存器)偏移地址0x0004, 所以寄存器地址为0xFF720004
- DR(设置高低电平)偏移地址为0x0000, 所以寄存器地址为0xFF720000
从而得到我们需要的GPIO0_A的相关寄存器地址:
- 控制方向的寄存器DDR地址为0xFF720004
- 控制电平的寄存器DR地址为0xFF720000
若为GPIO0_B时,DR为0xFF720001;GPIO0_C时,DR为0xFF720002,均以此类推。
DR地址0xFF720000,下面的八个位的前七位对应着GPIO0_A[6:0],没有GPIO0_A7,参考手册都有这些说明。
命令行下输入以下命令查看开发板上此地址的值:
[root@localhost ]# io -4 -l 4 0xff720000
得到:ff720000: 00001d93 ,即GPIO0_A对应的DR值为0x93,二进制表示为:1001 0011
从右往左数,5、6位均为0,即表示低电平,这与我们的电表测量一致。
cd命令到/sys/class/gpio目录下,再进入gpio6,可以通过查看value和direction得到此io口的电平与方向信息。
[root@localhost ]# echo 1 > value
将value原本的值改为1,即可将电平置高。
在上层目录的gpio55之类的对应的具体IO名字为,GPIO (55/32) _ (55%32/8)(55%32%8 ),即GPIO1_C7
反过来,GPIO4_C5,为gpio(4*32+2*8+5),gpio149
官方资料下载:官方资料下载地址
参考:adb 命令查看/控制 rk3399 GPIO 输入/输出状态RK3399用户空间IO控制RK3326 RK3399 GPIO寄存器操作指南