GPIO API

Chinese, Simplified

1.      概述

原生Android系统并没有提供接口函数访问GPIO,为了调试方便,用户开发app更简单,AmLink平台增加了java层的GPIO API。这里强度下,软件的gpio编号和模块引脚编号是不一致的,请参考第6点说明。

2.      GPIO API

public class GPIO_Pin

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

public GPIO_Pin(int pin)

的构造函数,用于初始化gpiopin参数代表gpio numbergpio引脚号。

public void setModeOUTPUT()

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

public void setModeINPUT()

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

public void setHIGH()

该函数gpio设为输出高。

public void setLOW()

该函数gpio设为输出低。

public int getInputVal()

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


public int setToGpioMode()

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


public int setMuxMode(String mode)

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



public void close()

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



3. jar 库文件

API库文件地址如下:

https://www.temolin.com/doc/134/api-jar


4. 测试APK

测试apk地址如下:

GPIO_Demo.apk.zip

以GPIO42为例(老版本是65),在EVB板上,该GPIO是控制闪光灯的,运行Demo App,在GPIO Num下面输入42,点击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;
    //gpio65 for test 
    GPIO_Pin pin = new GPIO_Pin(42);
    
    //该函数不建议频繁调用。如果已经是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. m100模块引脚对应的GPIO编号及:

m100模块引脚编号和实际软件用的GPIO编号是不同的,对应关系请参考下面附件(第Q列和第S列):

m100_evb_Customer_GPIO_Formal_Application_Spec_v3.xlsx


*如果引脚用作普通的gpio,请参考上述文档备注栏,优先使用推荐的引脚


7. GPIO 模式切换

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

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

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


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


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

8. EVB板上可用GPIO如下图(有GPIO标示的引脚都可用于GPIO)

*下图只适用于evb2, 请注意*

Camera_Header_EVBV3.pngGPIO_Header_EVBV3.png


LCM_Header.png


文档中心

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