STM32示波器 信号发生器

关于stm32的示波器,网上以经有很多了。这里还是想把自己的设计思想发表出来。这个项目已经准备了很久。这里首先要感谢以前的团队,非常感觉陈师和覃总两位经验丰富的嵌入式工程师,获得了不少多方面的考虑。如果不是工作调整等原因,很有可能会出产品。但最后没有做完深感遗憾。这里发表下我的设计流程,希望能给做示波器的朋友有一定的帮助。也是让自己对此项目的一个总结。

 

本示波器有效测量频率0.1 ~ 100KHz

双通道

集成信号发生器

时间轴每格 1,2,5递增范围:2us ~ 1s

时间轴每屏12格

硬件结构:

  1. 主芯 stm32zet6
  2. 触摸屏     SSD1289  320*240 RGB565
  3. AD:  STM32内部ADC 1MHz采样率

           双通道。

 (设计扩展外部高速AD,上述原因没能得以完成)

  1. DA:内部DAC  20K以内正弦波,锯齿波和方波。
  2. 平台:uCOSIII,
  3. 图形:uCGUI

软件设计:

设计思想

整个的数据流程如下:

 

 

数据采样分为三个部分:

  1. 高速采样(2us ~ 20us 包括20us);

在这之间以20us为例:

20us每格 * 12格 = 240us每屏。

采样率为1m也就是1us只可以采样到1个数据,上面提到了屏是320宽。

所以在这种情况下,1个数据在显示屏会对应1个或几个点。

         因此在2~20us之间都用最大采样率1MHz采样。

         采用连续采样模式。

 

  1. 中速采样(50us ~ 20ms 包括20ms);

在这之间的时间段中,只要采样周期调整和所选时间轴相同,就可以采样点与屏上的点一一对应。

采用定时器触发采样模式。

 

  1. 低速采样(大于等于50ms时)。

参考了海太科等品牌的示波器,在这种低速情况下在屏上循环显示(显示屏收尾相接)。

同样采用定时器触发采样模式。

 

 

数据解析

  1. 波形参数:周期,占空比,最大值,最小值等等。

在获得采样数据后的数据参数的获得就比较简单了。

这里需要提的就是采样点与显示点的对应关系

 

在中速,低速采样:

采样点显示点一一对应。

 

在高速采样时:

不管时间轴为多少采样周期都是1us;

采样点与显示点的对应关系为 (320屏宽)/(时间轴 * 12格 / 1us)

 

  1. 寻找触发点:

低速采样不进行触发,因为是循环显示。

在高速和中速采样 三倍屏幕的数据,与触发线比较获得匹配的一段数据进行显示。

 

 

信号发生器

这部分就很简单了,先计算出一个周期的波形放在数组中,用DMA循环更新DA就可以了。

 

显示:

这部分就直接上图吧:

 

 

 

 

这里两段视屏:

http://www.tudou.com/programs/view/xhzx85TF-Is/

http://www.tudou.com/programs/view/-GiTeVanFhk/

转载于:https://www.cnblogs.com/hiker-blogs/archive/2013/01/05/2846175.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FlashPaper安装及使用方法

FlashPaper安装及使用方法 一、FlashPaper的安装 第一步:下载FlashPaper2.2安装包 点击下面链接下载FlashPaper2.2 FlashPaper2.2下载 第二步:安装FlashPaper2.2 将zip压缩包解压至磁盘的某一文件夹中,注意,此版本FlashPaper为了能…

redis的lua脚本解决原子操作

使用一个简单的工具类 代码示例:

redis集群异步复制造成锁丢失(分布式锁)

