本帖最后由 fengye5340 于 2015-2-28 12:57 编辑
基于ST-emWIN的实时数据采集系统
一、应用背景
在一些控制项目中,需要对温度,压力及其它模拟量进行采集,采集到的数据能够实时的显示出来,而采用上位机界面实现成本较高,通常要额外的电脑或者其它硬件,采用TFT液晶屏是一种比较理想的方式,从目前常用的3.2寸/4.3寸/5.7寸/7寸触摸屏都能很好的实现实时数据显示,实现硬件的成本低。
二、功能描述
本实时数据采集系统实现的功能如下:
1、 采用ST_emWIN图形库来实现GUI界面,其中用到了按钮,图表,文字,列表项等多种控件。emWin图形库由德国SEGGER公司开发,可为图形LCD设计提供高级支持。它适用单任务或 是多任务系统环境。架构基于模块化设计,由不同的模块中的不同层组成。包括液晶驱动模块,内存设备模块,窗口系统模块,窗口控件模块,反锯齿模块和触摸屏 及外围模块。其主要特性包括丰富图形库,多窗口、多任务机制,窗口管理及丰富窗口控件类(按钮、检验框、单/多行编辑框、列表框、进度条、菜单等),多字 符集和多字体支持,多种常见图像文件支持,鼠标、触摸屏支持,灵活自由配制等特性。
在移植emWIN之前,需要做好LCD驱动,这里采用的是SSD1289控制器的3.2寸LCD模块。因为NUCLEO-F411RE开发平台上面的MCU为64引脚,采用16位方式和LCD通信,这里用PB0-PB7和PC0-PC7组合的方式实现16位驱动。 整个实时数据采集系统的GUI界面由3个窗口组成。最上面是状态窗口,在里面实现了标题和时间显示。下面是主窗口,在主窗口里面又分为两个部分:一部分是四个按钮,分别是【开始采集】、【停止采集】、【存储数据】、【时间设置】。因为没有增加SD卡部分,这里无法使用XBF字体来显示汉字,用英文字符表示。另一部分是波形显示窗口,左边是幅度值:0-3.3V。带网格显示,最多可以显示4096个点。【开始采集】和【停止采集】的回调函数相对简单,分别由定时器控制波形数据的显示与停止。第三个窗口是数据记录窗口,它被隐藏在底部,由按钮【存储数据】的回调函数进行触发到顶部进行显示。数据记录窗口又由两个部分组成。左边是三个按钮,分别是【增加数据记录】【删除数据记录】和【确认返回】,右边是数据记录表,每一条记录由【当前时间头+采集数据】组成。若增加SD卡驱动后,可以将记录实时保存到SD卡中。最后一个按钮是【时间设置】,它在回调函数中,建立一个对话框,用于实现对实时时钟的【时:分:秒 】进行修改,确定后,即可实时显示修改好的时间。具体的界面如下:
图:波形数据显示
图:数据存储界面
图:时间设定界面
2、RTC实时时钟:STM32F4系列的实时时钟相对简单,比STM32F1系列更加直观和容易设置。在NUCLEO-F411RE上实现了年月日时分秒的数据,在界面上仅显示了时分秒。
3、 ADC数据采集:因为是用于演示,用F411RE自带ADC模块实现一路DMA方式的数据采集。在存储数据过程中,采用了“乒乓双缓冲”方式实现数据存储。
4、预留SD卡存储功能:这个数据采集系统,要实现长时间数据存储,在不借助上位机的情况下,必须用SD卡来实现。因为没时间做扩展板,所以硬件稍麻烦一点,软件上实现更快一些。建议存储空间在4G以上,利用定时器控制,每隔100ms向SD卡保存一次数据。
5、额外功能:既然在TFT上移植了emWIN,可以轻松实现其它一些小应用,比如简易计算器。
三、硬件设计
此设计最大限度的利用了本身开发平台,没有外扩资源,仅用了一个外部可调电阻,使用了定时器,ADC,串口,SPI等资源。硬件比较简单:
主要设计在于软件。
四、软件设计
软件采用的是标准固件库进行开发,使用的是MDKV5.13版本,跟以前相比,有一些变化。
整个工程文件如下:
在成功移植emWIN之前,要自己完成一些驱动。
有了这些,emwiN移植就比较容易了。工程文件截图:
使用的是最新的STemWIN5.26固件库,程序最主要的内容是GUI_APP文件,这个是多窗口和控件回调函数文件。因为使用了3个窗口,1个对话框窗口,多个控件,所以回调函数众多。这里仅截图部分,以说明:
1、创建状态窗口
2、状态窗口的回调函数
3、创建主窗口
4、主窗口的回调函数
5、创建记录窗口:
6、记录窗口的回调函数
五、演示视频
六、总结
通过此次对STM32F411RE的评估,看到了使用emWIN时,在STM32F1和STM32F4性能上的一些差异。通过软件的使用和摸索,也看到了使用标准固件库和CubeFX软件的差异。在ST大力推广 CubeFX的今天,逐步替换标准固件库也要慢慢启动了。
下面是一些其他效果附图:
附件:
1、完整设计文档描述。
【Nucleo设计分享】基于ST-emWIN的实时数据采集系统 .pdf
(1.35 MB)
2、工程代码核心代码
核心代码文件.rar
(12.98 KB)
|