硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1212|回复: 1
收起左侧

[三代示波器] 数字存储示波器数字荧光算法验证

[复制链接]

13

主题

86

回帖

125

积分

初级会员

积分
125
发表于 2021-10-26 00:03:33 | 显示全部楼层 |阅读模式
先上视频,花了我一个多小时写的算法,主要是好久没碰这个程序了要重新熟悉,代码其实只增加了一二十行。由于本版讨论示波器多点就传到本版了,实际上使用的MCU是STM32F407
大概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;
            }
         }
      }

}上传算法论文 基于SoC FPGA的数字荧光算法实现.pdf (620.75 KB, 下载次数: 26)


评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106757
QQ
发表于 2021-10-26 00:23:19 | 显示全部楼层
好帖子,非常棒,学习下。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 14:42 , Processed in 0.285592 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表