3867|5

40

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【从零开始做示波器第一步之搞定DSP——初代示波器诞生!】 [复制链接]

今天一直弄到晚上九点,差点累趴下,还没吃饭,晕~
    不过还是挺值得的,初代示波器已诞生,现在还没功能,也没加按键调整的功能。不过带宽还可以。
    采样率:12.5MS/s 用的DSP内部的AD
    下图是频率为1.25MHz的方波,来自示波器,采用的是后触发方式。
   
    由于只是作为学习DSP练手之作,没有信号调理电路,也没有其他别的功能。至此,DSP学习告一段落。
    接下来进入第二步:DSP+FPGA核心板的制作,敬请期待。。
下面是部分调试版程序,还没时间整理,大家将就看吧。
DELAY_US(30000);
   for(i=0;i<128;i++)
   {
      display.all=0;
   }

   for(i=0;i<256;i++)
   {
      buffer=DMABuf1;
   }
   for(temp3=0;temp3<256;temp3++)
   {
           if((buffer[temp3+1]-buffer[temp3])>400&&buffer[temp3+1]>buffer[temp3])
                break;
   }
  #ifdef TRIG
           if(temp3<128)
           {
                   for(i=0;i<128;i++)
                   {
                           j=buffer[i+temp3]>>6;
                       if(j>32)
                                      display.all=0xFFFFFFFFFFFFFFFF>>(63-j);
                        else
                                display.all=~(0xFFFFFFFFFFFFFFFF<<(1+j));
                   }
           }
#else
           for(i=0;i<128;i++)
           {
                   j=buffer>>6;
               if(j>32)
                              display.all=0xFFFFFFFFFFFFFFFF>>(63-j);
                else
                        display.all=~(0xFFFFFFFFFFFFFFFF<<(1+j));
           }
#endif
   for(i=0;i<64;i++)
   {
           if(i==0)
           {
                temp1.all=display[0].all ^ (display[0].all>>1);
                if(display[1].all != display[0].all)
                         temp2.all=display[1].all ^ display[0].all;
                else
                        temp2.all=display[1].all ^ (display[0].all>>1);
           }
        else
        {
                if(display[2*i].all != display[2*i-1].all )
                        temp1.all=display[2*i].all ^ display[2*i-1].all;
                else
                        temp1.all=display[2*i].all ^ (display[2*i-1].all>>1);
                if(display[2*i+1].all != display[2*i].all )
                        temp2.all=display[2*i+1].all ^ display[2*i].all;
                else
                        temp2.all=display[2*i+1].all ^ (display[2*i].all>>1);
        }

        temp3=temp1.bit.Page0;
        temp3<<=8;
        display_r[0]=temp3 | temp2.bit.Page0;
        temp3=temp1.bit.Page1;
        temp3<<=8;
        display_r[1]=temp3 | temp2.bit.Page1;
        temp3=temp1.bit.Page2;
        temp3<<=8;
        display_r[2]=temp3 | temp2.bit.Page2;
        temp3=temp1.bit.Page3;
        temp3<<=8;
        display_r[3]=temp3 | temp2.bit.Page3;
        temp3=temp1.bit.Page4;
        temp3<<=8;
        display_r[4]=temp3 | temp2.bit.Page4;
        temp3=temp1.bit.Page5;
        temp3<<=8;
        display_r[5]=temp3 | temp2.bit.Page5;
        temp3=temp1.bit.Page6;
        temp3<<=8;
        display_r[6]=temp3 | temp2.bit.Page6;
        temp3=temp1.bit.Page7;
        temp3<<=8;
        display_r[7]=temp3 | temp2.bit.Page7;
   }

Oscilloscope.c

16.86 KB, 下载次数: 22

源代码

最新回复

这刷屏速度的确碉堡了。我用STM32驱动彩屏做的示波器,刷屏显得很尴尬。毕竟要加上画点画线之类的,速度很慢。。。STM32刷单色可有60帧,但是加上画线,速度还是感觉弱爆了。  详情 回复 发表于 2012-10-31 22:54

点评

写错,1.25Mhz是来自FPGA的 16分频:faint:  详情 回复 发表于 2012-10-31 21:08
点赞 关注
 

回复
举报

40

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

回复 楼主 shixiaoling312 的帖子

写错,1.25Mhz是来自FPGA的 16分频
 
 

回复

199

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
这屏幕不错。。。不知道用DSP可以刷多少帧?

点评

至于用DSP最多帧的问题,我还没试过,开始是没有加延时的,然后刷新速率太快导致线条比较灰,又加了1ms的延时,每秒一千屏,感觉还好。后来试了一下延时30ms,也就是每秒30多帧,跟每秒1千帧的没啥区别,后来就懒得  详情 回复 发表于 2012-10-31 22:26
spi口频率设定为九点多M,算下来最快刷新速率约为(10/(8*64+8)*8Mhz ,算下来约为2.4K屏/s。更高的没试,datasheet里面说明SPI极限速率为20Mhz,应该可以翻倍,一秒5千屏  详情 回复 发表于 2012-10-31 22:20
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 老阮 的帖子

spi口频率设定为九点多M,算下来最快刷新速率约为(10/(8*64+8)*8Mhz ,算下来约为2.4K屏/s。更高的没试,datasheet里面说明SPI极限速率为20Mhz,应该可以翻倍,一秒5千屏
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 板凳 老阮 的帖子

至于用DSP最多帧的问题,我还没试过,开始是没有加延时的,然后刷新速率太快导致线条比较灰,又加了1ms的延时,每秒一千屏,感觉还好。后来试了一下延时30ms,也就是每秒30多帧,跟每秒1千帧的没啥区别,后来就懒得改回来了。

点评

这刷屏速度的确碉堡了。我用STM32驱动彩屏做的示波器,刷屏显得很尴尬。毕竟要加上画点画线之类的,速度很慢。。。STM32刷单色可有60帧,但是加上画线,速度还是感觉弱爆了。  详情 回复 发表于 2012-10-31 22:54
 
 
 

回复

199

帖子

0

TA的资源

纯净的硅(初级)

6
 

回复 5楼 shixiaoling312 的帖子

这刷屏速度的确碉堡了。我用STM32驱动彩屏做的示波器,刷屏显得很尴尬。毕竟要加上画点画线之类的,速度很慢。。。STM32刷单色可有60帧,但是加上画线,速度还是感觉弱爆了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表