注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
shixiaoling312的个人空间 https://home.eeworld.com.cn/space-uid-378347.html [收藏] [复制] [分享] [RSS]
日志

【从零开始做示波器第一步之搞定DSP——初代示波器诞生!】

热度 1已有 1194 次阅读2012-10-31 21:05

今天一直弄到晚上九点,差点累趴下,还没吃饭,晕~
    不过还是挺值得的,初代示波器已诞生,现在还没功能,也没加按键调整的功能。不过带宽还可以。
    采样率: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;
   }

本文含有来自论坛的附件或图片点击查看原帖附件。

发表评论 评论 (1 个评论)
回复 glyhw 2014-10-19 14:49
佩服,楼主有没有作好的板子卖呀?如有请联系我
QQ 583155816

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册