请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F2252 您好!
我正在使用 MSP430F2252并执行 goertzel 算法来检测 DTMF 音调。
在我的当前实现中、goertzel 算法的计算大约需要7ms、MCLK 为3.579.545Hz。
是否有可能加快这一速度?
正如我在数据表中看到的、F2252没有硬件乘法器。
我正在使用 ADC10、因此我将获得 ADC_Values 的10位值。
当前代码:
const int coeff [7]={2766726510、25248、23887、17558、15786、12063};
int goertzel (int sample []、long int coeff、int bksize) { int Q、q_prev、q_preme2、i; long power2; long prod1、prod2、prod3; Q_prev = 0; //将延迟元件1 Q_prev 设置为零 Q_premel2 = 0;//将延迟元件2 Q_premel2设置为零 power2 = 0; //针对 (i = 0;i < bksize;i++)将功率设置为零//循环 bksize 次数并计算每个迭代的 Q、Q_prev、Q_preme2 { Q =(sample[i])+((coeff * Q_prev)>> 14)-(Q_fort2);//>> 14用作系数的 Q15格式 Q_fort2 = Q_prev;//随机播放延迟元素 Q_prev = Q; } //计算用于计算功率 的三个乘积1 =((long) Q_prev * Q_prev); prod2 =((long) Q_fort2 * Q_fort2); prod3 =((long) Q_prev * coeff)>> 14; prod3 =(prod3 * Q_fort2); prod3 =(prod3 + 2)(prod3)+ prod3)(prod3) //calculate power using the three products and scalate the result down return power2; }
谢谢!
Manuel