视频演示
大彩君最近一直收到客户反馈:
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