常用IO设备节点详解

描述

本文介绍如何通过EsDA开发套件,快速熟悉常用IO设备节点及其使用方法,大大缩短了用户对EsDA的学习开发周期。

 

本文选用EPC6450-AWI开发板,以及图形化设计工具AWFlow Designer进行测试讲解,对常用IO设备节点和使用方法进行详细说明。

开发板  常用节点简介本文将对gpio引脚电平操作的gpio节点,gpio_in节点,gpio_out节点三个节点,对led灯操作的led节点,对按键操作的button节点,对adc通道采集的adc节点进行详细描述。1. gpio节点1.1 查看帮助文档

在搜索框中输入gpio关键字即可检索出gpio节点,点击gpio节点即可看到右边弹出gpio节点的帮助文档界面,里面包含节点的简介以及属性,输入和输出的相关参数介绍。用户可以在此操作下找寻相关节点的帮助文档去了解节点的相关参数。

开发板

此节点将属性值“GPIO序号”配置为GPIO输入模式。因该节点为filter类型节点,所以有1输入1输出,当本节点输入值msg.payload不为0时,则读取属性值“GPIO序号”的电平值作为输出;若输入值msg.payload为0则不将读取到的引脚电平值进行输出传递,此时无输出。1.2 属性

  • 名称:可用于索引查找本节点;
  • 显示名称:用于画布上显示的名称,仅做显示;
  • GPIO序号:对需要操作的GPIO引脚序号进行选定,此引脚序号与目标板的丝印一一对应;
  • 模式:设置GPIO序号引脚的输入模式,float是浮空输入,pull up是输入上拉,pull down是输入下拉。

1.3 输入

msg.payload :不为0则表示读取属性值“GPIO序号”的电平值,为0则不将读取到的电平值进行输出传递给下一个节点。

所有节点的输入参数都是由上级节点的输出提供的,且通常为msg对象携带的对应属性参数。

1.4 输出

msg.payload:输出的数据,需要注意的是只有当输入的msg.payload不为0时才有输出,0表示读取属性值“GPIO序号”的电平值为低电平,1表示读取到的是高电平。

1.5 加载demo示例

在相关节点的帮助文档旁边有一个示例,点击后则可以看到对应的节点demo示例,选中查看的demo示例,并加载到项目中即可查看。开发板1.6 自定义demo1.6.1 绘制流图添加timer,fscript,gpio,fscript节点到画布中并连线如下图。

开发板

1.6.2 节点配置timer节点周期性的触发fscript节点,需要更改周期性的时长可双击timer节点,修改属性值“定时周期”即可。而fscript节点作为gpio的上级节点,那么传递的则是gpio的输入值,在此希望能周期性的读取电平值,所以msg.payload的值不为0即可,gpio的上级节点fscript的内容:

  •  

msg.payload = 666

双击gpio节点,选择目标板对应丝印的GPIO序号,在此选择的模式是浮空输入如下图。
开发板

gpio节点的消费者fscript节点作为输出,直接打印gpio节点的输出值显示电平值即可,gpio节点的消费者fscript节点内容如下:

  •  

print("read gpio level value is "+msg.payload)

将此流图下载到目标板后,连接调试串口后,打开串口助手,改变UTX5的电平值可得到如下显示:

开发板2. gpio_in节点

将GPIO配置为输入模式,并轮询读取电平状态且将其作为输出值。与gpio节点功能类似,都是配置为输入模式且可以将读取到的电平值作为输出,只不过gpio_in是不间断循环的输出 ,并且gpio节点还加了一个是否开启读电平的输入。

2.1 属性

名称:可用于索引查找本节点;

显示名称:用于画布上显示的名称,仅做显示;

GPIO序号:对需要操作的GPIO引脚序号进行选定,此引脚序号与目标板的丝印一一对应;

模式:设置GPIO序号引脚的输入模式,float是浮空输入,pull up是输入上拉,pull down是输入下拉;

