balabal 发表于 2022-12-31 16:23:49

fir滤波输出数据全为0

ADC采样后,直接进行fir滤波后,输出结果全为0
采样后的数据进行傅里叶变换是没问题的,不知道大家有没有遇到这样的问题
初次接触stm32进行DSP,不知道怎么分析




eric2013 发表于 2023-1-1 01:50:27

估计你的滤波器系数有问题。

balabal 发表于 2023-1-1 13:42:06


这个系数是选这个类型的吗?我的采样数据是u16类型的

eric2013 发表于 2023-1-1 14:59:02

balabal 发表于 2023-1-1 13:42
这个系数是选这个类型的吗?我的采样数据是u16类型的

你把你的数据,C数组的方式分享下,我这两天有时间帮你试试。

另外你的数据采样率多少,需要设置截至频率多少。

balabal 发表于 2023-1-1 15:24:48


这个是ADC采样的数组,采样率是67.308KHz,我设置的截止频率是20KHz,信号频率是10.253KHz
谢谢了

balabal 发表于 2023-1-1 15:37:47


这个是ADC采样数组,采样率设置的是67.308k,截止频率设置的是20KHz,信号频率为10K左右
谢谢,麻烦你了

eric2013 发表于 2023-1-2 00:36:03

balabal 发表于 2023-1-1 15:37
这个是ADC采样数组,采样率设置的是67.308k,截止频率设置的是20KHz,信号频率为10K左右
谢谢,麻烦你了

原始数据你好像没有发出来。

balabal 发表于 2023-1-2 10:35:17

不好意思哈,忘记了

ME_Engineer 发表于 2023-1-3 11:10:49


这里直接把u16*强制类型转换为float32_t*是不对的吧?这样岂不是把两个u16合并为一个float32_t了吗?值应该是乱七八糟的。

eric2013 发表于 2023-1-3 12:15:00

确实是楼上坛友说的问题。

修改下就正常了。



/*
*********************************************************************************************************
*
*        模块名称 : 主程序模块
*        文件名称 : main.c
*        版    本 : V1.0
*        说    明 : FIR低通滤波器的实现,支持实时滤波
*            实验目的:
*                1.        学习FIR低通滤波器的实现,支持实时滤波
*            实验内容:
*                1. 启动一个自动重装软件定时器,每100ms翻转一次LED2。
*                2.        按下按键K1,打印原始波形数据和滤波后的波形数据。
*            注意事项:
*                1. 打印方式:
*                   方式一:
*                     默认使用串口打印,可以使用SecureCRT或者H7-TOOL上位机串口助手查看打印信息,
*                     波特率115200,数据位8,奇偶校验位无,停止位1。
*                   方式二:
*                     使用RTT打印,可以使用SEGGE RTT或者H7-TOOL RTT打印。
*                     MDK AC5,MDK AC6或IAR通过使能bsp.h文件中的宏定义为1即可
*                     #define Enable_RTTViewer1
*                2. 务必将编辑器的缩进参数和TAB设置为4来阅读本文件,要不代码显示不整齐。
*
*        修改记录 :
*                版本号   日期         作者      说明
*                V1.0    2020-08-01   Eric2013   1. CMSIS软包版本 V5.8.0
*                                       2. HAL库版本 V1.7.6
*
*        Copyright (C), 2020-2030, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/       
#include "bsp.h"                               /* 底层硬件驱动 */
#include "arm_math.h"
#include "arm_const_structs.h"


/* 定义例程名和例程发布日期 */
#define EXAMPLE_NAME        "FIR低通滤波器"
#define EXAMPLE_DATE        "2021-08-01"
#define DEMO_VER                "1.0"


/* 仅允许本文件内调用的函数声明 */
static void PrintfLogo(void);
static void PrintfHelp(void);
static void arm_fir_f32_lp(void);


#define TEST_LENGTH_SAMPLES4095    /* 采样点数 */
#define BLOCK_SIZE         1           /* 调用一次arm_fir_f32处理的采样点个数 */
#define NUM_TAPS             29      /* 滤波器系数个数 */

uint32_t blockSize = BLOCK_SIZE;
uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE;            /* 需要调用arm_fir_f32的次数 */

static float32_t testInput_f32_50Hz_200Hz; /* 采样点 */
static float32_t testOutput;               /* 滤波后的输出 */
static float32_t firStateF32;      /* 状态缓存,大小numTaps + blockSize - 1*/


/* 低通滤波器系数 通过fadtool获取*/
const float32_t firCoeffs32LP = {
0.001534370822,-0.001699721906,-0.001334958826, 0.005179324187,-0.001438552048,
   -0.01069348957,0.01213685703,0.01181853656, -0.03332731873, 0.004219038878,
    0.06090350077, -0.06013473868,-0.0847459957,   0.3006878495,   0.5937905908,
   0.3006878495,-0.0847459957, -0.06013473868,0.06090350077, 0.004219038878,
   -0.03332731873,0.01181853656,0.01213685703, -0.01069348957,-0.001438552048,
   0.005179324187,-0.001334958826,-0.001699721906, 0.001534370822
};

