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.

[参考译文] RTOS/CC2650:PDM 麦克风

Guru**** 2589275 points
Other Parts Discussed in Thread: CC2650

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/607170/rtos-cc2650-pdm-microphone

器件型号:CC2650

工具/软件:TI-RTOS

大家好、我在 TI-RTOS 中使用了 CC2650的 PDM 示例、我想测试麦克风的传感距离、因此我基本上测试麦克风拾取的声音信号振幅。 我有以下问题:

1)。 pPCMsamples[i]是否存储原始 PCM 声音数据?

2)。 我使用以下代码来测试声音信号振幅

对于(i = 0;i < numOfSamples;i++){

audioAby=pPCMsamples[i]/numOfSamples;
audioSum = audioSum + audioAimity;

该代码块非常简单、位于函数 SA_enveDetector 中。 我通过返回 var 'audioSum '来测试声音信号的振幅。

我做得对吗?

3)。 现在令我感到困惑的是、在安静的环境中、音频振幅可能会很大、而在嘈杂的环境中、该振幅可能很小。 我通过在函数 SA_enveDetector 处设置断点并进行调试以查看结果(我没有 UART 硬件)获得了该实验结果、如下所示:

 CURRENT= SA_ENMEDetector (((Int16_t *) bufferRequest.buffer->pbuffer、AUDIO_BUF_Uncompressed_size);

我观察可变电流的变化、以查看声音信号的振幅。

我不知道这是否适合调试基于 RTOS 的应用?

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

    您好 Jason、
    1.是的、PCMsample 缓冲区包含 PCM 样本。 PDM 驱动程序负责将 PDM 转换为 PCM 格式。

    请注意、样本可能为正或负、您需要获取绝对值才能获得正确的测量值。 SA_enveDetecter()代码执行此操作。 此外、由于您过早除以 numberOfSamples、可能会出现精度问题。 在处理低信号电平时、最好先累积、然后除以 ESP、如您的情况所示。 为了检测振幅,我认为最好坚持使用 SA_enveDetecter()代码,因为它通过滤波来平滑信号,从而提供更好的测量。

    3.您注意到的此错误必须是由于缺少绝对值而导致的,如第2节所述。

    此致、
    Prashanth