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.

[参考译文] CC2640R2F:PDMCC26XX 驱动程序

Guru**** 2811895 points

Other Parts Discussed in Thread: CC2640, CC2640R2F

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/591292/cc2640r2f-pdmcc26xx-drivers

器件型号:CC2640R2F
主题中讨论的其他部件:CC2640CC2650RC

尊敬的 TI:

*参考代码:“C:\ti\simplelink_cc2640r2_sdk_ble_example_pack_1_30_00_27\examples\rtos\CC2640R2RC\bleapps\hid_adv_remote”。

 

simplelink\ble_sdk_2_02_00_31(对于 CC2640)中,我们可以从数字麦克风访问未压缩的音频数据(存储在数组‘tempPcmBuf[]’中,如下所示):

  [PDMCC26XX.c、Ln#601]:

  /*将 PDM 数据抽取至 PCM,结果存储在 tempPcmBuf 中*/

  pdm2pcm16k (bufferRequest.bufferIn、decimationState、object->decimationFilter、(Int16_t *)&tempcmBuf);

 

但在simplelink_cc2640r2_sdk_ble_example_pack_1_30_00_27示例代码中找不到‘PDMCC26XX.c’(对于 CC2640R2F)!

在[hid_adv_remote.c]‘HIDAdvRemote_processPdmData()’函数内,我们只能获得‘bufferRequest.buffer’中存储的压缩音频数据。

 

[Q1]:如何访问simplelink_cc2640r2_sdk_ble_example_pack_1_30_00_27示例代码中未压缩的音频数据(通过数字麦克风)(对于 CC2640R2F)?

 

 

(上述)参考代码中的‘PDMCC26XX_Params’用于配置 CC2650RC 中使用的 Knowles 数字麦克风。

如果使用其他类型/品牌的数字麦克风、则需要为增益、滤波器滚降频率等设置不同的设置

对于数字增益,我们可以使用“micGain = PDMCC26XX_GAIN_18”以外的其他值

[Q2]:请说明如何配置滤波器滚降频率?

 

提前感谢您。

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

    应用包仍在使用 TI-RTOS、附带 CC2640r2_SDK_1_30_00_25。
    您仍然可以在此处找到 PDM 驱动程序源代码:C:\ti\simplelink_cc2640r2_sdk_1_30_00_25\source\ti\drivers\PDM。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    抽取滤波器不特定于 Knowles 麦克风。 它是基于模拟 PDM 流@1.024MHz 而设计的、未考虑麦克风的特定响应。 这种响应不仅取决于麦克风本身、还取决于整个设计的机制。 因此、我们可以添加一个工作频率@16kHz 的额外滤波器。 代码中已经有三个示例、只需取消注释即可。

    静态常量 Int32_t PDMCC26XX_aBqCoeffs[]={
    //--v--通过改变这个系数来调整总体增益
    331、0、-1024、-1356、342、 //直流陷波、半带 LP 滤波器(@32kHz)
    200、789、934、-994、508、
    538、381、944、-519、722、
    732、124、987、-386、886、
    763、11、1014、-386、886、
    0、//终止第一个过滤器
    //此处插入可选的第二个滤波器(@16kHz)。 一些示例:
    //1147、-1516、522、-1699、708、//+5dB 峰值滤波器(F0=500Hz、BW=3个八进制)
    //1313、-565、-6、-725、281、 //+5dB 峰值滤波器(F0=2.5kHz、BW=2个八进制)
    //1335、532、-66、694、225、 //+5dB 峰值滤波器(F0=5.5kHz、BW=1倍频程)
    0、//终止第二个过滤器
    };

    以下是 Matlab 脚本、可帮助您计算筛选器的系数:

    %Design 采用峰值/陷波的二阶 IIR-filter (双二阶)
    % G -以 dB 为单位的增益
    % BW -带宽、以八倍频为单位
    % F0 -以 Hz 为单位的峰值/陷波频率
    % FS -以 Hz 为单位的采样率

    Fs = 16000
    Kroot =^μ s (G/40);

    omega0=2*pi*f0./fs;
    λ= sinh (log (2)/2 * BW * omega0/sin (omega0))* sin (omega0);
    b =[1+lambd*Kroot -2*cos (omega0) 1-lambd*Kroot]./(1+lambda/Kroot);
    a =[1 b (2)(1-lambda/Kroot)。/(1+lambda/Kroot)];
    pdm2pcm16k_coeffs = round (1024*[b (1) b (2)./b (1) b (3)./b (1) a (2) a (3)]);

     

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

    大家好、Torbjorn、

     

    您是否可以为我们提供以下引述示例的更多详细信息?

     

    您能不能帮助我们提供更多详细信息,说明为什么“1147,-1516,522,-1699,708”是具有 f0-500Hz,BW=3个八倍频带和+5dB 升压的峰值滤波器。

     

    //1147、-1516、522、-1699、708、//+5dB 峰值滤波器(F0=500Hz、BW=3个八进制)

    这5个系数中的每一个的含义是什么。

     

    换言之、在检查 FR 后 、需要添加哪种滤波器(F0、带宽、增益/衰减)

     

    您能否提供一些有关如何将其转换为5个系数的指南?

     

    谢谢、

    Christina

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

    这些系数只是为二阶 IIR 滤波器运行 MATLAB 脚本的结果、该滤波器使用所需参数实现峰值/陷波。 如果您没有 MATLAB、则可以使用 https://octave-online.net/

    对于参数:
    G = 5;
    BW = 3;
    F0 = 500;
    FS = 16000;

    pdm2pcm16k_coeffs 的输出将精确地提供1147、-1516、522、-1699、708。

    Kroot =^μ s (G/40);
    omega0=2*pi*f0./fs;
    λ= sinh (log (2)/2 * BW * omega0/sin (omega0))* sin (omega0);
    b =[1+lambd*Kroot -2*cos (omega0) 1-lambd*Kroot]./(1+lambda/Kroot);
    a =[1 b (2)(1-lambda/Kroot)。/(1+lambda/Kroot)];
    pdm2pcm16k_coeffs = round (1024*[b (1) b (2)./b (1) b (3)./b (1) a (2) a (3)]);

    如何将其转换为5个系数意味着什么?

    此致、

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

    如果您想详细了解滤波器背后的数学原理、可以查找"数字双二阶滤波器"。 可以在传递函数 H (z)中看到"a"和"b"参数。

    此致、

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

    您好 Klas、

    我们是否也可以使用 TIBQ、而不是使用 Matlab? 下面的 TIBQ 是否会生成这些系数、它可能是不同的格式。

    如果可能,我的客户计划使用 TIBQ 获取寄存器值并填入 FW。

    此致、

    Christina Lim

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

    您好!

    我们尝试使用 MATLAB 和 Biqual 计算器、但很难将这两个结果关联起来。 有人可以提供帮助吗?

    下面是 Matlab 结果:

    //1147、-1516、522、-1699、708、//+5dB 峰值滤波器(F0=500Hz、BW=3个八进制)

    下面是 Biquad 计算器结果:

     

    文本"*采样率= 16000 "

    文本"*滤波器1 EQ 500 Hz FC 5.0 dB 3 Hz BW"

     

    文本"* BQ:h (z)=(N0 + 2 * N1/z + N2/(Z2))/(32768 - 2 * D1/z - D2/(Z2))"

    文本"*格式为 N0、N1、N2、D1、D2"的滤波器系数

     

    文本"* 1O:h (z)=(N0 + N1/z)/(32768 - D1/z)"

    文本"*格式为 N0、N1、D1"的滤波器系数

     

    文本"*过滤器1 BQ"

    0x7FFF

    0x8299

    0x7FBA

    0x7D76

    0x8028

     

    谢谢、

    Christina

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

    您好、Christina、

    我不熟悉 TIBQ、但我一直在使用一些在线双二阶计算器、并将它们与 MATLAB 脚本进行比较。 我可以确认结果不等于 MATLAB 脚本输出的结果。 我一直在和 MATLAB 脚本的作者交谈、这可能是由于以下几个不同的原因:

    -归一化结果。

    -四舍五入差异。

    实际的数学不是完全相同的,因此结果将只是相似的,但并不完全相同。

    我认为最好的想法是尝试两个脚本并根据性能决定。

    此致、

    Klas

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

    您好 Klas、

    非常感谢 您提供的信息!

    我是否可以知道客户是否可以使用 HPF 和 LPF MATLAB 脚本 进行进一步滤波?

    谢谢、

    Christina