节省1个MCU?大彩串口屏提供PWM/AD/IO/UART扩展口二次开发

扩展口操作演示视频

大彩君最近一直收到客户反馈:

  1. 贵司的明星产品医用级M070能否增加U盘?我们需要大量数据导出和升级。
  2. 我需要屏幕支持2路IO输出,接报警器和报警灯。
  3. 是否支持PWM输出,直接屏幕控制电机或呼吸灯?
  4. 贵司产品能再扩展一路串口输出吗,需要走自定义协议?
  5. 可以AD采集温湿度型号吗?
  6. 你们支持外接矩阵键盘吗?

这一次,研发工程师花1个月精心打造,采用成本增加3毛钱的方式统统完成了大家的期望,产品成功批量上市。

该产品除了给用户省去一个MCU,更方便产品的布线,所有功能都可以使用LUA脚本二次开发,丰富的例程和技术支持助您产品快速升级。

医用级M070产品图片
产品图片
在这里插入图片描述

核心硬件图

产品特点

1、具备组态串口屏所有常规功能,支持U盘功能;
2、新增加的扩展口接口,支持3.3V 电源输出、ADC、串口、PWM、IO输入、IO输出;
3、支持给3.3V外设供电;
4、ADC电压测量,可以检测多达10个按键输入;
5、新产品实现双串口的数据通信,扩展口拥有一个串口,对原来主串口没有影响。新增加的串口在LUA中自定义数据接收和发送;
6、4个IO口,可以根据需求配置输入、输出模式,电平3.3V。

接口介绍

在这里插入图片描述
在这里插入图片描述

该产品除了给用户省去一个MCU,更方便产品的布线,所有功能都可以使用LUA脚本二次开发,丰富的例程和技术支持助您产品快速升级。

下面我们就一起看看如何使用LUA脚本进行二次应用开发。

电源开关

控制PD20使能3.3V输出。可以给外设供电。
核心API函数:

  1. gpio_set_out (pin)
    PIN引脚设置为输出模式
    pin:引脚

  2. gpio_set_value (pin,value)
    设置输出PIN引脚为(高电平1/低电平0)
    pin:引脚
    value:输出电平

代码如程序清单 5-1所示。
程序清单 5-1 电源开关程序
初始化gpio_set_out( POWER_EN_PD20 )–关闭电源gpio_set_value( POWER_EN_PD20,0 )–打开电源gpio_set_value( POWER_EN_PD20,1 )
在这里插入图片描述

ADC输入

可以检测电压值,电压方位支持0-1.77V。使用 status,data = get_key_adc_data() 获取电压值。此例程通过ADC检测按键输入,共10个按键,每个按键按下的电压差值大约是0.17V。
核心API函数:
1、get_key_adc_data()
返回两个参数:
Status:状态,1表示有按键按下,17表示没有按键按下
data:按键按下时表示具体数值,数组范围0-59。按键没有按下时,数值会大于59。

代码如程序清单 5-2所示。
程序清单 5-2 ADC输入检测
local status,data = get_key_adc_data()
在这里插入图片描述

IO输入、输出

4个GPIO,即可以检测输入,也可以用输出高低电平。
核心API函数:

  1. gpio_set_in (pin)
    PIN引脚设置为输入模式
    pin:引脚
  2. gpio_set_out (pin)
    PIN引脚设置为输出模式
    pin:引脚
  3. gpio_set_value (pin,value)
    设置输出PIN引脚为(高电平1/低电平0)
    pin:引脚
    value:输出电平
  4. gpio_get_value (pin)
    获取输入PIN引脚电平(高电平1/低电平0)
    pin:引脚

代码如程序清单 5-3所示。
程序清单 5-3 IO控制

–初始化IO为输出模式gpio_set_out ( IO0_PE5 )–设置IO输出低电平gpio_set_value ( IO0_PE5, 0 )–设置IO输出高电平gpio_set_value ( IO0_PE5, 1 )–初始化IO为输入模式gpio_set_in ( IO0_PE5 )–获取IO电平local io0_num = gpio_get_value ( IO0_PE5 )
在这里插入图片描述

PWM输出

可以设置PWM输出,频率范围0Hz-4MHz,占空比范围0%-100%。
核心API函数:
1、set_pwm(freq,duty)
返回两个参数:
freq:频率,范围0Hz-4MHz。
duty:占空比,范围0%-100%。

代码如程序清单 5-4所示。
程序清单 5-4 PWM控制

local pwm_freq = 100local pwm_duty = 50set_pwm( pwm_freq, pwm_duty )
在这里插入图片描述

串口

使用UART3的TX、RX。在LUA脚本实现串口数据发送、接收、解析。
在本例程中,把扩展口的TX0口和RX0口短接,形成短路,从而自发自收测试。
核心API函数:

  1. uart_set_baudre3(baudrate)
    设置串口3的波特率:串口3为屏幕和串口小助手通讯串口
    baudrate:波特率,支持2400bps~961200bps
  2. on_uart_recv_data3(packet)
    串口3接收数据的回调函数,使用自定义串口指令触发此函数执行:
    packet:接收的字节数组
  3. uart_send_data3(packet)
    通过串口3发送数据
    packet:发送的字节数组,下标从0开始
    代码如程序清单 5-5所示。
    程序清单 5-5 串口测试

–初始化串口3,设置波特率为115200uart_set_baudrate3( 115200 ) --发送数据local us_data={}us_data[0] = 0x5A --数据us_data[1] = 0xA5 --数据uart_send_data3( us_data ) --发送数组-- 串口接收回调函数function on_uart_recv_data3( packet ) local count = #( packet ) --计算长度 local string1 = ‘’ --存放数据的临时变量 for i=0, count do --for循环把数据存到string1 string1 = string1 … string.format( ‘%X’, packet ) end --接收完成,调用string1 print( string1 )end
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值