在redisConfig配置类注入bean Configuration public class RedisConfig {Beanpublic RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){RedisTemplate<String, Object> template new RedisTemplate<String, Object>();templat…

redis内存默认值调整

redis一般设置物理内存的3/4 redis.conf配置文件修改maxmemory这个值来调整redis的内存大小 info memory命令可用查看redis内存使用情况 info可用查询redis下的各种命令

mysql支持的存储引擎

SHOW ENGINES; 默认支持innodb&#xff0c;其他存储引擎都不支持事务 innodb存储引擎的架构&#xff1a;

滤镜混合应用

混合滤镜使用&#xff1a;创建一个滤镜对象&#xff1b; 创建一个数组&#xff0c;并将滤镜的对象添加到该数组当中&#xff1b; 利用影片剪辑的filters属性&#xff0c;将数组当中的效果赋予该影片剪辑即可12345678import flash.display.Bitmap; import flash.display.…

Java Swing 树状组件JTree的使用方法【图】

树中特定的节点可以由 TreePath&#xff08;封装节点及其所有祖先的对象&#xff09;标识&#xff0c;或由其显示行&#xff08;其中显示区域中的每一行都显示一个节点&#xff09;标识。展开 节点是一个非叶节点&#xff08;由返回 false 的 TreeModel.isLeaf(node) 标识&…

实测java 与php运行速度比较

java如下 public class aa{ public static void main(String[] args){ System.out.println(System.currentTimeMillis()"----"); int a0; int i; for(i0;i<10000000;i){ a; } System.out.println(System.currentTimeMillis()); } } php如下 <? echo microtime…

HA双机热备配置

HA&#xff08;高可用性集群&#xff09;当主机处于工作状态时&#xff0c;从机处于休眠状态&#xff0c;当主机宕机时&#xff0c;从机便会开始工作&#xff0c;让用户几乎感觉不到服务的中断&#xff0c;类似于网络路由配置中的备份。当主机存活时&#xff0c;所有的资源全在…

我的服装DRP之开发感悟

先向各位拜个晚年。 今年过年期间都在想DRP的事&#xff0c;很多朋友也联系我&#xff0c;讨论技术问题的、谋求合作的、分析行业前景的、让我提供源码和数据库的都有。再次谢谢朋友们的关心。目前来说&#xff0c;在修改系统bug的同时&#xff0c;我打算重新找一份工作&#x…

iOS开发那些事-iOS常用设计模式–委托模式案例实现

书接上回&#xff0c;应用案例 我们以UITextFieldDelegate为例来说明一下委托的使用。 UITextFieldDelegate是控件UITextField的 委托&#xff0c;控件的委托主要负责响应控件事件或控制其他对象。除了UITextField&#xff0c;WebView、UITableView等控件也有相应的委托对象。 …

Windows API 逐个逐个学MessageBox(5) 遍历驱动器并获取驱动器属性 GetLogicalDriveStrings、GetDriveTypeA...

首先还是贴代码 VC Code: /* *************************************《精通Windows API》 * 示例代码* GetVolumeInfo.c* 4.2.1 遍历驱动器并获取驱动器属性**************************************//* 头文件 */ #include <windows.h> #include <stdlib.h> #i…

linux下搭建nagios监控

一、什么是nagios 1.nagios 简介 Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务&#xff0c;同时提供异常通知功能等。Nagios可运行在Linux/Unix平台之上&#xff0c;同时提供一个可选的基于浏览器的WEB界面以方便系统管理人…

zabbix的安装

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix由2部分构成&#xff0c;zabbixserver与可选组件zabbix agent。 一、Zabbix简介 1.1Zabbix简介   Zabbix是一个企业级的开源分布式监控解决方案&…

对fgets的理解1

摘自《linux程序设计 中文第四版》第94页。 转载于:https://www.cnblogs.com/pengdonglin137/archive/2013/03/10/2952421.html

普通用户的sudo权限,禁止root用户登录

假如增加用户zhangsan的sudo权限。 修改/etc/sudoers文件&#xff0c;在root下增加如下一行。 增加用户名zhangsan&#xff1a; 禁止root用户登录&#xff1a; 修改/etc/ssh/sshd_config文件&#xff0c; 将 PermitRootLogin前的#号去掉&#xff0c;yes改为no&#xff0c;重启n…

什么是 MVC ?

ylbtech-Architecture: MVCASP.NET中 MVC。 1.A,概念 MVC是一种目前广泛流行的软件设计模式&#xff0c;MVC英文即Model-View-Controller&#xff0c;即把一个应用的输入、处理、输出 流程按照Model、View、Controller的方式进行分离&#xff0c;这样一个应用被分成三 个层——…

zabbix邮件报警

原文出自http://www.iyunv.com/thread-22904-1-1.html 首先web端的配置顺序如下&#xff1a; 创建用户媒介-->创建用户组和用户-->针对trigger&#xff08;触发器&#xff09;添加报警动作&#xff0c;设置邮件发送用户及媒介1. 创建用户媒介创建用户媒介-->创建用户…

zabbix的入门到精通之zabbix的触发器Trigger

第1章 Trigger 1.1 创建一个trigger选择&#xff1a;ConfigurationHost双击: Trigger双击:Create Trigger(位置在右上角)后图下图所示NameTrigger的名字Expression添加Trigger表达式&#xff0c;双击add后添加Multiple PROBLEM events generationDescription对trigger的描述URL…