数字存储示波器数字荧光算法

先上视频,花了我一个多小时写的算法,主要是好久没碰这个程序了要重新熟悉,代码其实只增加了一二十行。使用的MCU是STM32F407。

数字存储示波器数字荧光算法演示

​​​​​​​https://v.youku.com/v_show/id_XNTgxNTcxNzYyMA==.html?spm=a1z3jc.11711052.0.0&isextonly=1

大概13年的时候开始利用业余时间来DIY虚拟示波器,采用STM32+FPGA+蓝牙/WFI+安卓(这是个玩具架构,非常不适合做示波器),当时安卓和STM32驱动WIFI方面的资料还比较少加上是用业余时间所以搞了一年多才算搞完。第一版噪声很大,小信号根本就被噪声淹没了。后面修修补补三个版本后就没搞了,因为对这东西没多大兴趣了,更没多大商业价值。近两三年只对高精度采样感兴趣,就像之前改模拟电源为数控电源主要也是为验证STM32F4的内置AD能达到个什么程度。
突然心血来潮验证这个数字荧光算法主要是因为最近逛安富莱论坛时发现站长在搞这个三代示波器沟起了我沉睡已久的兴趣,想验证一下这个算法到底是怎么样个效果,也想抛砖引玉引出更适合这个算法的平台来验证优化下。首先我是在安卓端实现数字荧光,并不能增加捕获率,代码也非常简单就一二十行的代码。主要是运算量和内存占用大。加上我是用的12位的ADC且是用的12位的数字荧光算法所以内存和运算量更大,每帧数据最大有8K,不同时基不同存储量。下面上算法源码,因为是从中间截取代码很乱,其实算法非常非常简单,但效果着实不错。
//tmp2每帧或每屏数据长度
//tmp3是波形数据12位需2字节合并
// DSOYingguangBuf[][]2维数组存储数字荧光波形数据,根据波形数据打点,视频中效果是纯打点不带插补的效果。至于颜色深浅采用透明度来控制这部分没参考价值就没传上来了。

for (int i = 0,j=0; i < (tmp2); i++) { 
tmp3=((rUdpBuffer1[6+(i<<1)]&0xff)|((rUdpBuffer1[7+(i<<1)]&0xff)<<8));
      for (j=0;j<4096;j++)//ADC12
      {
         
if(tmp3==j)
         {
            
if((DSOYingguangBuf[(tmp1)+40+i][j]+DSOYingguangAdd)<=(short)255)
            {
               
DSOYingguangBuf[(tmp1)+40+i][j]+=DSOYingguangAdd;
            }
else {
               
DSOYingguangBuf[(tmp1)+40+i][j]=255;
            }
         }
else {
            
if(DSOYingguangBuf[(tmp1)+40+i][j]>=DSOYingguangSub)
            {
               
DSOYingguangBuf[(tmp1)+40+i][j]-=DSOYingguangSub;
            }
else {
               
DSOYingguangBuf[(tmp1)+40+i][j]=0;
            }
         }
      }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值