uint16_t ADC_SampleBuffer[ ]={
359, 160, 1646, 3478, 4043, 2925, 1093, 37, 610, 2399,
3949, 3766, 2085, 397, 118, 1247, 3147, 4069, 3189, 1290,
49, 533, 2238, 3675, 3925, 2454, 587, 41, 1280, 3137,
4043, 3483, 1645, 214, 336, 2052, 3744, 3964, 2611, 910,
4, 904, 2826, 4064, 3483, 1773, 276, 123, 1661, 3489,
3967, 2861, 959, 24, 766, 2450, 4018, 3679, 2084, 359,
148, 1574, 3327, 4063, 3182, 1268, 62, 563, 2429, 3914,
25, 918, 2771, 4068, 3501, 1675, 178, 311, 1878, 3449,
4077, 2848, 934, 0, 891, 2761, 3967, 3791, 2045, 341,
169, 1644, 3486, 4040, 2943, 1298, 19, 602, 2439, 3917,
3731, 2123, 461, 42, 1270, 3184, 4077, 3222, 1275, 64,
485, 2046, 3770, 3938, 2455, 569, 33, 1206, 3033, 4090,
3419, 1667, 163, 333, 2034, 3730, 3965, 2852, 913, 5,
912, 2820, 4043, 3455, 1829, 350, 176, 1696, 3496, 4030,
2843, 985, 27, 594, 2444, 3938, 3758, 2070, 351, 137,
1522, 3167, 4063, 3192, 1270, 58, 566, 2331, 3839, 3944,
2439, 614, 51, 1291, 3160, 4095, 3295, 1645, 166, 354,
2047, 3694, 3938, 2537, 741, 0, 903, 2836, 4057, 3552,
1714, 184, 263, 1647, 3492, 4080, 2834, 912, 26, 833,
2669, 3984, 3785, 2075, 364, 137, 1632, 3474, 4085, 3181,
1284, 90, 553, 2457, 3924, 3788, 2220, 607, 21, 1257,
3188, 4077, 3197, 1338, 105, 333, 2066, 3675, 3947, 2472,
629, 28, 1117, 2864, 4052, 3458, 1700, 160, 324, 1974,
3657, 4082, 2777, 927, 0, 887, 2806, 4005, 3617, 2050,
342, 174, 1627, 3525, 4030, 2907, 1069, 40, 598, 2448,
3933, 3784, 2085, 402, 72, 1288, 3185, 4085, 3192, 1318,
25, 571, 2269, 3766, 3945, 2472, 610, 38, 1254, 3140,
4023, 3455, 1627, 163, 352, 2052, 3742, 3959, 2633, 911,
0, 908, 2806, 4059, 3530, 1709, 242, 158, 1644, 3483,
4076, 2878, 969, 9, 773, 2445, 3952, 3756, 2054, 335,
149, 1590, 3327, 4063, 3177, 1271, 41, 589, 2422, 3887,
3836, 2444, 592, 40, 1261, 3190, 3999, 3328, 1436, 166,
329, 2053, 3776, 3898, 2496, 657, 23, 918, 2767, 4055,
3487, 1678, 145, 323, 1869, 3469, 4022, 2811, 946, 2,
893, 2765, 3965, 3766, 2029, 358, 139, 1640, 3453, 4082,
2982, 1243, 45, 598, 2429, 3950, 3760, 1209, 3053, 4019,
3419, 1696, 160, 339, 2016, 3730, 3935, 2852, 909, 62,
900, 2829, 4044, 3525, 1830, 326, 152, 1728, 3504, 4042,
2861, 973, 6, 591, 2429, 3968, 3749, 2065, 364, 128,
1483, 3172, 4094, 3145, 1285, 56, 559, 2386, 3861, 3937,
2463, 612, 55, 1243, 3171, 4079, 3277, 1645, 187, 353,
2058, 3745, 3948, 2509, 758, 0, 915, 2852, 4045, 3483,
1700, 222, 223, 1696, 3500, 4045, 2837, 926, 4, 801,
2660, 3986, 3738, 2052, 394, 137, 1636, 3450, 4066, 3163,
1261, 82, 555, 2451, 3915, 3812, 2230, 555, 53, 1262,
3182, 4084, 3218, 1307, 108, 358, 1990, 3785, 3931, 2445,
646, 19, 1116, 2809, 4046, 3485, 1627, 170, 325, 1976,
3639, 4041, 2858, 913, 4, 918, 2779, 4068, 3604, 1995,
331, 160, 1654, 3467, 3951, 2944, 1028, 65, 624, 2457,
3929, 3762, 2078, 404, 77, 1280, 3206, 4085, 3179, 1277,
49, 555, 2276, 3734, 3915, 2457, 605, 96, 1234, 3168,
4084, 3490, 1664, 161, 341, 2034, 3762, 3919, 2633, 928,
20, 919, 2825, 4040, 3510, 1691, 228, 112, 1602, 3520,
4057, 2852, 941, 52, 731, 2466, 3835, 3737, 2130, 312,
158, 1572, 3364, 4086, 3217, 1284, 82, 586, 2397, 3906,
3820, 2452, 602, 42, 1216, 3163, 4087, 3256, 1435, 157,
355, 2011, 3840, 3962, 2482, 668, 34, 889, 2852, 4052,
3519, 1661, 168, 326, 1867, 3469, 3967, 2834, 919, 2,
889, 2788, 4023, 3675, 2069, 345, 153, 1654, 3488, 4066,
2990, 1284, 60, 529, 2450, 3949, 3759, 2134, 475, 37,
1261, 3181, 4094, 3198, 1293, 80, 465, 2046, 3739, 3949,
2454, 616, 53, 1198, 3028, 4022, 3483, 1647, 191, 339,
2040, 3707, 3995, 2853, 934, 0, 893, 2836, 3988, 3551,
1823, 341, 157, 1682, 3529, 4056, 2857, 973, 25, 614,
2443, 3913, 3693, 1247, 3168, 4074, 3312, 1653, 147, 341,
2066, 3737, 3940, 2550, 739, 14, 909, 2835, 4054, 3517,
1673, 185, 256, 1654, 3510, 3995, 2860, 928, 5, 854,
2678, 3929, 3701, 2104, 321, 178, 1612, 3472, 4059, 3183,
1270, 43, 596, 2445, 3921, 3769, 2230, 577, 45, 1257,
3161, 4077, 3206, 1330, 100, 323, 2047, 3844, 3984, 2473,
616, 19, 1128, 2852, 4064, 3493, 1660, 172, 336, 1995,
3615, 4064, 2831, 918, 13, 926, 2823, 4050, 3589, 2049,
355, 167, 1637, 3478, 4059, 2897, 1062, 4, 617, 2464,
3925, 3764, 2015, 347, 124, 1265, 3188, 4070, 3225, 1318,
57, 566, 2274, 3754, 3894, 2468, 587, 47, 1254, 3074,
4095, 3455, 1682, 123, 360, 2025, 3725, 3963, 2608, 916,
0, 917, 2803, 4057, 3515, 1721, 247, 147, 1650, 3496,
4041, 2870, 923, 14, 786, 2452, 3944, 3766, 2015, 349,
158, 1576, 3365, 4094, 3176, 1275, 64, 646, 2386, 3887,
3838, 2438, 595, 32, 1255, 3200, 4071, 3239, 1462, 105,
379, 2064, 3775, 3945, 2497, 673, 10, 934, 2853, 4082,
3520, 1673, 185, 301, 1865, 3455, 4086, 2793, 937, 8,
892, 2719, 4033, 3711, 2031, 358, 147, 1636, 3472, 4068,
2998, 1183, 62, 581, 2434, 3938, 3766, 2121, 469, 89,
1303, 3099, 4095, 3197, 1285, 66, 505, 2084, 3757, 3917,
2480, 597, 30, 1195, 2975, 4068, 3492, 1666, 183, 315,
2052, 3718, 3978, 2856, 893, 28, 863, 2827, 4041, 3525,
1827, 342, 161, 1661, 3514, 4054, 2834, 1001, 21, 599,
2450, 3931, 3711, 2082, 368, 128, 1470, 3163, 4093, 3202,
1243, 32, 575, 2367, 3862, 3949, 2474, 603, 26, 1247,
3141, 4047, 3306, 1641, 160, 344, 2047, 3735, 3953, 2517,
754, 0, 893, 2823, 4072, 3501, 1688, 220, 251, 1645,
3500, 4082, 2850, 935, 16, 845, 2684, 4040, 74, 1241,
3173, 4086, 3211, 1354, 96, 352, 2012, 3840, 3927, 2458,
603, 36, 1126, 2889, 4031, 3497, 1601, 214, 354, 2024,
3609, 4040, 2850, 915, 2, 893, 2751, 4072, 3597, 2056,
349, 160, 1627, 3437, 4064, 2907, 1037, 78, 579, 2468,
3935, 3739, 2097, 387, 41, 1279, 3171, 4086, 3174, 1306,
62, 527, 2322, 3695, 3958, 2424, 621, 58, 1213, 3119,
4022, 3437, 1690, 154, 341, 2082, 3736, 3965, 2614, 914,
18, 893, 2826, 4084, 3502, 1738, 255, 148, 1714, 3419,
4066, 2860, 940, 24, 785, 2437, 3941, 3762, 2011, 367,
153, 1568, 3381, 4095, 3173, 1298, 19, 589, 2450, 3905,
3803, 2461, 589, 43, 1267, 3147, 4091, 3233, 1428, 167,
350, 2028, 3766, 3835, 2459, 676, 16, 895, 2834, 4030,
3521, 1661, 154, 255, 1891, 3492, 4052, 2854, 895, 0,
897, 2816, 4004, 3705, 2053, 331, 179, 1617, 3469, 4058,
2984, 1243, 64, 609, 2450, 3944, 3760, 2113, 496, 11,
1284, 3181, 4086, 3206, 1328, 68, 482, 2043, 3808, 3919,
2454, 584, 39, 1199, 3028, 4030, 3498, 1662, 161, 332,
2034, 3679, 3979, 2860, 946, 0, 928, 2830, 4043, 3557,
1846, 356, 164, 1636, 3498, 4082, 2779, 992, 41, 595,
2438, 3954, 3777, 2092, 390, 150, 1498, 3149, 4082, 3161,
1279, 33, 578, 2346, 3850, 3930, 2447, 606, 63, 1252,
3161, 4087, 3302, 1627, 160, 390, 2080, 3727, 3984, 2523,
748, 32, 908, 2828, 4022, 3529, 1661, 146, 271, 1657,
3465, 4058, 2852, 918, 0, 850, 2666, 3914, 3777, 2053,
338, 156, 1615, 3456, 4057, 3149, 1274, 27, 588, 2448,
3941, 3766, 2185, 627, 51, 1253, 3180, 4086, 3209, 1356,
113, 329, 2070, 3776, 3949, 2468, 623, 46, 1088, 2848,
4064, 3513, 1701, 114, 329, 1995, 3640, 4041, 2853, 895,
34, 887, 2827, 4017, 110, 1261, 3186, 4095, 3181, 1261,
49, 521, 2267, 3739, 3917, 2482, 584, 56, 1222, 3106,
4059, 3439, 1698, 171, 333, 2032, 3727, 3958, 2587, 928,
18, 893, 2779, 4084, 3519, 1730, 262, 145, 1644, 3453,
4047, 2839, 934, 24, 784, 2441, 3915, 3693, 2064, 357,
160, 1560, 3355, 4077, 3254, 1253, 54, 614, 2395, 3941,
3853, 2386, 597, 54, 1245, 3218, 4089, 3199, 1427, 167,
388, 1951, 3737, 3941, 2475, 651, 12, 902, 2783, 4066,
3508, 1649, 191, 316, 1922, 3487, 4030, 2889, 884, 14,
876, 2738, 4041, 3711, 2034, 341, 166, 1616, 3437, 4064,
2990, 1247, 98, 600, 2444, 3935, 3767, 2121, 461, 84,
1248, 3146, 4095, 3189, 1279, 69, 534, 2011, 3752, 3927,
2443, 621, 102, 1145, 3044, 4053, 3469, 1664, 155, 333,
2031, 3711, 3949, 2864, 915, 0, 889, 2823, 4034, 3584,
1837, 370, 176, 1646, 3469, 4034, 2876, 969, 9, 626,
2395, 3940, 3757, 2061, 351, 143, 1470, 3147, 4093, 3180,
1263, 62, 562, 2366, 3861, 3929, 2412, 575, 18, 1261,
3134, 4043, 3380, 1689, 164, 369, 2015, 3679, 3963, 2528,
790, 0, 920, 2840, 4013, 3510, 1688, 225, 225, 1628,
3514, 4033, 2838, 944, 8, 861, 2647, 3917, 3731, 2029,
390, 123, 1609, 3432, 4082, 3216, 1259, 54, 589, 2486,
3944, 3791, 2220, 592, 32, 1260, 3216, 4043, 3183, 1343,
112, 348, 2025, 3766, 3895, 2457, 650, 23, 1116, 2779,
3990, 3512, 1609, 184, 309, 1974, 3615, 4057, 2841, 928,
0, 905, 2795, 3963, 3628, 2075, 321, 160, 1629, 3492,
4022, 2907, 1081, 23, 607, 2402, 3956, 3757, 2080, 420,
75, 1296, 3190, 4091, 3181, 1298, 31, 555, 2338, 3667,
3965, 2442, 608, 46, 1234, 3137, 4077, 3476, 1650, 180,
339, 2015, 3721, 3929, 2605, 912, 3, 919, 2817, 4082,
137, 1565, 3375, 4057, 3180, 1277, 48, 571, 2441, 3942,
3803, 2464, 596, 27, 1261, 3163, 4059, 3197, 1410, 164,
319, 2043, 3709, 3986, 2489, 653, 26, 919, 2836, 4035,
3455, 1696, 141, 299, 1869, 3477, 4066, 2834, 857, 20,
890, 2719, 4005, 3709, 2015, 331, 169, 1674, 3490, 4050,
2984, 1261, 52, 597, 2454, 3933, 3776, 2144, 456, 42,
1243, 3173, 4022, 3163, 1312, 64, 484, 2050, 3735, 3941,
2482, 587, 41, 1256, 3017, 4065, 3498, 1644, 157, 350,
1956, 3722, 3993, 2828, 934, 0, 898, 2809, 4040, 3537,
1824, 333, 166, 1621, 3437, 4080, 2863, 985, 17, 614,
2443, 3839, 3840, 2058, 367, 131, 1497, 3170, 4095, 3189,
1298, 26, 588, 2376, 3968, 3934, 2429, 624, 18, 1280,
3172, 4090, 3273, 1661, 158, 349, 2038, 3739, 3965, 2521,
768, 0, 913, 2832, 4056, 3510, 1667, 200, 270, 1629,
3494, 4071, 2827, 930, 26, 825, 2651, 3944, 3728, 2061,
384, 99, 1619, 3454, 4059, 3202, 1280, 50, 569, 2445,
3964, 3781, 2203, 616, 42, 1183, 3163, 4076, 3207, 1365,
72, 339, 2057, 3741, 3934, 2454, 635, 32, 1103, 2827,
4049, 3496, 1682, 170, 303, 1961, 3625, 4082, 2835, 902,
7, 881, 2809, 3949, 3602, 2050, 326, 153, 1636, 3478,
4059, 2916, 1061, 38, 613, 2437, 3920, 3777, 2085, 384,
65, 1316, 3173, 4090, 3190, 1243, 60, 542, 2282, 3753,
3917, 2482, 603, 25, 1238, 3113, 4059, 3485, 1631, 153,
333, 2052, 3720, 3978, 2617, 891, 8, 952, 2774, 4069,
3520, 1705, 259, 141, 1666, 3455, 3967, 2855, 927, 18,
778, 2415, 3986, 3744, 2055, 353, 146, 1549, 3375, 4086,
3209, 1280, 45, 583, 2418, 3890, 3829, 2435, 607, 32,
1215, 3145, 4076, 3242, 1446, 131, 351, 2055, 3758, 3934,
2482, 672, 32, 914, 2806, 4070, 112, 1661, 3464, 4064,
2998, 1260, 54, 556, 2449, 3936, 3751, 2132, 480, 5,
1284, 3220, 4031, 3226, 1292, 86, 473, 2048, 3711, 3984,
2488, 617, 2, 1149, 3035, 4066, 3474, 1667, 171, 350,
1997, 3730, 3979, 2890, 917, 0, 907, 2811, 4077, 3584,
1813, 350, 178, 1625, 3533, 4085, 2855, 960, 13, 601,
2482, 3892, 3754, 2046, 372, 133, 1486, 3147, 4077, 3218,
1243, 44, 584, 2386, 3845, 3986, 2441, 611, 38, 1231,
3149, 4086, 3279, 1647, 149, 362, 2021, 3745, 3953, 2503,
762, 0, 959, 2848, 4042, 3510, 1673, 204, 300, 1603,
3455, 4058, 2777, 941, 51, 859, 2651, 3924, 3750, 2055,
349, 149, 1622, 3419, 4063, 3196, 1266, 48, 593, 2409,
3940, 3790, 2215, 606, 42, 1262, 3163, 4077, 3218, 1349,
95, 342, 2054, 3707, 3965, 2486, 612, 39, 1093, 2834,
4038, 3483, 1647, 172, 321, 1988, 3583, 4035, 2793, 941,
48, 916, 2793, 4027, 3596, 2061, 383, 109, 1656, 3496,
4033, 2920, 1039, 48, 605, 2415, 3968, 3746, 2093, 432,
81, 1284, 3135, 4070, 3205, 1290, 53, 562, 2265, 3725,
3935, 2444, 610, 9, 1229, 3125, 4042, 3477, 1646, 156,
355, 2009, 3745, 3935, 2597, 950, 0, 927, 2829, 4030,
3481, 1735, 245, 132, 1654, 3510, 4051, 2875, 928, 19,
770, 2449, 3940, 3770, 2039, 358, 156, 1549, 3428, 4077,
3183, 1273, 19, 618, 2387, 3912, 3828, 2447, 612, 36,
1247, 3181, 4095, 3229, 1442, 137, 333, 2058, 3746, 3970,
2505, 637, 71, 901, 2826, 4022, 3532, 1714, 181, 315,
1873, 3467, 4045, 2831, 911, 5, 868, 2738, 3970, 3760,
2060, 351, 141, 1658, 3455, 4045, 3008, 1250, 72, 597,
2423, 3903, 3785, 2149, 482, 0, 1279, 3185, 4076, 3222,
1317, 57, 492, 2044, 3754, 3954, 2458, 618, 39, 1177,
3037, 4068, 134, 1647, 3478, 4040, 2881, 953, 21, 621,
2443, 3918, 3766, 1999, 396, 118, 1473, 3165, 4077, 3200,
1252, 64, 574, 2377, 3881, 3940, 2482, 592, 52, 1253,
3099, 4093, 3346, 1658, 180, 327, 2086, 3776, 3966, 2522,
740, 16, 898, 2885, 4061, 3501, 1663, 191, 288, 1644,
3504, 4022, 2853, 927, 17, 845, 2676, 3968, 3785, 2060,
374, 155, 1636, 3447, 4074, 3174, 1286, 13, 620, 2448,
3903, 3801, 2221, 624, 39, 1252, 3192, 4059, 3191, 1350,
82, 352, 2037, 3749, 3942, 2453, 633, 30, 1110, 2783,
3983, 3506, 1689, 161, 331, 1965, 3634, 4059, 2880, 953,
20, 829, 2777, 3966, 3613, 2029, 370, 123, 1641, 3500,
4041, 2906, 1069, 14, 608, 2469, 3923, 3741, 2088, 399,
106, 1296, 3161, 4095, 3181, 1298, 43, 568, 2212, 3752,
3934, 2447, 608, 62, 1179, 3154, 4031, 3520, 1645, 173,
350, 2025, 3766, 3977, 2591, 932, 0, 886, 2870, 4041,
3519, 1760, 256, 150, 1651, 3498, 4064, 2841, 946, 34,
762, 2445, 3954, 3723, 2080, 409, 132, 1570, 3378, 4059,
3180, 1298, 37, 585, 2422, 3839, 3876, 2454, 618, 57,
1251, 3149, 4082, 3227, 1423, 165, 343, 2038, 3733, 3964,
2476, 665, 44, 888, 2848, 4023, 3521, 1686, 155, 317,
1849, 3489, 4023, 2815, 914, 0, 889, 2788, 4001, 3762,
2066, 339, 160, 1598, 3456, 4071, 2998, 1243, 47, 589,
2450, 3903, 3771, 2130, 459, 28, 1261, 3183, 4089, 3206,
1275, 71, 509, 2070, 3762, 3953, 2461, 617, 51, 1169,
3053, 4046, 3504, 1654, 178, 333, 1983, 3708, 4010, 2826,
873, 18, 902, 2821, 4040, 3570, 1755, 349, 157, 1648,
3437, 3999, 2811, 985, 21, 603, 2450, 3935, 3739, 2093,
370, 136, 1478, 3179, 4077, 3222, 1275, 38, 580, 2404,
3862, 3968, 2445, 619, 25, 1248, 3162, 4084, 262, 1627,
3471, 4010, 2837, 903, 0, 845, 2706, 3803, 3856, 2068,
350, 141, 1611, 3437, 4083, 3099, 1301, 40, 576, 2448,
3919, 3771, 2178, 612, 45, 1243, 3159, 4086, 3236, 1350,
96, 338, 2011, 3763, 3807, 2479, 633, 16, 1108, 2854,
4043, 3552, 1702, 128, 294, 1971, 3657, 4068, 2848, 920,
0, 885, 2813, 4023, 3596, 2057, 370, 135, 1674, 3449,
4040, 2960, 1051, 27, 621, 2453, 3913, 3766, 2015, 393,
100, 1275, 3168, 4086, 3217, 1312, 46, 561, 2258, 3750,
3942, 2399, 588, 61, 1240, 3137, 4095, 3487, 1637, 173,
346, 2048, 3840, 3948, 2610, 939, 0, 928, 2840, 4036,
3510, 1728, 229, 170, 1648, 3490, 4031, 2815, 949, 15,
751, 2450, 3948, 3766, 2082, 341, 146, 1591, 3355, 4077,
3222, 1241, 72, 592, 2397, 3914, 3834, 2438, 635, 55,
1302, 3147, 4077, 3273, 1453, 139, 357, 2050, 3732, 3914,
2488, 662, 32, 927, 2848, 4044, 3510, 1627, 216, 324,
1830, 3517, 4022, 2779, 941, 48, 886, 2776, 4006, 3760,
2011, 365, 151, 1643, 3445, 4055, 2976, 1298, 16, 607,
2448, 3931, 3750, 2131, 448, 98, 1235, 3185, 4081, 3179,
1270, 102, 484, 2068, 3739, 3973, 2448, 647, 61, 1202,
3017, 4077, 3504, 1611, 177, 329, 2036, 3712, 3990, 2812,
920, 0, 928, 2834, 4057, 3529, 1840, 338, 177, 1627,
3453, 4086, 2921, 997, 71, 590, 2431, 3976, 3776, 2045,
328, 124, 1477, 3163, 4077, 3222, 1232, 44, 582, 2335,
3876, 3986, 2435, 613, 43, 1248, 3134, 4059, 3333, 1649,
177, 345, 2020, 3762, 3931, 2524, 734, 28, 921, 2837,
4029, 3508, 1686, 185, 260, 1666, 3474, 4041, 2861, 930,
9, 848, 2651, 3949, 3741, 2037, 368, 141, 1632, 3450,
4067, 3145, 1275, 41, 594, 2448, 3839, 3795, 2236, 593,
40, 1282, 3163, 4077, 345, 1951, 3646, 4041, 2811, 928,
50, 867, 2783, 4013, 3574, 2043, 313, 170, 1636, 3478,
4047, 2905, 1084, 1, 593, 2441, 3941, 3766, 2079, 414,
89, 1280, 3177, 4093, 3191, 1252, 70, 539, 2287, 3749,
3946, 2448, 607, 38, 1229, 3138, 4080, 3493, 1639, 182,
321, 2061, 3750, 3956, 2604, 930, 0, 933, 2854, 4030,
3480, 1736, 233, 166, 1627, 3483, 4050, 2848, 958, 15,
776, 2466, 3968, 3733, 2066, 346, 178, 1592, 3347, 4081,
3135, 1273, 45, 583, 2424, 3914, 3830, 2419, 608, 38,
1257, 3188, 4095, 3265, 1444, 151, 347, 2064, 3785, 3949,
2494, 664, 6, 907, 2870, 4041, 3437, 1645, 167, 299,
1867, 3483, 4042, 2838, 907, 6, 944, 2761, 3999, 3750,
2039, 358, 210, 1655, 3423, 4064, 2996, 1266, 53, 619,
2453, 3948, 3759, 2111, 475, 27, 1290, 3211, 4095, 3187,
1293, 64, 489, 2066, 3762, 3927, 2471, 625, 48, 1203,
3090, 4030, 3518, 1610, 161, 346, 2000, 3692, 4022, 2811,
924, 11, 891, 2852, 4022, 3584, 1823, 339, 159, 1645,
3510, 4050, 2885, 970, 39, 589, 2454, 3931, 3752, 2043,
370, 131, 1481, 3218, 4059, 3198, 1263, 61, 595, 2378,
3876, 3945, 2461, 612, 48, 1243, 3147, 4095, 3313, 1651,
166, 337, 2066, 3739, 3956, 2521, 744, 6, 907, 2848,
4059, 3451, 1696, 208, 267, 1643, 3506, 4057, 2843, 932,
12, 857, 2665, 3948, 3753, 1992, 385, 136, 1632, 3389,
4085, 3202, 1260, 62, 585, 2461, 3895, 3784, 2229, 585,
70, 1243, 3181, 4077, 3232, 1342, 90, 335, 2011, 3749,
3986, 2472, 629, 25, 1114, 2829, 4022, 3529, 1645, 175,
351, 1887, 3625, 4045, 2848, 918, 20, 901, 2801, 4033,
3609, 2052, 364, 139, 1645, 3506, 4080, 2909, 1067, 59,
616, 2464, 3940, 3711, 2066, 399, 123, 1238, 3216, 4091,
363, 2015, 3766, 3931, 2660, 901, 13, 902, 2852, 4086,
3529, 1764, 252, 148, 1666, 3481, 4059, 2852, 946, 15,
795, 2448, 3916, 3766, 2011, 364, 160, 1577, 3371, 4095,
3184, 1270, 33, 571, 2431, 3934, 3793, 2469, 607, 31,
1274, 3155, 4079, 3254, 1419, 204, 343, 2031, 3756, 3986,
2508, 671, 0, 927, 2852, 4037, 3510, 1627, 194, 271,
1873, 3516, 4042, 2866, 942, 0, 895, 2742, 3967, 3769,
2048, 347, 147, 1644, 3476, 4047, 3000, 1258, 55, 596,
2413, 3933, 3762, 2144, 479, 44, 1241, 3190, 4086, 3214,
1308, 62, 479, 2085, 3766, 3949, 2465, 620, 54, 1167,
3053, 4026, 3506, 1611, 163, 338, 1997, 3730, 4004, 2817,
914, 0, 889, 2779, 3967, 3525, 1821, 363, 163, 1648,
3485, 4059, 2853, 979, 0, 612, 2464, 3961, 3768, 2061,
390, 113, 1473, 3280, 4045, 3216, 1285, 57, 594, 2368,
3830, 3839, 2441, 608, 40, 1247, 3160, 4077, 3350, 1622,
190, 340, 2050, 3733, 3938, 2540, 744, 0, 879, 2852,
4056, 3509, 1685, 197, 264, 1618, 3499, 4074, 2849, 909,
24, 896, 2697, 3921, 3739, 2052, 371, 148, 1650, 3449,
4059, 3183, 1270, 55, 593, 2413, 4018, 3739, 2272, 623,
30, 1270, 3163, 4090, 3213, 1359, 111, 355, 2052, 3766,
3978, 2468, 599, 29, 1100, 2866, 4059, 3503, 1729, 128,
307, 1965, 3625, 3999, 2829, 918, 0, 907, 2850, 4050,
3616, 2080, 359, 120, 1652, 3493, 4064, 2892, 1073, 39,
597, 2450, 3931, 3749, 2069, 414, 104, 1284, 3219, 4085,
3198, 1298, 32, 557, 2370, 3728, 3968, 2456, 614, 35,
1229, 3122, 4059, 3508, 1647, 146, 347, 2015, 3674, 3959,
2597, 893, 7, 927, 2827, 4050, 3510, 1663, 264, 178,
1609, 3510, 4051, 2856, 943, 11, 786, 2450, 3946, 3746,
2041, 380, 154, 1556, 3376, 4031, 336, 2031, 3748, 3915,
2465, 674, 0, 917, 2831, 4047, 3493, 1682, 159, 313,
1865, 3506, 4026, 2835, 909, 14, 859, 2765, 3995, 3727,
2029, 355, 169, 1639, 3481, 4030, 2971, 1312, 35, 601,
2438, 3941, 3761, 2089, 490, 42, 1262, 3210, 4063, 3181,
1299, 35, 500, 1992, 3784, 3946, 2429, 646, 16, 1193,
3037, 4051, 3504, 1649, 163, 320, 2007, 3748, 3989, 2830,
918, 0, 912, 2821, 4045, 3518, 1801, 349, 166, 1652,
3506, 4050, 2881, 973, 62, 598, 2436, 3931, 3757, 2102,
339, 136, 1469, 3179, 4091, 3181, 1318, 44, 558, 2389,
3873, 3924, 2454, 588, 27, 1224, 3162, 4085, 3305, 1682,
164, 332, 2050, 3719, 3913, 2509, 742, 0, 916, 2811,
4068, 3507, 1674, 196, 262, 1645, 3510, 4048, 2815, 911,
4, 848, 2651, 3949, 3762, 2066, 346, 164, 1617, 3445,
4054, 3190, 1301, 9, 568, 2449, 3917, 3779, 2219, 598,
34, 1257, 3188, 4059, 3209, 1325, 112, 320, 2084, 3762,
3946, 2453, 621, 54, 1097, 2829, 4084, 3510, 1655, 183,
332, 1965, 3613, 4026, 2779, 909, 10, 902, 2790, 4041,
3616, 2082, 338, 158, 1651, 3483, 4076, 2946, 1051, 46,
606, 2466, 3930, 3744, 2102, 379, 116, 1261, 3202, 4079,
3174, 1275, 56, 566, 2267, 3709, 3994, 2443, 617, 40,
1246, 3145, 4078, 3493, 1653, 166, 348, 2038, 3738, 3935,
2612, 918, 4, 901, 2834, 4059, 3558, 1747, 207, 155,
1636, 3510, 4043, 2815, 937, 0, 771, 2395, 3931, 3753,
2037, 353, 173, 1574, 3323, 4077, 3218, 1256, 48, 595,
2416, 3913, 3877, 2482, 614, 24, 1257, 3149, 4086, 3227,
1430, 147, 348, 2043, 3693, 3992, 2456, 633, 36, 919,
2809, 4040, 3447, 1645, 186, 299, 1876, 3437, 4064, 2852,
934, 11, 901, 2816, 3997, 3731, 2047, 368, 84, 1627,
3482, 4022, 483, 2041, 3695, 3986, 2427, 603, 61, 1196,
3040, 4030, 3449, 1647, 209, 361, 1975, 3693, 3951, 2866,
901, 8, 893, 2820, 4046, 3539, 1819, 374, 159, 1659,
3499, 4064, 2868, 973, 32, 591, 2482, 3902, 3786, 2057,
375, 129, 1482, 3163, 4077, 3195, 1234, 42, 585, 2373,
3853, 3986, 2456, 619, 36, 1252, 3200, 4092, 3332, 1666,
138, 362, 2049, 3727, 3940, 2521, 736, 12, 928, 2767,
4068, 3510, 1682, 197, 260, 1664, 3494, 4037, 2866, 907,
18, 854, 2663, 3917, 3766, 2031, 356, 160, 1605, 3444,
4063, 3163, 1252, 28, 593, 2456, 3911, 3766, 2203, 604,
51, 1266, 3183, 4094, 3199, 1307, 104, 346, 2011, 3677,
3937, 2464, 620, 37, 1120, 2832, 4045, 3499, 1650, 173,
314, 1965, 3712, 4050, 2826, 915, 2, 891, 2820, 4022,
3648, 2077, 358, 154, 1674, 3391, 4029, 2893, 1061, 38,
598, 2439, 3933, 3766, 2041, 408, 85, 1243, 3180, 4091,
3200, 1277, 35, 549, 2304, 3744, 3925, 2439, 605, 54,
1217, 3113, 4084, 3455, 1654, 163, 347, 2052, 3762, 3935,
2574, 912, 18, 889, 2864, 4086, 3472, 1742, 249, 157,
1652, 3500, 4022, 2809, 952, 16, 786, 2425, 3968, 3784,
2058, 353, 162, 1561, 3323, 4077, 3208, 1271, 43, 610,
2395, 3940, 3803, 2468, 614, 39, 1263, 3184, 4077, 3250,
1444, 172, 345, 2041, 3737, 3946, 2478, 641, 22, 932,
2832, 3993, 3473, 1665, 167, 318, 1867, 3452, 4095, 2808,
909, 0, 889, 2757, 4004, 3746, 2011, 357, 199, 1631,
3437, 4026, 2971, 1280, 48, 600, 2394, 3986, 3789, 2136,
460, 47, 1275, 3170, 4095, 3197, 1295, 66, 496, 2011,
3695, 3902, 2454, 585, 28, 1167, 3049, 4068, 3455, 1664,
158, 348, 2010, 3707, 4024, 2765, 928, 50, 862, 2795,
4049, 3529, 1791, 294, 125, 1621, 3483, 40, 578, 2432,
3884, 4018, 2464, 618, 32, 1244, 3131, 4087, 3319, 1652,
174, 331, 2034, 3728, 3931, 2540, 754, 0, 930, 2815,
4057, 3508, 1698, 185, 249, 1667, 3506, 4059, 2829, 946,
0, 856, 2671, 3900, 3766, 1993, 347, 156, 1631, 3459,
4073, 3173, 1286, 19, 576, 2428, 3970, 3784, 2197, 608,
39, 1266, 3163, 4061, 3221, 1340, 98, 333, 2052, 3746,
3938, 2458, 615, 36, 1114, 2779, 4065, 3508, 1653, 118,
352, 1973, 3646, 4022, 2811, 950, 0, 920, 2820, 4031,
3574, 2029, 318, 128, 1661, 3491, 4058, 2871, 1068, 54,
585, 2413, 3986, 3714, 2082, 409, 100, 1330, 3103, 4063,
3103, 1316, 54, 552, 2294, 3739, 3917, 2486, 585, 42,
1252, 3200, 4061, 3490, 1645, 203, 353, 2048, 3726, 3958,
2616, 897, 0, 905, 2834, 4041, 3506, 1707, 235, 155,
1645, 3528, 4064, 2852, 950, 0, 777, 2399, 3933, 3756,
2057, 360, 151, 1563, 3371, 4089, 3167, 1278, 37, 604,
2408, 3901, 3827, 2464, 599, 24, 1286, 3163, 4061, 3181,
1430, 156, 345, 2011, 3739, 4020, 2480, 662, 24, 909,
2866, 4043, 3487, 1647, 173, 305, 1920, 3504, 4052, 2811,
928, 0, 888, 2784, 4011, 3749, 2050, 338, 149, 1632,
3470, 4064, 2993, 1266, 0, 613, 2447, 3927, 3766, 2113,
466, 0, 1275, 3181, 4093, 3202, 1318, 53, 508, 2037,
3748, 3968, 2426, 630, 16, 1197, 3006, 4023, 3529, 1666,
137, 341, 2048, 3705, 3990, 2809, 914, 25, 918, 2779,
4049, 3574, 1771, 347, 162, 1639, 3508, 4059, 2870, 981,
27, 608, 2447, 3894, 3766, 2043, 356, 166, 1473, 3154,
4063, 3236, 1277, 38, 578, 2373, 3904, 3933, 2450, 624,
84, 1216, 3149, 4079, 3312, 1627, 172, 390, 1987, 3675,
3957, 2528, 734, 18, 905, 2830, 4094, 3498, 1736, 189,
261, 1672, 3491, 4053, 602, 2413, 3895, 3785, 2216, 599,
34, 1282, 3167, 4059, 3173, 1344, 108, 370, 2043, 3707,
3927, 2469, 621, 33, 1102,
};


