单片机怎么检测两个同频率、同幅度的正弦波的相位差?

2020-01-19 19:41发布

用单片机怎么检测两个频率,幅值相同的正弦波?
查过一些资料,说用过零检测电路来将正弦波转变成方波。
但具体不知道怎么计算,程序怎么写?思路有点乱。
还请知道的网友提醒,建议下。。。谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
51条回答
kuanglf
2020-01-24 04:47
alias 发表于 2014-3-11 22:53
当相位差向0接近,输入捕获得到的数值是渐渐变小,由於中断处理及改变捕获的讯号源都要些时间,处理完毕后 ...

我是这样处理的,不知道为什么相位差接近0时会出错
void TIM4_IRQHandler(void)
{                     
        u32 temp = 0;
        temp = TIM4->SR;
        if (temp & 0x02)                        //捕获1发生捕获事件
        {
                TIM4->SR&=~(1<<1);            //清除1通道中断标志位
                ReadValue1[0] = TIM4->CCR1;
                TIM4->DIER&=~(1<<1);           //禁止1通道捕获中断
                LED1 =!LED1;               
        }
        else if(temp & 0x04)                  //捕获2发生捕获事件
        {                                                                  
                TIM4->SR&=~(1<<2);                  //清除2通道中断标志位
                ReadValue1[1] = TIM4->CCR2;
                Getnum[0]= (ReadValue1[1] - ReadValue1[0]);
                TIM4->DIER&=~(1<<2);          //禁止2通道捕获中断
                LED2 =!LED2;
        }   
}

一周热门 更多>