轮询:是否开启以设定值去轮询的读取GPIO序号的电平状态,off则关闭用设定值去轮询读取电平状态而使用默认的50ms去轮询读取,on则以设定值去轮询读取电平状态值;

轮询间隔(ms):以设定值去轮询读取电平状态,设置生效的前提是轮询需为on。

2.2 输出

  • msg.payload:属性值“GPIO序号”的电平状态值,0为低电平,1为高电平;

msg.topic:固定输出gpio_in字符串。

pump类型节点无输入,相关类型节点介绍可查看AWFlow节点开发指南进行更多的了解。

2.3 使用方法

2.3.1 绘制流图

添加timer,fscript,log节点到画布中并连接如下图所示:

开发板

2.3.2 节点配置双击gpio_in节点,选择目标板对应丝印的GPIO序号,在此选择的模式是浮空输入,开启以设定值2000ms去轮询读取gpio电平状态值如下图所示。开发板

gpio_in节点的消费者节点fscript是对gpio_in的输出参数进行输出显示,内容如下:

  •  

msg.payload = "read gpio status is " + msg.payload + "\n" + "msg.topic:"+msg.topic

用log节点对上一级节点的msg.payload输出到调试窗口进行显示。

2.3.3 下载验证

将此流图以下载运行的模式下载到目标板后,可在AWFlow Designer的调试窗口查看到如下信息:

开发板

3. gpio_out节点

配置为GPIO输出,将输入的msg.payload的值设置为GPIO的电平值。

3.1 属性

名称:可用于索引查找本节点;

显示名称:用于画布上显示的名称,仅做显示;

GPIO序号:对需要操作的GPIO引脚序号进行选定,此引脚序号与目标板的丝印一一对应;

模式:设置GPIO输出模式,push pull为推挽输出模式,open drain为开漏输出模式;

GPIO初始状态:设置GPIO初始输出的状态值,0为低电平,1为高电平。

3.2 输入

msg.payload:设置属性GPIO序号的输出电平值,0为低电平,1为高电平,2为电平翻转。

sink类型节点无输出。

3.3 使用方法

3.3.1 绘制流图添加timer,fscript,gpio_out节点到画布中,并连线如下图所示。

开发板

3.3.2 节点配置timer节点周期性定时触发fscript节点,这里的timer的属性定时周期值配置为3000ms,而fscript节点作为gpio_out节点的上一级节点,主要内容是设置gpio_out的输入参数,内容如下:

  •  
  •  
  •  
  •  
  •  
  •  
  •  

if(((msg.payload/1000)%2)==0) { msg.payload = 0 print("low level\n")}else { msg.payload = 1 print("high level\n")}

双击gpio_out节点,选择目标板对应丝印的GPIO序号,在此选择的模式是推挽输出。

开发板

3.3.3 下载验证

下载流图到目标板后,可以用万用表去查询GPIO序号对应的引脚电平值可知,电平是周期性的翻转。

4. led节点

该节点主要有两种模式,一种是设置led灯的状态,一种是设置快闪灯。

4.1 属性

名称:可用于索引查找本节点;

显示名称:用于画布上显示的名称,仅做显示;

led设备名称:Led设备名称,可根据不同的目标板对应丝印进行设备选择;

初始状态:对选中的led的设备设置初始状态值,0为led灯的初始状态为灭,1为led灯的初始状态为亮。

4.2 输入

  • msg.device_name:led设备名称,将与属性值“led设备名称”进行对比,若不同则该节点功能无效;
  • msg.payload:模式一,设置led的状态值。0为关闭led灯,1为开启led灯,2为翻转led灯;
  • msg.timer:模式二,快闪灯。该输入参数为设置定时闪烁的时间,单位ms,若为0则关闭快闪,大于0则设置闪烁间隔时间;

msg.fast_blink:模式二,快闪灯。设置定时快闪的次数,在定时闪烁周期中的快闪次数,输入参数msg.timer与msg.fast_blink需同步设置才能生效。