/*
*********************************************************************************************************
*        函 数 名: arm_fir_f32_lp
*        功能说明: 调用函数arm_fir_f32_lp实现低通滤波器
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static void arm_fir_f32_lp(void)
{
        uint32_t i;
        arm_fir_instance_f32 S;
        float32_t*inputF32, *outputF32;

        /* 初始化输入输出缓存指针 */
        inputF32 = &testInput_f32_50Hz_200Hz;
        outputF32 = &testOutput;

        /* 初始化结构体S */
        arm_fir_init_f32(&S,                           
                                       NUM_TAPS,
                      (float32_t *)&firCoeffs32LP,
                         &firStateF32,
                         blockSize);

        /* 实现FIR滤波,这里每次处理1个点 */
        for(i=0; i < numBlocks; i++)
        {
                arm_fir_f32(&S, inputF32 + (i * blockSize),outputF32 + (i * blockSize),blockSize);
        }
       

        /* 打印滤波后结果 */
        for(i=0; i<TEST_LENGTH_SAMPLES; i++)
        {
                printf("%f, %f\r\n", testOutput, inputF32);
        }

}


/*
*********************************************************************************************************
*        函 数 名: main
*        功能说明: c程序入口
*        形    参: 无
*        返 回 值: 错误代码(无需处理)
*********************************************************************************************************
*/
int main(void)
{
        uint8_t ucKeyCode;                /* 按键代码 */
        uint16_t i;

       
        bsp_Init();                /* 硬件初始化 */
        PrintfLogo();        /* 打印例程信息到串口1 */

        PrintfHelp();        /* 打印操作提示信息 */
       
        for(i=0; i<TEST_LENGTH_SAMPLES; i++)
        {
                /* 50Hz正弦波+200Hz正弦波,采样率1KHz */
                testInput_f32_50Hz_200Hz = ADC_SampleBuffer;
        }
       

        bsp_StartAutoTimer(0, 100);        /* 启动1个100ms的自动重装的定时器 */

        /* 进入主程序循环体 */
        while (1)
        {
                bsp_Idle();                /* 这个函数在bsp.c文件。用户可以修改这个函数实现CPU休眠和喂狗 */
               

                if (bsp_CheckTimer(0))        /* 判断定时器超时时间 */
                {
                        /* 每隔100ms 进来一次 */
                        bsp_LedToggle(2);        /* 翻转LED的状态 */
                }
               
                ucKeyCode = bsp_GetKey();        /* 读取键值, 无键按下时返回 KEY_NONE = 0 */
                if (ucKeyCode != KEY_NONE)
                {
                        switch (ucKeyCode)
                        {
                                case KEY_DOWN_K1:                  /* K1键按下 */
                                        arm_fir_f32_lp();
                                        break;
                               
       
                                default:
                                        /* 其它的键值不处理 */
                                        break;
                        }
                }

        }
}

