This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430G2553:音频输入解释

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/892173/ccs-msp430g2553-audio-input-interpretation

器件型号:MSP430G2553

工具/软件: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 函数块

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Binoy、

    ADC 应显示振幅变化。  我找到了几个示例来测量可能对您有用的频率。   

    http://www.ti.com/lit/an/slaa351a/slaa351a.pdf

    https://hackaday.io/project/8989-msp430-breadboard-audio-spectrum-analyzer

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    但是、当我改变音量时、这些值几乎没有改变。 黄色高亮显示也意味着什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    黄色突出显示表示值自上次显示以来发生了变化。

    这些数字大约为512、这告诉我您的前置放大器电路的偏置(0点)为 Vcc/2、因此要获得有符号幅度减去半量程(1024/2)。

    每个样本取值约为30/5=6 uec (采样率约为166ksps)、因此您的10个样本代表约60 uec。 如果它与大多数零售麦克风/放大器板一样、它可能会将信号滤除至可能的10-15kHz、因此我不会期望60uS 变化太大。 在60微秒的时间里赶上高峰将是一个非凡的运气。

    您将看到的最大振幅取决于增益、增益取决于麦克风和电路、但可能会写入电路板的文档中。 它可能会选择不是太大、因此不会因中等噪音而饱和。

    要对麦克风信号进行任何有趣的操作,您应该考虑使用计时器触发器和 SHS 以已知的固定速率捕获“长”时间(例如>半秒)的数据。 [参考用户指南(SLAU144J)第23.2.4节]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。 这似乎很有帮助。

    您能告诉我、更改 ADC10采样率的代码是什么? 您提到的部分似乎没有显示用于更改采样率的代码。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    示例 msp430g2x33_ADC10_[11-13].c 演示了实现此目的的各种方法:

    http://dev.ti.com/tirex/explore/node?node=ALFfIDtjUH-HwRytz.WJPQ__IOGqZri__LATEST