sink类型节点无输出。

4.3 设置灯状态示例

4.3.1 绘制流图

添加timer,fscript,led节点到画布中并连线如下图所示:

开发板

4.3.2 节点配置

timer节点周期性的去设置led灯的状态值,fscript节点作为led的上一级节点,其内容主要是对led设备状态的设置:

  •  

msg.payload = 2

双击led节点,在属性“led设备名称”的下拉框中选择对应丝印的LED设备如下:

开发板

4.3.3 下载验证下载流图后可看到RUN灯周期性的3s翻转一次。

4.4 快闪灯示例

4.4.1 绘制流图

添加gpio_in,fscript,led节点到画布,并连线如下图所示:

开发板

4.4.2 节点配置

双击gpio_in节点,本节点主要作用就是运行流图后只触发一次fscript节点,所以要开启定时轮询,且轮询间隔需设置尽量大一点如下图所示:

开发板

fscript节点作为led的上一级节点,主要内容是led相关的输入参数,内容如下:

  •  
  •  
  •  
  •  
  •  
  •  

if(msg.payload == 0) { msg.timer = 2000 msg.device_name = "/dev/led_run" msg.fast_blink = 2 print("fast led\n")}

双击led节点,在属性“led设备名称”的下拉框中选择对应丝印的LED设备如下:

开发板

4.4.3 下载验证

下载流图到目标板后,对gpio_in节点配置的引脚进行电平置低,5s内切换到高电平后即可看到led灯2s闪烁2次的实验现象。

5. button节点5.1 属性

  • 名称:可用于索引查找本节点;
  • 显示名称:用于画布上显示的名称,仅做显示;
  • 对应的GPIO编号:对需要操作的GPIO引脚序号进行选定,此引脚序号与目标板的丝印一一对应;
  • 触发条件:按钮按下时的触发条件,fall表示按钮按下的触发条件为GPIO下降沿触发,up表示按钮按下的触发条件为GPIO上升沿触发。

5.2 输出msg.payload :按钮按下状态输出为on,松开状态输出为off,在初始化完成以及按钮状态发生改变的时候会输出当前的状态。

pump类型节点没有输入。

5.3 使用方法

5.3.1 绘制流图

添加button,fscript,led节点到画布中并连线如下图所示:

开发板

5.3.2 节点配置

双击button节点,对需要操作的引脚进行选择如下:开发板

fscript节点作为button的消费者节点,内容是button的相关输出参数:

  •  
  •  
  •  
  •  
  •  

if(msg.payload == "on"){    msg.payload = 1}else if(msg.payload == "off") {    msg.payload = 0}

双击led节点,选择闪灯的led设备。

5.3.3 下载验证

下载流图后,对button配置的按钮进行按下和松开的操作可以看到相应led灯的效果。

6. adc节点

6.1 属性

  • 名称:可用于索引查找本节点;
  • 显示名称:用于画布上显示的名称,仅做显示;
  • 通道号:进行采样的ADC通道号,可根据不同的目标板对应丝印进行设备选择;
  • 采集次数:ADC 通道对ADC值的采集次数;
  • 采样率:ADC通道号采样率(每秒ADC的采样次数)。

6.2 输出

  • msg.payload:通道采样的最终电压值(mv);
  • msg.vref:基准电压;
  • msg.bits:ADC通道位数;

msg.rate:ADC通道采样率。

pump类型节点没有输入。

6.3 使用方法

6.3.1 绘制流图

添加adc,fscript,log节点到画布中并连线。

开发板

6.3.2 节点配置

双击adc选择对应丝印的ADC设备如下:

开发板

fscript节点作为adc的消费者节点,其内容主要是adc的相关输出参数:

  •  

msg.payload = "adc value is "+msg.payload

log节点对上一级fscript节点进行输出显示。6.3.3 下载流图

下载流图后,对adc配置的通道号进行不同电压值的采样结果如下:

开发板

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分