13. 钛极OS之TiGPIO

钛极OS之TiGPIO

 

General Purpose Input Output (通用输入/输出)简称为GPIO,或总线扩展器,能够提供额外的控制和监视功能,具体可参考https://baike.baidu.com/item/gpio或https://en.wikipedia.org/wiki/General-purpose_input/output。

TiJOS Framework提供TiGPIO来支持GPIO功能,其将GPIO按照port分组,共支持256组,组号范围0-255,即,port0-port255,其中每组内按照pin划分16条线,线号范围0-15,即,pin0-pin15,每条线都支持指定模式的单独设置。

 

Java包

tijos.framework.devicecenter

 

TiGPIO工作模式定义

工作模式 说明
INPUT_FLOATING 浮空输入模式,默认模式
INPUT_PULLUP 上拉输入模式
INPUT_PULLDOWN 下拉输入模式
OUTPUT_OD 开漏输出模式
OUTPUT_PP 推挽输出模式
IO_FLOATING_OD 开漏输出复合浮空输入模式


TiGPIO事件模式定义

事件模式只有具备输入模式的pin能支持。

 

方法 说明
TiGPIO open(int portID, int... pinIDs) 静态方法,通过指定port和pin集合打开指定GPIO,返回TiGPIO对象
void close( ) 关闭当前TiGPIO对象
void setWorkMode(int pinID, int mode) 设置当前TiGPIO对象指定pin的工作模式
void setEventParameters(int pinID, int evt, int captureFilter) 设置当前TiGPIO对象指定pin的事件参数,捕获周期单位:us
readPort( ) 读当前TiGPIO对象port数据,16位数据
writePort(int value) 写当前TiGPIO对象port数据,16位数据
readPin(int pinID) 读当前TiGPIO对象指定pin电平
writePin(int pinID, int levelValue) 写当前TiGPIO对象指定pin电平


TiGPIO类中他方法的技术说明请参考TiJOS JDK framework说明文档。

 

TiGPIO对象创建与销毁

TiGPIO对象的创建需要调用open静态方法,传入指定port和pin集合参数,返回创建的接口对象。

TiGPIO对象的销毁需要调用close方法。

 

  1. ...
  2. int gpioPort0 = 0; //定义接口,port0
  3. int gpioPin0 = 0;  //定义pin集合
  4. int gpioPin1 = 1;
  5. TiGPIO gpio0 = TiGPIO.open(gpioPort0, gpioPin0, gpioPin1); //打开port0,返回TiGPIO接口对象
  6. ...
  7. ...
  8. ...
  9. gpio0.close(); //销毁当前对象

复制代码


TiGPIO模式设置

TiGPIO模式通过setWorkMode方法设置,设置参数为推挽输出模式和上拉输入模式。

 

  1. ...
  2. gpio0.setWorkMode(gpioPin0, TiGPIO.OUTPUT_PP); //推挽输出
  3. gpio0.setWorkMode(gpioPin1, TiGPIO.INPUT_PULLUP); //上拉输入
  4. ...

复制代码

注意:输入输出以及上下拉模式受平台特性限制,设置时须了解硬件平台特性。

 

TiGPIO事件设置

TiGPIO事件通过setEventParameters方法设置,设置参数为事件类型和最小捕获周期。

最小捕获周期:指定周期内只能捕获一次事件,如:捕获周期为10us,在这个时间内发生了5次事件,则只能捕获第一次,其他事件自动丢弃。

事件的分发:TiJOS事件通过事件中心eventcenter统一管理和分发,TiGPIO设置了事件之后需要在事件中心注册GPIO类型事件监听回调。

 

  1. ...
  2. gpio0.setEventParameters(gpioPin1, TiGPIO.EVENT_FALLINGEDGE, 0);
  3. ...
  4. TiEventCenter.getEventCenter().addListener(new TiGPIOEvent()); //向事件中心添加GPIO事件监听
  5. ...

复制代码

  1. public class TiGPIOEvent implements ITiEventListener {
  2.       @Override
  3.       public TiEventType getType() {
  4.             return TiEventType.GPIO;
  5.       }
  6.  
  7.       @Override
  8.       public void onEvent(ITiEvent evt) {
  9.       TiGPIOEvent event =  (TiGPIOEvent)evt;
  10.       System.out.println("pin:"event.getPin()+" event:"+event.getEvent()); //打印发生事件的

复制代码

事件中心的详细使用方法请参考tijos.framework.eventcenter说明。

注意:事件类型受平台特性限制,设置时须了解硬件平台特性。

 

TiGPIO输入输出

TiGPIO通过readPort、writePort和readPin、writePin完成输入输出操作。

 

  1. ...
  2. int value = gpio0.readPort(); //读接口数值,每个接口为16位
  3. int level = gpio0.readPin(gpioPin1); //读取pin1电平,1:高电平   0:低电平
  4. ...
  5. gpio0.writePort(0x01); //向接口写数值0x01
  6. gpio0.writePort(0x00); //向接口写数值0x00
  7. ...
  8. gpio0.writePin(gpioPin0, 1); //向pin0写高电平
  9. gpio0.writePin(gpioPin0, 0); //向pin0写低电平
  10. ...

复制代码


更多详细介绍请见钛云物联官网:www.tijos.net

你可能感兴趣的:([钛极OS专栏])