大菜君近期不断收到客户的反馈:
1、你们公司的明星产品医疗级M070可以加装U盘吗?我们需要大量的数据导出和升级。
2.我需要屏幕支持2个IO输出来连接警报器和警报灯。
3.是否支持PWM输出直接控制电机或屏幕呼吸灯?
4.你们的产品可以扩展其他串口输出吗?您需要使用自定义协议吗?
5、AD可以采集温湿度模型吗?
6. 支持外接矩阵键盘吗?
这次,研发工程师花了一个月的时间精心打造,以增加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、新产品实现双串口数据通信。扩展口只有1个串口,对原有主串口没有影响。新增串口,可以在LUA中自定义数据接收和发送;
6. 4个IO口,输入输出模式可根据需要配置,电平3.3V。
界面介绍
功能介绍,如表5-1所示。
表5-1 功能介绍
功能
IO端口/使能引脚
介绍
3.3V
PD20
模数转换器输入
无需配置IO,有专用的LUA API
分辨率为6bit,采样率为250Hz,支持电压为0-1.77V。
IO输入输出
PE5、PE9、PE10、PD21
可输入/输出,电平3.3V。
脉宽调制输出
无需配置IO,有专用的LUA API
频率范围0Hz-4MHz,占空比范围0%-100%。
串行端口
串口3
LUA自定义串口发送和接收,电平为3.3V。
接口介绍如表5-2所示。
序列号
定义
描述
参考图片
1
模数转换器
模数转换接口
2
接收0
串口输入,连接用户TXD端
3
TX0
串口输出,连接用户RXD端子
4
脉宽调制
脉宽调制输出
5
IO0
IO0输入输出端子
6
IO1
IO1输入输出端子
7
IO2
IO2输入输出端子
8
IO3
IO3输入输出端子
9
3V3输出
功率输出
10
接地
电源地
该产品除了为用户节省一个MCU外,更方便产品接线。所有功能都可以使用LUA脚本进行二次开发。丰富的例程和技术支持,帮助您快速升级产品。
我们来看看如何使用LUA脚本进行二次应用开发。
转变
控制PD20使能3.3V输出。可为外围设备供电。
核心API函数:
1.gpio_set_out(引脚)
PIN引脚设置为输出模式
针:针
2.gpio_set_value(引脚,值)
设置输出PIN脚为(高电平1/低电平0)
引脚: 引脚值: 输出电平
代码如程序清单5-1所示。
程序列表5-1 电源开关程序
--初始化gpio_set_out(POWER_EN_PD20)--关闭电源gpio_set_value(POWER_EN_PD20,0)--打开电源gpio_set_value(POWER_EN_PD20,1)
模数转换器输入
可检测电压值,电压方向支持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-2ADC 输入检测
本地状态,data=get_key_adc_data()
IO输入输出
4个GPIO可检测输入输出高低电平。
核心API函数:
1.gpio_set_in(引脚)
PIN引脚设置为输入模式
pin: 引脚2.gpio_set_out(引脚)
PIN引脚设置为输出模式
pin: 引脚3.gpio_set_value (引脚,值)
设置输出PIN脚为(高电平1/低电平0)
pin:引脚值:输出电平4.gpio_get_value(引脚)
获取输入PIN引脚电平(高电平1/低电平0)
引脚: 引脚
代码如清单5-3 所示。
程序表5-3IO 控制
--初始化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电平本地io0_num=gpio_get_value(IO0_PE5)
脉宽调制输出
PWM输出可设置,频率范围0Hz-4MHz,占空比范围0%-100%。
核心API函数:
1. set_pwm(频率,占空比)
返回两个参数:
freq:频率,范围0Hz-4MHz。 duty:占空比,范围0%-100%。
代码如清单5-4 所示。
程序表5-4PWM 控制
本地pwm_freq=100 本地pwm_duty=50set_pwm( pwm_freq, pwm_duty )
串行端口
使用UART3的TX和RX。在LUA脚本中实现串口数据的发送、接收、解析。
本例程中,将扩展口的TX0口和RX0口短接,形成短路,从而进行自发自收测试。
核心API函数:
1.uart_set_baudre3(波特率)
设置串口3波特率:串口3是屏与串口助手之间的通信串口。
baudrate: 波特率,支持2400bps~961200bps2.on_uart_recv_data3(packet)
串口3接收数据的回调函数,使用自定义串口指令触发该函数的执行:
3.uart_send_data3(packet) packet:收到的字节数组
通过串口3发送数据
packet:发送的字节数组,下标从0开始。代码如程序清单5-5所示。
程序列表5-5 串口测试
--初始化串口3,设置波特率为115200uart_set_baudrate3( 115200 ) --发送数据本地us_data={}us_data[0]=0x5A --数据us_data[1]=0xA5 --数据uart_send_data3( us_data ) --发送array -- 串口接收回调函数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