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.

[参考译文] MSP430FR5043:超声波燃气表应用、通过宏定义启用带通滤波器、代码运行失败

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1530698/msp430fr5043-ultrasonic-gas-meter-application-enable-band-pass-filter-by-macro-define-code-run-failed

器件型号:MSP430FR5043

工具/软件:

使用了 TI 演示代码、 UltrasonicGasFR6043_02_30_00_01

“USS_ALG_FILT_IS_FILTER_ENABLE"启用“启用带通滤波器、并按如下方式更新滤波器系数。

我发现整个程序只能运行一次、我能够得到一组接收到的无法继续的波形。

我不知道为什么。

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

    您好、

    燃气表解决方案不支持使能带通滤波器。 专为水表应用而设计。 请勿在燃气表中使用。

    此致、

    现金好

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

    现金奖励、

    在进行分布式气体测试时、我发现波形的信噪比在高温下非常低、所以我想使用带通滤波器。

    如何提高该波形的信噪比?

    谢谢!

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

    现金奖励、

    另一个问题:TI 为什么不支持  燃气表解决方案中的带通滤波器功能?  这是因为不需要、还是因为无法实现设计?

    感谢您的答复!

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

    您好、

    Hilbert 转换已经可以用作数字滤波器、通常不需要添加更多滤波器。  

    在高温下、测试的温度是多少?

    此致、

    现金好

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

    现金奖励、

    实验 温度为 55°C。

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

    现金奖励、

    我尽量理解解决方案。  希尔伯特转换用于计算 absToF、获取信号包络、然后获得信号到达时间。 相关方法已用于计算 deltaToF。

    如果接收到的信号的 SNR 低于预期、deltaToF 也将受到影响。 所以、我想提高带通滤波器的 SNR。

    Hilbert‘s可以影响 absToF、也许可以避免“ kip 周期“、但不能在低 SNR 下提高 deltaToF 的标准。

    也许我误解了、但我希望得到您的答案。

    谢谢!

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

    您好、

    您的理解是正确的。 dTOF 结果将受到 ADC 采集数据的低 SNR 的影响。  

    对于滤波器系数设置、您将需要在 MATLAB 中执行以下代码来生成滤波器 系数。 您需要更改 FS、Fstop1/2、Fpass1/2 甚至是燃气表的 Wpass、然后重试。 如果 系数正确、则应该有效。

    N = 18;FS = 3600000;Fstop1 = 600000;Fpass1 = 800000;Fpass2 = 1200000; Fstop2 = 1400000;Wstop1 = 1;Wpass = 10;Wstop2 = 1;filterCoeffs =[firpm (N、[0 Fstop1 Fpass1 Fstop2 Fstop2 Fs/2]/(Fs/2)、[0 0 1 0 0]、[Wstop1 Wstop2]) 0];

    此致、

    现金好

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

    现金奖励、

    现在我已经有了滤波器系数、如何在燃气表应用代码中实现它们?  我应该使用 LEA 命令调用 FIR 函数、还是有其他方法?

    再次感谢!

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

    您好、

    尝试将 USS_ALG_FILT_IS_FILTER_ENABLED 设置为 TRUE。 并根据 USS_ALG_FILT_OPTIONS 编号覆盖正确的滤波器系数。  

    此致、

    现金好

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

    现金奖励、

    这是我最初的做法(我的第一个问题)、但代码运行失败。 我不知道原因是什么。

    您可以重试使用超声波燃气表演示代码。

    1 天前、您告诉我“燃气表解决方案不支持启用带通滤波器“。 现在我感到困惑。 我不知道是否提供带通滤波器。

    谢谢!

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

    您好、

    嗯、我研究了代码、认为如果提供正确的滤波器系数、理论上它可能起作用。 因此、我允许您使用正确的滤波器设置重试并检查结果。  

    此致、

    现金好

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

    Hi Cash、

    我的配置:

     USS_ALG_FILT_IS_FILTER_ENABLED  

    如下所示、这是用于生成滤波器系数的代码。  

    clear; clc; close all; 
    N = 18;
    %  滤波器阶数(系数数=N+1=19)
    Fs = 1000000;
    %采样率 1M
    Fstop1 = 150000;
    %阻带1 150 KHz
    Fpass1 = 180000;
    %带通下限180KHz
    Fpass2 = 240000;
    %带通上限 240KHz
    Fstop2 = 280000;
    %阻带2 280 KHz
    Wstop1 = 1;
    %阻带1权重
    Wpass = 10;
    %带通权重
    Wstop2 = 1;
    %阻带2权重
    filterCoeffs = [firpm(N,[0 Fstop1 Fpass1 Fpass2 Fstop2 Fs/2]/(Fs/2), [0 0 1 1 0 0],[Wstop1 Wpass Wstop2]) 0];
    
    fvtool(filterCoeffs,1)
    q15_coeffs_decimal = int16(round(filterCoeffs * 32767));
    hex_str = arrayfun(@(x) dec2hex(typecast(x, 'uint16'), 4), q15_coeffs_decimal, 'UniformOutput', false);
    
     for i = 1:length(hex_str)
          fprintf('0x%s, ', hex_str{i});
          if mod(i,4)==0
            fprintf('\\\n');
          end
     end

    然后、将滤波器系数复制到气体演示代码中。  程序针对单次迭代成功执行。  它会在代码中的特定位置冻结。  这会导致看门狗计时器到期并强制系统复位。

    也许您可以尝试通过我的过滤器效率运行代码。 该问题将不断重现。

    谢谢!

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

    您好、

    我在我这边试过。 它不断报告错误代码 22 和 123。 我想、燃气表应用代码不能使用滤波器功能。  

    此致、

    现金好