• 您的位置:首页   >  关于我们  >  新闻动态

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

    发布人:大彩科技发布日期:2022-04-12


    视频演示


    大彩君最近一直收到客户反?。?/span>

    1. 贵司的明星产品医用级M070能否增加U盘?我们需要大量数据导出和升级。

    2. 我需要屏幕支持2路IO输出,接报警器和报警灯。

    3. 是否支持PWM输出,直接屏幕控制电机或呼吸灯?

    4. 贵司产品能再扩展一路串口输出吗,需要走自定义协议?

    5. 可以AD采集温湿度型号吗?

    6. 你们支持外接矩阵键盘吗?






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

    订购型号:DC80480M070_3111_0T(电阻)、DC80480M070_3111_0C(电容), 价格非常美丽。 

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







    图片

    产品图片


    图片

    核心硬件图








    产品特点





    1、具备组态串口屏所有常规功能,支持U盘功能;


    2、新增加的扩展口接口,支持3.3V 电源输出、ADC、串口、PWM、IO输入、IO输出;


    3、支持给3.3V外设供电;


    4、ADC电压测量,可以检测多达10个按键输入;


    5、新产品实现双串口的数据通信,扩展口拥有一个串口,对原来主串口没有影响。新增加的串口在LUA中自定义数据接收和发送;


    6、4个IO口,可以根据需求配置输入、输出模式,电平3.3V。











    接口介绍





    功能简介,如表格5-1所示。

    表格 5-1 功能介绍

    功能

    IO口/使能脚

    介绍

    3.3V

    PD20

    可以控制3.3V输出,电流500mA。

    ADC输入

    不需要配置IO,有专门的LUA API

    分辨率是6bit,采样率是250Hz,支持电压0-1.77V。

    IO输入、输出

    PE5、PE9、PE10、PD21

    可以输入/输出,电平3.3V。

    PWM输出

    不需要配置IO,有专门的LUA API

    频率范围0Hz-4MHz,占空比范围0%-100%。

    串口

    UART3

    LUA自定义串口发送、接收,电平3.3V。


    接口介绍,如表格5-2所示。

    序号

    定义

    描述

    参考图

    1

    ADC

    模数转换接口

    图片

    2

    RX0

    串口输入,接用户TXD

    3

    TX0

    串口输出,接用户RXD

    4

    PWM

    PWM输出

    5

    IO0

    IO0输入/输出端

    6

    IO1

    IO1输入/输出端

    7

    IO2

    IO2输入/输出端

    8

    IO3

    IO3输入/输出端

    9

    3V3OUT

    电源输出端

    10

    GND

    电源地



    该产品除了给用户省去一个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 = 100
    local     pwm_duty = 50
    set_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,设置波特率为115200
    uart_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[i] )
        end
        --接收完成,调用string1
        print( string1 )
    end




    彩票在线购买