工具/软件:Code Composer Studio
您好!
我使用前置放大器麦克风来检测使用 MSP430的不同声音频率。
我可以通过表达式表获取一些值、方法是使用以不同频率发射声音的声音应用程序。
但是、我不确定如何解释我看到的表达式表中的值。 我知道它不是频率、因为它在不同频率下显示的值几乎相同。
但即使更改音量也不会更改这些值。 因此、我猜它也不代表振幅。 这些是主要问题
1) 1)表达式列中的值代表什么? (就麦克风接收到的声音而言、如振幅、频率)
2) 2)有时、这些值以黄色突出显示。 这是什么意思?
我附上了一份我在1000Hz 恒定音频下获得的值。
下面也是我用于此程序的代码。
#include
int ADC[10]={0};//设置10个整数的数组和零
空 init (空)
{
WDTCTL = WDTPW + WDTHOLD;//停止看门狗计时器
ADC10CTL1 = CONSEQ_2 + INCH_0;//重复单通道、A0
ADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;//采样和保持时间、ADC10打开、中断使能(ADC10IE)
ADC10AE0 |= 0x01;//P1.0 ADC 选择
ADC10DTC1 = 0x0A;//0x0A = 10次转换;DTC 是数据传输控制、它自动从 ADC10MEM 传输转换结果
}
#pragma vector=ADC10_vector //ADC10中断服务例程
_interrupt void ADC10_ISR (void)
{
_BIC_SR_REGISTER_ON_EXIT (CPUOFF);//从0清除 CPUOFF 位
}
void adc_samp10 (void)
{
ADC10CTL0 &=~ENC;//禁用转换
while (ADC10CTL1 & BUSY);//如果 ADC10忙则等待
ADC10SA =(内部) ADC;//将数据传输到数组 DTC 自动递增地址
ADC10CTL0 |= ENC + ADC10SC;//启用转换和转换开始
_bis_SR_register (CPUOFF + GIE);//低功耗模式0
}
void main (void)
{
init();//run 初始化块
while (1)
{
adc_samp10 ();//运行 ADC 块并将值存储到数组中
}
//8bit_FFT ();//run FFT 函数块
}