/*
*********************************************************************************************************
*        函 数 名: PrintfHelp
*        功能说明: 显示操作提示菜单
*        形    参: 无
*        返 回 值: 无
*********************************************************************************************************
*/
static void PrintfHelp(void)
{
        printf("1. 启动一个自动重装软件定时器,每100ms翻转一次LED2\r\n");
        printf("2. 按下按键K1,打印原始波形数据和滤波后的波形数据\r\n");
       
        printf("数组大小 = %d\r\n", sizeof(ADC_SampleBuffer)/2);
}

/*
*********************************************************************************************************
*        函 数 名: PrintfLogo
*        功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果
*        形    参: 无
*        返 回 值: 无
*********************************************************************************************************
*/
static void PrintfLogo(void)
{
        printf("*************************************************************\n\r");
       
        /* 检测CPU ID */
        {
                uint32_t CPU_Sn0, CPU_Sn1, CPU_Sn2;
               
                CPU_Sn0 = *(__IO uint32_t*)(0x1FFF7A10);
                CPU_Sn1 = *(__IO uint32_t*)(0x1FFF7A10 + 4);
                CPU_Sn2 = *(__IO uint32_t*)(0x1FFF7A10 + 8);

                printf("\r\nCPU : STM32F407IGT6, LQFP176, 主频: %dMHz\r\n", SystemCoreClock / 1000000);
                printf("UID = %08X %08X %08X\n\r", CPU_Sn2, CPU_Sn1, CPU_Sn0);
        }

        printf("\n\r");
        printf("*************************************************************\n\r");
        printf("* 例程名称   : %s\r\n", EXAMPLE_NAME);        /* 打印例程名称 */
        printf("* 例程版本   : %s\r\n", DEMO_VER);                /* 打印例程版本 */
        printf("* 发布日期   : %s\r\n", EXAMPLE_DATE);        /* 打印例程日期 */

        /* 打印ST的HAL库版本 */
        printf("* HAL库版本: V1.7.6 (STM32F407 HAL Driver)\r\n");
        printf("* \r\n");        /* 打印一行空格 */
        printf("* QQ    : 1295744630 \r\n");
        printf("* 旺旺: armfly\r\n");
        printf("* Email : armfly@qq.com \r\n");
        printf("* 微信公众号: armfly_com \r\n");
        printf("* 淘宝店: armfly.taobao.com\r\n");
        printf("* Copyright www.armfly.com 安富莱电子\r\n");
        printf("*************************************************************\n\r");
}

