大彩君最近一直收到客户反馈:
1. 贵司的明星产品医用级M070能否增加U盘?我们需要大量数据导出和升级。
2. 我需要屏幕支持2路IO输出,接报警器和报警灯。
3. 是否支持PWM输出,直接屏幕控制电机或呼吸灯?
4. 贵司产品能再扩展一路串口输出吗,需要走自定义协议?
5. 可以AD采集温湿度型号吗?
6. 你们支持外接矩阵键盘吗?
这一次,研发工程师花1个月精心打造,采用成本增加3毛钱的方式统统完成了大家的期望,产品成功批量上市。
该产品除了给用户省去一个MCU,更方便产品的布线,所有功能都可以使用LUA脚本二次开发,丰富的例程和技术支持助您产品快速升级。
![pYYBAGJebG-AAsb_ABBDvC54iao357.png](https://file.elecfans.com/web2/M00/3E/00/pYYBAGJebG-AAsb_ABBDvC54iao357.png)
产品图片
![pYYBAGJebWKAcVUeAAMg5iblncQ406.jpg](https://file.elecfans.com/web2/M00/3E/01/pYYBAGJebWKAcVUeAAMg5iblncQ406.jpg)
核心硬件图
产品特点
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 )
![pYYBAGJebbWASCknAADq6_zJGDs365.jpg](https://file.elecfans.com/web2/M00/3E/01/pYYBAGJebbWASCknAADq6_zJGDs365.jpg)
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()
![poYBAGJebcyAUGjCAACTPlCTQ_A690.jpg](https://file.elecfans.com/web2/M00/3D/FC/poYBAGJebcyAUGjCAACTPlCTQ_A690.jpg)
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 )
![poYBAGJebd2AIyTBAAFTS11PxIg067.jpg](https://file.elecfans.com/web2/M00/3D/FC/poYBAGJebd2AIyTBAAFTS11PxIg067.jpg)
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 )
![pYYBAGJebeuAEnEHAACrm2LJR54283.jpg](https://file.elecfans.com/web2/M00/3E/01/pYYBAGJebeuAEnEHAACrm2LJR54283.jpg)
串口
使用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 = '' --存放数据的临时变量 fori=0, countdo --for循环把数据存到string1 string1 = string1 .. string.format( '%X', packet ) end --接收完成,调用string1 print( string1 )end
![poYBAGJebfqAV9DOAAIUKqTUB64748.jpg](https://file.elecfans.com/web2/M00/3D/FD/poYBAGJebfqAV9DOAAIUKqTUB64748.jpg)
-
单片机
+关注
关注
6012文章
44173浏览量
624644 -
PWM
+关注
关注
114文章
4964浏览量
210940 -
uart
+关注
关注
22文章
1170浏览量
100470 -
io扩展
+关注
关注
0文章
13浏览量
3166
发布评论请先 登录
相关推荐
5G千兆双核物联网模块 OpenWrt二次开发
![5G千兆双核物联网模块 OpenWrt<b class='flag-5'>二次开发</b>](https://file1.elecfans.com/web2/M00/EC/13/wKgaomZdX2CAAV7fAAKGNC2I66Y186.png)
大彩科技COF系列2.4寸串口屏发布!
![大<b class='flag-5'>彩</b>科技COF系列2.4寸<b class='flag-5'>串口</b><b class='flag-5'>屏</b>发布!](https://file1.elecfans.com//web2/M00/C5/AE/wKgaomX34N-ANMhcAAR-I6XfGE4582.png)
节省IO的小技巧:GD32 MCU如何使用一个GPIO实现串口半双工收发
![<b class='flag-5'>节省</b><b class='flag-5'>IO</b>的小技巧:GD32 <b class='flag-5'>MCU</b>如何使用一<b class='flag-5'>个</b>GPIO实现<b class='flag-5'>串口</b>半双工收发](https://file1.elecfans.com/web2/M00/C5/5B/wKgaomXzpsiAH5-tAAAqGsdHXv0568.png)
个性化定制,提升运营效率:SAP二次开发引领企业数字化转型
ARM架构MT7981方案 2+8口千兆5G路由器--HC-G80采用openwrt系统可二次开发
二次电池的特征 一次电池与二次电池的区别
「科聪二次开发平台」移动机器人开发,只需3步!
![「科聪<b class='flag-5'>二次开发</b>平台」移动机器人<b class='flag-5'>开发</b>,只需3步!](https://file1.elecfans.com/web2/M00/AE/6A/wKgZomVIVRCACOQRAADNjhh_26Y773.png)
ZQWL-USBCANFD二次开发通讯协议V1.04
![ZQWL-USBCANFD<b class='flag-5'>二次开发</b>通讯协议V1.04](https://file1.elecfans.com/web2/M00/A8/1D/wKgZomUT5GqAXjPUAACLOR0RhxM428.png)
SAP Business One二次开发:解锁潜力,实现定制化需求
![SAP Business One<b class='flag-5'>二次开发</b>:解锁潜力,实现定制化需求](https://file1.elecfans.com/web2/M00/A2/3E/wKgZomT7JLCAVnLDAAL3G5l6sk0079.png)
评论