美文网首页
值班电路 滤波检波

值班电路 滤波检波

作者: nino天 | 来源:发表于2014-08-01 14:18 被阅读38次

    值班电路硬件上经过反相放大,滤波。之后由MSP430的模拟通道送入单片机,单片机内置的ADC12对输入信号进行采样,转换成数字信号,数字信号通过软件上的滤波,检波,比较,对CW脉冲判决。

    软件上要做的
    带通滤波:发送的是单频信号,需要滤掉频谱上信号频率以外的噪声
    检波:要得到时域上信号的包络
    比较判决:检波之后的信号超过一定门限表示有信号到达,可以进行下一步脉宽的比较

    • 滤波
    int h2[100]={1};
     int h4[100]={0}; 
    void bandpassfilter(int Len)    //FIR滤波的长度可以自定
                                    //设CW信号为20ms、10ms、20ms多脉冲
    {  
                                    //20K采样内,2M=200点,滤波器阶数为100
      int i,j,k,n; 
      int Buff1[100]={0},Buff2[100]={0};
      int sum0,sum1;
    
      for(n=0;n<2*M/Len;n++)        //Len=100
      {
       for (i=0;i<Len;i++) 
       {                            // ***** fir滤波 ******
        Buff1[0]=ADC_BUF_Temp[2*M-i-Len*n];
        sum0=0;
        for(j=0;j<Len;j++)                 //卷积长度为Len
           sum0+=Buff1[j]*h2[j];
     //ADC_BUF_Temp1[i+n*len]=sum0;        //把计算得到的滤波器的输出放入缓存,送给下一步的包络检波
                                    //****进行包络检波****
        Buff2[0]=sum0;
        Buff2[i]=abs(Buff2[i]);            //取绝对值
        sum1=0;                        
        for(j=0;j<Len;j++)                 //fir低通滤波  
           sum1=Buff2[j]*h4[j];
        ADC_BUF_Temp2[i+n*Len]=sum1>>15;   //包络检波后数据放入ADC_BUF_Temp2缓存,总共2N点
       for (k=0;k<Len-1;k++)
           Buff1[Len-k+1]=Buff1[Len-k];
       for (k=0;k<2M-1;k++)
           Buff2[Len-k+1]=Buff2[Len-k];
         }
       }
       for(j=0;j<M;j++)                    //ADC_BUF_Temp缓存内数据从在N处开始右移N
        {
          ADC_BUF_Temp[2*M-j]=ADC_BUF_Temp[M-j];
         }  
    }
    

    相关文章

      网友评论

          本文标题:值班电路 滤波检波

          本文链接:https://www.haomeiwen.com/subject/pytetttx.html