/***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/

balabal 发表于 2023-1-3 15:52:48

谢谢硬汉哥和那位坛友,强制转换会把两位u16类型的合成一位float类型的吗?我还是第一次知道,C语言还是不熟练。

balabal 发表于 2023-1-3 15:53:10

ME_Engineer 发表于 2023-1-3 11:10
这里直接把u16*强制类型转换为float32_t*是不对的吧?这样岂不是把两个u16合并为一个float32_t了吗?值应 ...

谢谢,谢谢

balabal 发表于 2023-1-3 16:09:08

ME_Engineer 发表于 2023-1-3 11:10
这里直接把u16*强制类型转换为float32_t*是不对的吧?这样岂不是把两个u16合并为一个float32_t了吗?值应 ...

想问下,这方面的知识在哪里可以知道呀?

byccc 发表于 2023-1-3 18:28:59

balabal 发表于 2023-1-3 16:09
想问下,这方面的知识在哪里可以知道呀?
函数形参是值传递,你这里仅仅是把变量地址传递过去了

之后你的函数里面是以float(4个字节大小)方式访问了,而不是以u16方式访问了,这就出问题了,你要转换为浮点后再供你这个函数访问

balabal 发表于 2023-1-3 20:19:31

byccc 发表于 2023-1-3 18:28
函数形参是值传递,你这里仅仅是把变量地址传递过去了

之后你的函数里面是以float(4个字节大小)方式 ...

哦,明白了,原来是这样,谢谢了
页: [1]
查看完整版本: fir滤波输出数据全为0