【安富莱二代示波器教程】第3章 示波器设计—功能划分和准备工作

完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=45785

第3章        示波器设计—功能划分和准备工作

本章节主要为大家讲解示波器的系统框架设计。

3.1 功能划分

3.2 任务优先级安排

3.3 按分类封装各种变量

3.4 选择编译器最高等级优化

3.5 制作工程模板

3.6   总结

3.1  功能划分

示波器的实现大致可以分为模拟信号的采集,波形处理,波形刷新和测量值显示,波形的控制调节和波形的存储浏览。将这些功能的实现落实到实际硬件上,详情如下:

1、模拟信号采集

STM32自带3个独立的ADC,分别是ADC1,ADC2和ADC3。实现双通道示波器,我们需要用到两个ADC,另外一个ADC用于简易电压采集。实际的使用中由于要采样频率可调,需要配置成定时器触发。虽然每个通道最高速度只有2.4Msps的采样率(实际应用中是配置到2.8Msps),但是每秒的采集的数据高达4.8MB左右,所以还得配合DMA一起使用,大大降低CPU的负担。

2、波形处理

波形处理就是指FFT,FIR,RMS,平均值,最大值,最小值和峰峰值的计算,这个功能需要交给一个单独的任务去做。

3、波形刷新和测量值显示

这个功能通过emWin任务就可以实现。

4、波形的控制调节

由于需要按键和触摸都可以调节,所以单独安排一个任务。

5、波形的存储浏览

波形的浏览继续放在emWin任务里面实现, 而波形的存储记录需要放在一个单独的文件系统任务里面。

下面通过框图将这几个功能做个规划:

上面是初步的功能划分,有了这些划分后,实际程序设计的时候就会方便很多,在这个基础上再进一步调整。具体任务之间的通信机制在我们实现了各个功能后再实现。

3.2   任务优先级安排

首先emWin任务一定要是除了空闲任务,统计任务以外最低优先级的,因为emWin极其占用系统资源,而且时间长,如果这个任务设置为高优先级,会直接影响低优先级任务的执行。

DSP任务一定要是优先级最高的,因为采集的数据要实时处理。

触摸和按键任务,以及文件系统任务的优先级谁高谁低都没有关系。

知识点拓展

关于任务优先级的安排,在我们RTX操作系统教程第8章的8.2小节有些拓展:

http://forum.armfly.com/forum.php?mod=viewthread&tid=14837

同时在我们FreeRTOS操作系统教程的第13章的13.2小节有些拓展:

http://forum.armfly.com/forum.php?mod=viewthread&tid=17658

3.3   按分类封装各种变量

示波器的设计需要很多变量进行逻辑管理,从设计之初就需要将变量分类进行结构体封装,方便以后的维护升级。这一步至关重要,实际中差不多要定义上百个变量,如果不进行分类管理,以后的升级维护将非常麻烦。

这种方式还有一个好处是方便我们将F429的CCM RAM空间分配给这些变量使用。使用CCM RAM的好处是速度比通用RAM要快些,缺点是这部分空间不支持DMA操作。初次使用的用户比较容易在这个地方犯错误。所以在使用局部变量时,切勿将局部变量用于DMA传输。

3.4  选择编译器最高等级优化

为了发挥STM32F429的最高性能,需要大家开启最高等级优化和时间优化,即下面两个选项:

Optimization选择Level 3最高优先等级,并且开启Optimize for Time时间优化。

知识点拓展

关于如何使用MDK实现代码最小优化和性能最佳优化可以看这个帖子中KEIL做的专题教程:

http://forum.armfly.com/forum.php?mod=viewthread&tid=1794

3.5  制作工程模板

关于工程模板推荐如下三个例子:

1、V6-1016_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(uCOS-III)

这个例子包含了uCOS-III + STemWin + FatFS。

2、V6-1017_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(FreeRTOS)

这个例子包含了FreeRTOS + STemWin + FatFS。

3、V6-1018_STemWin提高篇实验_视频播放器(RTX版本,仅支持MDK4.74)

这个例子包含了RTX + emWin + RL-FlashFS。

当然,这三个只是推荐的,大家实际制作不必限制。也可以自己新建一个工程,但要包含RTOS,GUI和FS。另外这三个例程中原有的功能删掉即可,仅留下程序模板。整理好模板后,开启MDK的最高等级优化3和时间优化,测试系统是否正常运行。测试正常后就可以作为模板了。

知识点拓展

工程模板推荐例子的下载地址:

http://forum.armfly.com/forum.php?mod=viewthread&tid=23687

3.6  总结

工程设计初期的任务划分,任务优先级安排以及变量的统一管理还是比较重要的,这样各个任务可以在一个合理的框架下工作。不过设计的不好也没有关系,随着各个任务功能的实现,逐步修改完善即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

如何查看电脑核数和线程数 原

右键计算机->设备管理器->处理器(如下图,处理器下有几个即为几核,按这种方式来看我的电脑为八核,其实并不是这样,下面我会解释)

10430
来自专栏美团技术团队

顶会论文:纠删码存储系统中的投机性部分写技术

本文已被USENIX'17年度技术大会录用,此处为中文简译版。 阅读英文论文完整版请点击:Speculative Partial Writes in Erasu...

740100
来自专栏机器之心

教程 | 如何使用Docker、TensorFlow目标检测API和OpenCV实现实时目标检测和视频处理

选自TowardsDataScience 作者:Léo Beaucourt 机器之心编译 参与:李诗萌、路雪 本文展示了如何使用 Docker 容器中的 Ten...

49860
来自专栏刘君君

Rest Notes-表述性状态移交(Representational State Transfer ,REST)

20850
来自专栏SAP最佳业务实践

想学FM系列(13)-SAP FM模块:预算结构(4)-预算结构配置-层次结构

4)激活多级预算结构 ? 指定财务管理范围激活多级预算结构。如果激活后,在某一年度想要不激活多层级预算结构,需加一条配置,从该这一年度不激活,“激活”参数不选即...

52770
来自专栏平凡文摘

你真的很熟分布式和事务吗?

21120
来自专栏数据小魔方

数据地图系列8|R语言版数据地图(下)

今天要跟大家分享的是数据地图系列的第八篇——R语言版数据地图(下),分省(市级)热力地图。 步骤与昨天分享的中国热力地图步骤基本一致,只是需要调用的数据文件和需...

46680
来自专栏精讲JAVA

你真的很熟分布式和事务吗?

微吐槽 hello,world. 不想了,我等码农,还是看看怎么来处理分布式系统中的事务这个老大难吧! 本文略长,读者需要有一定耐心,如果你是高级码农或者架构师...

22090
来自专栏CSDN技术头条

轻博客始祖Tumblr:哈希以支撑2.3万Blog请求/秒

【编者按】Tumblr是目前全球最大的轻博客网站,也是轻博客网站的始祖。当下已有超过1.96亿博客,930亿帖子,每秒2万3千请求。近日,该公司网站可靠性工程师...

23450
来自专栏AI科技大本营的专栏

8月精选Python开源项目Top10

【导读】过去一个月里,我们对近 250 个 Python 开源项目进行了排名,并挑选出热度前 10 的项目。这份清单的平均 github star 数量高达 1...

22550

扫码关注云+社区

领取腾讯云代金券