GPIO API

Chinese, Simplified

1.      概述

原生Android系统并没有提供接口函数访问GPIO,为了调试方便,用户开发app更简单,AmLink平台增加了java层的GPIO API

2.      GPIO API

public class GPIO_Pin

GPIO API都放在GPIO_Pin类里面,该类提供的方法如下:

public GPIO_Pin(int pin,boolean forceMap)

的构造函数,用于初始化gpiopin参数代表模块硬件引脚编号, forceMap 一般请填true。

**对于扩展IO,编号从2000起,(p0_0编号是2000,p1_7是2015,以此类推),

public void setModeOUTPUT()

该函数用来设置gpio工作模式为 输出模式

public void setModeINPUT()

该函数用来设置gpio工作模式为 输入模式

public void setHIGH()

该函数gpio设为输出高。

public void setLOW()

该函数gpio设为输出低。

public int getInputVal()

该函数获取gpio输入值,“1”表示高电平,“0”表示低电平。

public int setPullUp()

该函数使能gpio内部上拉

public int setPullDown()

该函数使能gpio内部下拉

public int disPull()

该函数禁止gpio内部上下拉

public int setToGpioMode()

模块很多引脚是复用的,有些引脚默认是设为gpio模式,有些默认是其它模式如串口等。该函数把引脚设为gpio mode

public int setMuxMode(String mode)

该函数把引脚设为期望的复用模式,mode如取“0”,等同于上面的setToGpioMode()。


public void close()

释放对该gpio的控制。否则会影响其它应用或驱动对该gpio的操作。

*如果运行过程中有“Error: gpio map....”的日志,可以暂时忽略。

3. jar 库文件

API库文件地址如下:

tml_lib.zip

(zip包里的aar和jar功能相同,用一个就行)

4. 测试APK

测试apk地址如下:

gpiotest2.apk.zip


开发板闪光灯控制脚为例,在EVB板上,运行Demo App,在GPIO Num下面输入137(evb5)或2012(evb6),点击GPIO OUT HIGH按钮,该gpio会输出高,闪光灯亮,点击GPIO OUT LOW按钮,该GPIO输出低,灯灭。

5.      参考代码

// GPIO_Pin class is belong to package com.temolin.hardware
import com.temolin.hardware.GPIO_Pin;

private void GPIO_Test() {
    int value;
    //for output; 0 for input 
    int testCase=1; 
    GPIO_Pin pin = new GPIO_Pin(137,true);
    
    //该函数不建议频繁调用。如果已经是gpio mode就不需要调用,调试阶段请加上这句。
    pin.setToGpioMode();
 
    if(testCase){
        //set output mode for gpio
        if(!pin.getPinMode().equals("out")){
            pin.setModeOUTPUT();        
        }
 
        //output high level
        pin.setHIGH();
 
        Thread.sleep(5000);
 
        //output low level
        pin.setLOW();
 
        Thread.sleep(5000);
    }else{
        //set input mode for gpio
        pin.setModeINPUT();
 
        //get input value from gpio
        value = pin.getInputVal();
 
        Log.d(TAG, “GPIO input value is: " + value);
   }  
   pin.close();
}

6. GPIO 模式切换

gpio是复用引脚,即可工作于其它非gpio模式,每个gpio可用的模式也请上述附件Aux Func栏:

Aux Func.0即mode 0一般是gpio模式.

引脚模式一般是初始化的时候设定的,如需修改请告知我们,后续我们会提供工具让用户自行修改。


下面adb命令可查看当前gpio的工作状态:


adb shell "cat /sys/devices/virtual/misc/mtgpio/pin"            // android 6

adb shell "cat /sys/devices/platform/1000b000.pinctrl/mt_gpio"        //android 9


文档中心

以上内容是否对您有帮助?