dql2016

  • 2024-12-16
  • 回复了主题帖: 2025年测评中心,DigiKey得捷赞助继续,欢迎跟帖推你期待的上线的测品啦~

    来点ADI高档ADC吧

  • 2024-12-10
  • 发表了主题帖: 【Follow me第二季第1期】补充:AD5270数字电位器的驱动应用

    AD5270是1024位、变阻器模式下的温度系数5 ppm/°C、1%电阻容差误差、SPI接口和50-TP存储器数字变阻器,性能十分优秀。 它集业界领先的可变电阻性能与非易失性存储器(NVM)于一体,并提供50次可编程(50-TP)存储器。将电阻值编程写入50-TP存储器之前,可进行无限次调整。这些器件不需要任何外部电压源来帮助熔断熔丝,并提供50次永久编程的机会。在50-TP激活期间,一个永久熔断熔丝指令会将游标位置固定。SPI接口控制时序如下: 使用开发板的SPI接口(任意IO软件模拟SPI)可以完成驱动控制,测试代码如下: // AD5270 commands - new digital potentiometer #define CMD_WR_RDAC 0x01 #define CMD_RD_RDAC 0x02 #define CMD_ST_RDAC 0x03 #define CMD_RST 0x04 #define CMD_RD_MEM 0x05 #define CMD_RD_ADDR 0x06 #define CMD_WR_CTRL 0x07 #define CMD_RD_CTRL 0x08 #define CMD_SHTDN 0x09 void vspi_write_word(const int chip_select, uint16_t data_to_send, const uint8_t bit_order, const uint8_t mode) { vspi->beginTransaction(SPISettings(SPI_FREQ_FAST, bit_order, mode)); digitalWrite(chip_select, LOW); //pull SS slow to prep other end for transfer vspi->transfer16(data_to_send); digitalWrite(chip_select, HIGH); //pull ss high to signify end of data transfer vspi->endTransaction(); } /* Write a 4-bit command and a 10-bit data word */ void AD5270_Write(const int chip_select, uint8_t cmd, uint16_t data){ uint16_t data_word = ((cmd & 0x0F) << 10) | (data & 0x03FF); vspi_write_word(chip_select, data_word, MSBFIRST, SPI_MODE1); } /* Enable/disable rheostat value changes */ void AD5270_LockUnlock(const int chip_select, uint8_t lock){ AD5270_Write(chip_select, CMD_WR_CTRL, lock ? 0 : 0x002); } /* Enable/disable hardware shutdown */ void AD5270_Shutdown(const int chip_select, uint8_t shutdown){ AD5270_Write(chip_select, CMD_SHTDN, shutdown ? 1 : 0); } /* Set the value of the digital rheostat - range is 0-0x3FF (0-100kOhm) */ void AD5270_Set(const int chip_select, uint16_t val) { AD5270_Write(chip_select, CMD_WR_RDAC, val); } #define CHIP_SEL_MEAS 10 // Chip select pin for measuring digital rheostat potentiometer void setup() { // put your setup code here, to run once: // Set voltage measurement gain to 1 (maximum current (5V pk-pk) must be within ADC range) AD5270_Shutdown(CHIP_SEL_MEAS, 1); AD5270_Set(CHIP_SEL_MEAS, 100); } void loop() { // put your main code here, to run repeatedly: } 测试接线和效果:  

  • 2024-11-29
  • 上传了资料: MQTTX-Setup-1.11.0-x64.exe

  • 2024-11-15
  • 回复了主题帖: TI 新推的两款C2000,一个带NPU,一个64位,有人想玩吗?

    高端,p,65有没有

  • 2024-11-14
  • 回复了主题帖: 【STM32H7S78-DK】测评+ADC DMA采集1024点FFT计算速度测评

    王1979 发表于 2024-11-12 08:32 **** 作者被禁止或删除 内容自动屏蔽 **** 算法调用不麻烦

  • 2024-11-11
  • 发表了主题帖: 【STM32H7S78-DK】测评+自适应滤波器计算速度测评

    ARM DSP 库提供了 LMS 最小均方自适应滤波和归一化最小均方自适应滤波器,自适应滤波器能够根据输入信号自动调整滤波系数进行数字滤波。对于一些应用来说,由于事先并不知道需要进行操作的参数,例如一些噪声信号的特性,所以要求 使用自适应的系数进行处理。在这种情况下,通常使用自适应滤波器,自适应滤波器使用反馈来调整滤 波器系数以及频率响应。 随着处理器性能的增强,自适应滤波器的应用越来越常见,STM32H7S78具有高性能的DSP运算性能,本帖将在STM32H7S78测试自适应滤波器的性能。 测试代码参考了大佬们的分享, #include "arm_math.h" #include "arm_const_structs.h" #define TEST_LENGTH_SAMPLES 2048 /* 采样点数 */ #define BLOCK_SIZE 2048 /* 调用一次arm_lms_norm_f32处理的采样点个数 */ #define NUM_TAPS 20 /* 滤波器系数个数 */ uint32_t blockSize = BLOCK_SIZE; uint32_t numBlocks = TEST_LENGTH_SAMPLES/BLOCK_SIZE; /* 需要调用arm_lms_norm_f32的次数 */ static float32_t testInput_f32_50Hz_200Hz[TEST_LENGTH_SAMPLES]={0}; /* 源波形 */ static float32_t testInput_f32_REF[TEST_LENGTH_SAMPLES]={0}; /* 参考波形 */ static float32_t test_f32_ERR[TEST_LENGTH_SAMPLES]={0}; /* 误差数据 */ static float32_t testOutput[TEST_LENGTH_SAMPLES]={0}; /* 滤波后的输出 */ static float32_t lmsStateF32[BLOCK_SIZE + NUM_TAPS - 1]={0}; /* 状态缓存,大小numTaps + blockSize - 1 */ static float32_t lmsCoeffs32[NUM_TAPS] = {0}; /* 滤波器系数 */ /* 测试数据 */ const float32_t OrigalData1[2048]= { 0.00000, 0.36677, 0.72529, 1.06752, 1.38594, 1.67365, 1.92468, 2.13407, 2.29805, 2.41413, 2.48113, 2.49924, 2.46995, 2.39603, 2.28138, 2.13093, 1.95044, 1.74633, 1.52547, 1.29494, 1.06183, 0.83301, 0.61491, 0.41334, 0.23333, 0.07898, -0.04666, -0.14163, -0.20510, -0.23738, -0.23987, -0.21495, -0.16591, -0.09678, -0.01218, 0.08287, 0.18316, 0.28343, 0.37862, 0.46405, 0.53553, 0.58958, 0.62349, 0.63545, 0.62458, 0.59094, 0.53557, 0.46034, 0.36798, 0.26186, 0.14594, 0.02454, -0.09778, -0.21643, -0.32697, -0.42528, -0.50772, -0.57132, -0.61382, -0.63386, -0.63098, -0.60568, -0.55941, -0.49453, -0.41421, -0.32239, -0.22356, -0.12265, -0.02488, 0.06453, 0.14042, 0.19802, 0.23302, 0.24184, 0.22170, 0.17080, 0.08840, -0.02514, -0.16832, -0.33850, -0.53200, -0.74414, -0.96942, -1.20162, -1.43402, -1.65960, -1.87125, -2.06199, -2.22519, -2.35480, -2.44554, -2.49308, -2.49418, -2.44684, -2.35033, -2.20528, -2.01367, -1.77877, -1.50506, -1.19815, -0.86457, -0.51162, -0.14717, 0.22059, 0.58339, 0.93308, 1.26189, 1.56265, 1.82901, 2.05558, 2.23810, 2.37355, 2.46024, 2.49779, 2.48720, 2.43073, 2.33184, 2.19506, 2.02584, 1.83038, 1.61537, 1.38786, 1.15494, 0.92360, 0.70048, 0.49165, 0.30247, 0.13742, 0.00000, -0.10740, -0.18349, -0.22814, -0.24232, -0.22801, -0.18818, -0.12656, -0.04757, 0.04393, 0.14275, 0.24365, 0.34147, 0.43133, 0.50885, 0.57024, 0.61248, 0.63338, 0.63168, 0.60708, 0.56023, 0.49266, 0.40678, 0.30572, 0.19321, 0.07346, -0.04904, -0.16970, -0.28400, -0.38767, -0.47686, -0.54830, -0.59946, -0.62859, -0.63487, -0.61842, -0.58030, -0.52253, -0.44795, -0.36022, -0.26362, -0.16293, -0.06327, 0.03010, 0.11200, 0.17746, 0.22198, 0.24165, 0.23337, 0.19492, 0.12514, 0.02394, -0.10764, -0.26740, -0.45208, -0.65738, -0.87812, -1.10833, -1.34148, -1.57064, -1.78872, -1.98864, -2.16362, -2.30735, -2.41421, -2.47948, -2.49947, -2.47166, -2.39482, -2.26903, -2.09572, -1.87766, -1.61887, -1.32450, -1.00075, -0.65463, -0.29382, 0.07362, 0.43940, 0.79529, 1.13334, 1.44614, 1.72697, 1.97003, 2.17060, 2.32516, 2.43147, 2.48863, 2.49710, 2.45863, 2.37622, 2.25398, 2.09704, 1.91129, 1.70327, 1.47991, 1.24830, 1.01551, 0.78834, 0.57310, 0.37547, 0.20030, 0.05148, -0.06815, -0.15685, -0.21402, -0.24020, -0.23698, -0.20695, -0.15355, -0.08095, 0.00616, 0.10268, 0.20338, 0.30303, 0.39663, 0.47958, 0.54783, 0.59804, 0.62768, 0.63511, 0.61965, 0.58156, 0.52203, 0.44314, 0.34773, 0.23933, 0.12195, 0.00000, -0.12195, -0.23933, -0.34773, -0.44314, -0.52203, -0.58156, -0.61965, -0.63511, -0.62768, -0.59804, -0.54783, -0.47958, -0.39663, -0.30303, -0.20338, -0.10268, -0.00616, 0.08095, 0.15355, 0.20695, 0.23698, 0.24020, 0.21402, 0.15685, 0.06815, -0.05148, -0.20030, -0.37547, -0.57310, -0.78834, -1.01551, -1.24830, -1.47991, -1.70327, -1.91129, -2.09704, -2.25398, -2.37622, -2.45863, -2.49710, -2.48863, -2.43147, -2.32516, -2.17060, -1.97003, -1.72697, -1.44614, -1.13334, -0.79529, -0.43940, -0.07362, 0.29382, 0.65463, 1.00075, 1.32450, 1.61887, 1.87766, 2.09572, 2.26903, 2.39482, 2.47166, 2.49947, 2.47948, 2.41421, 2.30735, 2.16362, 1.98864, 1.78872, 1.57064, 1.34148, 1.10833, 0.87812, 0.65738, 0.45208, 0.26740, 0.10764, -0.02394, -0.12514, -0.19492, -0.23337, -0.24165, -0.22198, -0.17746, -0.11200, -0.03010, 0.06327, 0.16293, 0.26362, 0.36022, 0.44795, 0.52253, 0.58030, 0.61842, 0.63487, 0.62859, 0.59946, 0.54830, 0.47686, 0.38767, 0.28400, 0.16970, 0.04904, -0.07346, -0.19321, -0.30572, -0.40678, -0.49266, -0.56023, -0.60708, -0.63168, -0.63338, -0.61248, -0.57024, -0.50885, -0.43133, -0.34147, -0.24365, -0.14275, -0.04393, 0.04757, 0.12656, 0.18818, 0.22801, 0.24232, 0.22814, 0.18349, 0.10740, 0.00000, -0.13742, -0.30247, -0.49165, -0.70048, -0.92360, -1.15494, -1.38786, -1.61537, -1.83038, -2.02584, -2.19506, -2.33184, -2.43073, -2.48720, -2.49779, -2.46024, -2.37355, -2.23810, -2.05558, -1.82901, -1.56265, -1.26189, -0.93308, -0.58339, -0.22059, 0.14717, 0.51162, 0.86457, 1.19815, 1.50506, 1.77877, 2.01367, 2.20528, 2.35033, 2.44684, 2.49418, 2.49308, 2.44554, 2.35480, 2.22519, 2.06199, 1.87125, 1.65960, 1.43402, 1.20162, 0.96942, 0.74414, 0.53200, 0.33850, 0.16832, 0.02514, -0.08840, -0.17080, -0.22170, -0.24184, -0.23302, -0.19802, -0.14042, -0.06453, 0.02488, 0.12265, 0.22356, 0.32239, 0.41421, 0.49453, 0.55941, 0.60568, 0.63098, 0.63386, 0.61382, 0.57132, 0.50772, 0.42528, 0.32697, 0.21643, 0.09778, -0.02454, -0.14594, -0.26186, -0.36798, -0.46034, -0.53557, -0.59094, -0.62458, -0.63545, -0.62349, -0.58958, -0.53553, -0.46405, -0.37862, -0.28343, -0.18316, -0.08287, 0.01218, 0.09678, 0.16591, 0.21495, 0.23987, 0.23738, 0.20510, 0.14163, 0.04666, -0.07898, -0.23333, -0.41334, -0.61491, -0.83301, -1.06183, -1.29494, -1.52547, -1.74633, -1.95044, -2.13093, -2.28138, -2.39603, -2.46995, -2.49924, -2.48113, -2.41413, -2.29805, -2.13407, -1.92468, -1.67365, -1.38594, -1.06752, -0.72529, -0.36677, -0.00000, 0.36677, 0.72529, 1.06752, 1.38594, 1.67365, 1.92468, 2.13407, 2.29805, 2.41413, 2.48113, 2.49924, 2.46995, 2.39603, 2.28138, 2.13093, 1.95044, 1.74633, 1.52547, 1.29494, 1.06183, 0.83301, 0.61491, 0.41334, 0.23333, 0.07898, -0.04666, -0.14163, -0.20510, -0.23738, -0.23987, -0.21495, -0.16591, -0.09678, -0.01218, 0.08287, 0.18316, 0.28343, 0.37862, 0.46405, 0.53553, 0.58958, 0.62349, 0.63545, 0.62458, 0.59094, 0.53557, 0.46034, 0.36798, 0.26186, 0.14594, 0.02454, -0.09778, -0.21643, -0.32697, -0.42528, -0.50772, -0.57132, -0.61382, -0.63386, -0.63098, -0.60568, -0.55941, -0.49453, -0.41421, -0.32239, -0.22356, -0.12265, -0.02488, 0.06453, 0.14042, 0.19802, 0.23302, 0.24184, 0.22170, 0.17080, 0.08840, -0.02514, -0.16832, -0.33850, -0.53200, -0.74414, -0.96942, -1.20162, -1.43402, -1.65960, -1.87125, -2.06199, -2.22519, -2.35480, -2.44554, -2.49308, -2.49418, -2.44684, -2.35033, -2.20528, -2.01367, -1.77877, -1.50506, -1.19815, -0.86457, -0.51162, -0.14717, 0.22059, 0.58339, 0.93308, 1.26189, 1.56265, 1.82901, 2.05558, 2.23810, 2.37355, 2.46024, 2.49779, 2.48720, 2.43073, 2.33184, 2.19506, 2.02584, 1.83038, 1.61537, 1.38786, 1.15494, 0.92360, 0.70048, 0.49165, 0.30247, 0.13742, -0.00000, -0.10740, -0.18349, -0.22814, -0.24232, -0.22801, -0.18818, -0.12656, -0.04757, 0.04393, 0.14275, 0.24365, 0.34147, 0.43133, 0.50885, 0.57024, 0.61248, 0.63338, 0.63168, 0.60708, 0.56023, 0.49266, 0.40678, 0.30572, 0.19321, 0.07346, -0.04904, -0.16970, -0.28400, -0.38767, -0.47686, -0.54830, -0.59946, -0.62859, -0.63487, -0.61842, -0.58030, -0.52253, -0.44795, -0.36022, -0.26362, -0.16293, -0.06327, 0.03010, 0.11200, 0.17746, 0.22198, 0.24165, 0.23337, 0.19492, 0.12514, 0.02394, -0.10764, -0.26740, -0.45208, -0.65738, -0.87812, -1.10833, -1.34148, -1.57064, -1.78872, -1.98864, -2.16362, -2.30735, -2.41421, -2.47948, -2.49947, -2.47166, -2.39482, -2.26903, -2.09572, -1.87766, -1.61887, -1.32450, -1.00075, -0.65463, -0.29382, 0.07362, 0.43940, 0.79529, 1.13334, 1.44614, 1.72697, 1.97003, 2.17060, 2.32516, 2.43147, 2.48863, 2.49710, 2.45863, 2.37622, 2.25398, 2.09704, 1.91129, 1.70327, 1.47991, 1.24830, 1.01551, 0.78834, 0.57310, 0.37547, 0.20030, 0.05148, -0.06815, -0.15685, -0.21402, -0.24020, -0.23698, -0.20695, -0.15355, -0.08095, 0.00616, 0.10268, 0.20338, 0.30303, 0.39663, 0.47958, 0.54783, 0.59804, 0.62768, 0.63511, 0.61965, 0.58156, 0.52203, 0.44314, 0.34773, 0.23933, 0.12195, 0.00000, -0.12195, -0.23933, -0.34773, -0.44314, -0.52203, -0.58156, -0.61965, -0.63511, -0.62768, -0.59804, -0.54783, -0.47958, -0.39663, -0.30303, -0.20338, -0.10268, -0.00616, 0.08095, 0.15355, 0.20695, 0.23698, 0.24020, 0.21402, 0.15685, 0.06815, -0.05148, -0.20030, -0.37547, -0.57310, -0.78834, -1.01551, -1.24830, -1.47991, -1.70327, -1.91129, -2.09704, -2.25398, -2.37622, -2.45863, -2.49710, -2.48863, -2.43147, -2.32516, -2.17060, -1.97003, -1.72697, -1.44614, -1.13334, -0.79529, -0.43940, -0.07362, 0.29382, 0.65463, 1.00075, 1.32450, 1.61887, 1.87766, 2.09572, 2.26903, 2.39482, 2.47166, 2.49947, 2.47948, 2.41421, 2.30735, 2.16362, 1.98864, 1.78872, 1.57064, 1.34148, 1.10833, 0.87812, 0.65738, 0.45208, 0.26740, 0.10764, -0.02394, -0.12514, -0.19492, -0.23337, -0.24165, -0.22198, -0.17746, -0.11200, -0.03010, 0.06327, 0.16293, 0.26362, 0.36022, 0.44795, 0.52253, 0.58030, 0.61842, 0.63487, 0.62859, 0.59946, 0.54830, 0.47686, 0.38767, 0.28400, 0.16970, 0.04904, -0.07346, -0.19321, -0.30572, -0.40678, -0.49266, -0.56023, -0.60708, -0.63168, -0.63338, -0.61248, -0.57024, -0.50885, -0.43133, -0.34147, -0.24365, -0.14275, -0.04393, 0.04757, 0.12656, 0.18818, 0.22801, 0.24232, 0.22814, 0.18349, 0.10740, 0.00000, -0.13742, -0.30247, -0.49165, -0.70048, -0.92360, -1.15494, -1.38786, -1.61537, -1.83038, -2.02584, -2.19506, -2.33184, -2.43073, -2.48720, -2.49779, -2.46024, -2.37355, -2.23810, -2.05558, -1.82901, -1.56265, -1.26189, -0.93308, -0.58339, -0.22059, 0.14717, 0.51162, 0.86457, 1.19815, 1.50506, 1.77877, 2.01367, 2.20528, 2.35033, 2.44684, 2.49418, 2.49308, 2.44554, 2.35480, 2.22519, 2.06199, 1.87125, 1.65960, 1.43402, 1.20162, 0.96942, 0.74414, 0.53200, 0.33850, 0.16832, 0.02514, -0.08840, -0.17080, -0.22170, -0.24184, -0.23302, -0.19802, -0.14042, -0.06453, 0.02488, 0.12265, 0.22356, 0.32239, 0.41421, 0.49453, 0.55941, 0.60568, 0.63098, 0.63386, 0.61382, 0.57132, 0.50772, 0.42528, 0.32697, 0.21643, 0.09778, -0.02454, -0.14594, -0.26186, -0.36798, -0.46034, -0.53557, -0.59094, -0.62458, -0.63545, -0.62349, -0.58958, -0.53553, -0.46405, -0.37862, -0.28343, -0.18316, -0.08287, 0.01218, 0.09678, 0.16591, 0.21495, 0.23987, 0.23738, 0.20510, 0.14163, 0.04666, -0.07898, -0.23333, -0.41334, -0.61491, -0.83301, -1.06183, -1.29494, -1.52547, -1.74633, -1.95044, -2.13093, -2.28138, -2.39603, -2.46995, -2.49924, -2.48113, -2.41413, -2.29805, -2.13407, -1.92468, -1.67365, -1.38594, -1.06752, -0.72529, -0.36677, 0.00000, 0.36677, 0.72529, 1.06752, 1.38594, 1.67365, 1.92468, 2.13407, 2.29805, 2.41413, 2.48113, 2.49924, 2.46995, 2.39603, 2.28138, 2.13093, 1.95044, 1.74633, 1.52547, 1.29494, 1.06183, 0.83301, 0.61491, 0.41334, 0.23333, 0.07898, -0.04666, -0.14163, -0.20510, -0.23738, -0.23987, -0.21495, -0.16591, -0.09678, -0.01218, 0.08287, 0.18316, 0.28343, 0.37862, 0.46405, 0.53553, 0.58958, 0.62349, 0.63545, 0.62458, 0.59094, 0.53557, 0.46034, 0.36798, 0.26186, 0.14594, 0.02454, -0.09778, -0.21643, -0.32697, -0.42528, -0.50772, -0.57132, -0.61382, -0.63386, -0.63098, -0.60568, -0.55941, -0.49453, -0.41421, -0.32239, -0.22356, -0.12265, -0.02488, 0.06453, 0.14042, 0.19802, 0.23302, 0.24184, 0.22170, 0.17080, 0.08840, -0.02514, -0.16832, -0.33850, -0.53200, -0.74414, -0.96942, -1.20162, -1.43402, -1.65960, -1.87125, -2.06199, -2.22519, -2.35480, -2.44554, -2.49308, -2.49418, -2.44684, -2.35033, -2.20528, -2.01367, -1.77877, -1.50506, -1.19815, -0.86457, -0.51162, -0.14717, 0.22059, 0.58339, 0.93308, 1.26189, 1.56265, 1.82901, 2.05558, 2.23810, 2.37355, 2.46024, 2.49779, 2.48720, 2.43073, 2.33184, 2.19506, 2.02584, 1.83038, 1.61537, 1.38786, 1.15494, 0.92360, 0.70048, 0.49165, 0.30247, 0.13742, 0.00000, -0.10740, -0.18349, -0.22814, -0.24232, -0.22801, -0.18818, -0.12656, -0.04757, 0.04393, 0.14275, 0.24365, 0.34147, 0.43133, 0.50885, 0.57024, 0.61248, 0.63338, 0.63168, 0.60708, 0.56023, 0.49266, 0.40678, 0.30572, 0.19321, 0.07346, -0.04904, -0.16970, -0.28400, -0.38767, -0.47686, -0.54830, -0.59946, -0.62859, -0.63487, -0.61842, -0.58030, -0.52253, -0.44795, -0.36022, -0.26362, -0.16293, -0.06327, 0.03010, 0.11200, 0.17746, 0.22198, 0.24165, 0.23337, 0.19492, 0.12514, 0.02394, -0.10764, -0.26740, -0.45208, -0.65738, -0.87812, -1.10833, -1.34148, -1.57064, -1.78872, -1.98864, -2.16362, -2.30735, -2.41421, -2.47948, -2.49947, -2.47166, -2.39482, -2.26903, -2.09572, -1.87766, -1.61887, -1.32450, -1.00075, -0.65463, -0.29382, 0.07362, 0.43940, 0.79529, 1.13334, 1.44614, 1.72697, 1.97003, 2.17060, 2.32516, 2.43147, 2.48863, 2.49710, 2.45863, 2.37622, 2.25398, 2.09704, 1.91129, 1.70327, 1.47991, 1.24830, 1.01551, 0.78834, 0.57310, 0.37547, 0.20030, 0.05148, -0.06815, -0.15685, -0.21402, -0.24020, -0.23698, -0.20695, -0.15355, -0.08095, 0.00616, 0.10268, 0.20338, 0.30303, 0.39663, 0.47958, 0.54783, 0.59804, 0.62768, 0.63511, 0.61965, 0.58156, 0.52203, 0.44314, 0.34773, 0.23933, 0.12195, 0.00000, -0.12195, -0.23933, -0.34773, -0.44314, -0.52203, -0.58156, -0.61965, -0.63511, -0.62768, -0.59804, -0.54783, -0.47958, -0.39663, -0.30303, -0.20338, -0.10268, -0.00616, 0.08095, 0.15355, 0.20695, 0.23698, 0.24020, 0.21402, 0.15685, 0.06815, -0.05148, -0.20030, -0.37547, -0.57310, -0.78834, -1.01551, -1.24830, -1.47991, -1.70327, -1.91129, -2.09704, -2.25398, -2.37622, -2.45863, -2.49710, -2.48863, -2.43147, -2.32516, -2.17060, -1.97003, -1.72697, -1.44614, -1.13334, -0.79529, -0.43940, -0.07362, 0.29382, 0.65463, 1.00075, 1.32450, 1.61887, 1.87766, 2.09572, 2.26903, 2.39482, 2.47166, 2.49947, 2.47948, 2.41421, 2.30735, 2.16362, 1.98864, 1.78872, 1.57064, 1.34148, 1.10833, 0.87812, 0.65738, 0.45208, 0.26740, 0.10764, -0.02394, -0.12514, -0.19492, -0.23337, -0.24165, -0.22198, -0.17746, -0.11200, -0.03010, 0.06327, 0.16293, 0.26362, 0.36022, 0.44795, 0.52253, 0.58030, 0.61842, 0.63487, 0.62859, 0.59946, 0.54830, 0.47686, 0.38767, 0.28400, 0.16970, 0.04904, -0.07346, -0.19321, -0.30572, -0.40678, -0.49266, -0.56023, -0.60708, -0.63168, -0.63338, -0.61248, -0.57024, -0.50885, -0.43133, -0.34147, -0.24365, -0.14275, -0.04393, 0.04757, 0.12656, 0.18818, 0.22801, 0.24232, 0.22814, 0.18349, 0.10740, 0.00000, -0.13742, -0.30247, -0.49165, -0.70048, -0.92360, -1.15494, -1.38786, -1.61537, -1.83038, -2.02584, -2.19506, -2.33184, -2.43073, -2.48720, -2.49779, -2.46024, -2.37355, -2.23810, -2.05558, -1.82901, -1.56265, -1.26189, -0.93308, -0.58339, -0.22059, 0.14717, 0.51162, 0.86457, 1.19815, 1.50506, 1.77877, 2.01367, 2.20528, 2.35033, 2.44684, 2.49418, 2.49308, 2.44554, 2.35480, 2.22519, 2.06199, 1.87125, 1.65960, 1.43402, 1.20162, 0.96942, 0.74414, 0.53200, 0.33850, 0.16832, 0.02514, -0.08840, -0.17080, -0.22170, -0.24184, -0.23302, -0.19802, -0.14042, -0.06453, 0.02488, 0.12265, 0.22356, 0.32239, 0.41421, 0.49453, 0.55941, 0.60568, 0.63098, 0.63386, 0.61382, 0.57132, 0.50772, 0.42528, 0.32697, 0.21643, 0.09778, -0.02454, -0.14594, -0.26186, -0.36798, -0.46034, -0.53557, -0.59094, -0.62458, -0.63545, -0.62349, -0.58958, -0.53553, -0.46405, -0.37862, -0.28343, -0.18316, -0.08287, 0.01218, 0.09678, 0.16591, 0.21495, 0.23987, 0.23738, 0.20510, 0.14163, 0.04666, -0.07898, -0.23333, -0.41334, -0.61491, -0.83301, -1.06183, -1.29494, -1.52547, -1.74633, -1.95044, -2.13093, -2.28138, -2.39603, -2.46995, -2.49924, -2.48113, -2.41413, -2.29805, -2.13407, -1.92468, -1.67365, -1.38594, -1.06752, -0.72529, -0.36677, -0.00000, 0.36677, 0.72529, 1.06752, 1.38594, 1.67365, 1.92468, 2.13407, 2.29805, 2.41413, 2.48113, 2.49924, 2.46995, 2.39603, 2.28138, 2.13093, 1.95044, 1.74633, 1.52547, 1.29494, 1.06183, 0.83301, 0.61491, 0.41334, 0.23333, 0.07898, -0.04666, -0.14163, -0.20510, -0.23738, -0.23987, -0.21495, -0.16591, -0.09678, -0.01218, 0.08287, 0.18316, 0.28343, 0.37862, 0.46405, 0.53553, 0.58958, 0.62349, 0.63545, 0.62458, 0.59094, 0.53557, 0.46034, 0.36798, 0.26186, 0.14594, 0.02454, -0.09778, -0.21643, -0.32697, -0.42528, -0.50772, -0.57132, -0.61382, -0.63386, -0.63098, -0.60568, -0.55941, -0.49453, -0.41421, -0.32239, -0.22356, -0.12265, -0.02488, 0.06453, 0.14042, 0.19802, 0.23302, 0.24184, 0.22170, 0.17080, 0.08840, -0.02514, -0.16832, -0.33850, -0.53200, -0.74414, -0.96942, -1.20162, -1.43402, -1.65960, -1.87125, -2.06199, -2.22519, -2.35480, -2.44554, -2.49308, -2.49418, -2.44684, -2.35033, -2.20528, -2.01367, -1.77877, -1.50506, -1.19815, -0.86457, -0.51162, -0.14717, 0.22059, 0.58339, 0.93308, 1.26189, 1.56265, 1.82901, 2.05558, 2.23810, 2.37355, 2.46024, 2.49779, 2.48720, 2.43073, 2.33184, 2.19506, 2.02584, 1.83038, 1.61537, 1.38786, 1.15494, 0.92360, 0.70048, 0.49165, 0.30247, 0.13742, -0.00000, -0.10740, -0.18349, -0.22814, -0.24232, -0.22801, -0.18818, -0.12656, -0.04757, 0.04393, 0.14275, 0.24365, 0.34147, 0.43133, 0.50885, 0.57024, 0.61248, 0.63338, 0.63168, 0.60708, 0.56023, 0.49266, 0.40678, 0.30572, 0.19321, 0.07346, -0.04904, -0.16970, -0.28400, -0.38767, -0.47686, -0.54830, -0.59946, -0.62859, -0.63487, -0.61842, -0.58030, -0.52253, -0.44795, -0.36022, -0.26362, -0.16293, -0.06327, 0.03010, 0.11200, 0.17746, 0.22198, 0.24165, 0.23337, 0.19492, 0.12514, 0.02394, -0.10764, -0.26740, -0.45208, -0.65738, -0.87812, -1.10833, -1.34148, -1.57064, -1.78872, -1.98864, -2.16362, -2.30735, -2.41421, -2.47948, -2.49947, -2.47166, -2.39482, -2.26903, -2.09572, -1.87766, -1.61887, -1.32450, -1.00075, -0.65463, -0.29382, 0.07362, 0.43940, 0.79529, 1.13334, 1.44614, 1.72697, 1.97003, 2.17060, 2.32516, 2.43147, 2.48863, 2.49710, 2.45863, 2.37622, 2.25398, 2.09704, 1.91129, 1.70327, 1.47991, 1.24830, 1.01551, 0.78834, 0.57310, 0.37547, 0.20030, 0.05148, -0.06815, -0.15685, -0.21402, -0.24020, -0.23698, -0.20695, -0.15355, -0.08095, 0.00616, 0.10268, 0.20338, 0.30303, 0.39663, 0.47958, 0.54783, 0.59804, 0.62768, 0.63511, 0.61965, 0.58156, 0.52203, 0.44314, 0.34773, 0.23933, 0.12195, 0.00000, -0.12195, -0.23933, -0.34773, -0.44314, -0.52203, -0.58156, -0.61965, -0.63511, -0.62768, -0.59804, -0.54783, -0.47958, -0.39663, -0.30303, -0.20338, -0.10268, -0.00616, 0.08095, 0.15355, 0.20695, 0.23698, 0.24020, 0.21402, 0.15685, 0.06815, -0.05148, -0.20030, -0.37547, -0.57310, -0.78834, -1.01551, -1.24830, -1.47991, -1.70327, -1.91129, -2.09704, -2.25398, -2.37622, -2.45863, -2.49710, -2.48863, -2.43147, -2.32516, -2.17060, -1.97003, -1.72697, -1.44614, -1.13334, -0.79529, -0.43940, -0.07362, 0.29382, 0.65463, 1.00075, 1.32450, 1.61887, 1.87766, 2.09572, 2.26903, 2.39482, 2.47166, 2.49947, 2.47948, 2.41421, 2.30735, 2.16362, 1.98864, 1.78872, 1.57064, 1.34148, 1.10833, 0.87812, 0.65738, 0.45208, 0.26740, 0.10764, -0.02394, -0.12514, -0.19492, -0.23337, -0.24165, -0.22198, -0.17746, -0.11200, -0.03010, 0.06327, 0.16293, 0.26362, 0.36022, 0.44795, 0.52253, 0.58030, 0.61842, 0.63487, 0.62859, 0.59946, 0.54830, 0.47686, 0.38767, 0.28400, 0.16970, 0.04904, -0.07346, -0.19321, -0.30572, -0.40678, -0.49266, -0.56023, -0.60708, -0.63168, -0.63338, -0.61248, -0.57024, -0.50885, -0.43133, -0.34147, -0.24365, -0.14275, -0.04393, 0.04757, 0.12656, 0.18818, 0.22801, 0.24232, 0.22814, 0.18349, 0.10740, 0.00000, -0.13742, -0.30247, -0.49165, -0.70048, -0.92360, -1.15494, -1.38786, -1.61537, -1.83038, -2.02584, -2.19506, -2.33184, -2.43073, -2.48720, -2.49779, -2.46024, -2.37355, -2.23810, -2.05558, -1.82901, -1.56265, -1.26189, -0.93308, -0.58339, -0.22059, 0.14717, 0.51162, 0.86457, 1.19815, 1.50506, 1.77877, 2.01367, 2.20528, 2.35033, 2.44684, 2.49418, 2.49308, 2.44554, 2.35480, 2.22519, 2.06199, 1.87125, 1.65960, 1.43402, 1.20162, 0.96942, 0.74414, 0.53200, 0.33850, 0.16832, 0.02514, -0.08840, -0.17080, -0.22170, -0.24184, -0.23302, -0.19802, -0.14042, -0.06453, 0.02488, 0.12265, 0.22356, 0.32239, 0.41421, 0.49453, 0.55941, 0.60568, 0.63098, 0.63386, 0.61382, 0.57132, 0.50772, 0.42528, 0.32697, 0.21643, 0.09778, -0.02454, -0.14594, -0.26186, -0.36798, -0.46034, -0.53557, -0.59094, -0.62458, -0.63545, -0.62349, -0.58958, -0.53553, -0.46405, -0.37862, -0.28343, -0.18316, -0.08287, 0.01218, 0.09678, 0.16591, 0.21495, 0.23987, 0.23738, 0.20510, 0.14163, 0.04666, -0.07898, -0.23333, -0.41334, -0.61491, -0.83301, -1.06183, -1.29494, -1.52547, -1.74633, -1.95044, -2.13093, -2.28138, -2.39603, -2.46995, -2.49924, -2.48113, -2.41413, -2.29805, -2.13407, -1.92468, -1.67365, -1.38594, -1.06752, -0.72529, -0.36677, }; const float32_t MixData1[2048] = { -0.278051, 0.419613, 0.592103, 1.351344, 0.950808, 1.518573, 1.952439, 1.964031, 2.002147, 2.735932, 2.748701, 3.007873, 2.661723, 2.230027, 2.198711, 2.238686, 2.303673, 1.688968, 1.021966, 0.992764, 1.255672, 0.834435, 0.894966, 0.541934, -0.191558, 0.454859, -0.422101, -0.166369, -0.165696, -0.111096, 0.193036, 0.099203, -0.462102, -0.384870, 0.294480, 0.271472, 0.237205, 0.270189, 0.556456, 0.323860, 1.180522, 0.576420, 0.613936, 0.523991, 0.694625, 0.633623, 0.263763, 0.739548, 0.164113, -0.003657, 0.287782, -0.116635, -0.185759, -0.653773, -0.518312, -0.237934, -0.574287, -0.586067, -0.913784, -1.139522, -0.881219, -0.766761, -0.690966, -0.175750, -0.504902, 0.066901, 0.231274, -0.078085, -0.184134, 0.096769, 0.014123, 0.130454, 0.446896, 0.475450, -0.164312, -0.165974, 0.465532, -0.174178, -0.334574, 0.117387, -0.298101, -0.372349, -1.123950, -0.711595, -1.567631, -1.623918, -2.127912, -2.014915, -2.312444, -2.215489, -2.790054, -2.838522, -2.771863, -2.674088, -2.607103, -2.372603, -2.495317, -2.047009, -2.129746, -1.688088, -0.736920, -0.856800, -0.187631, -0.001245, 0.824848, 0.228594, 1.265937, 2.027357, 2.100435, 2.256446, 2.115261, 3.389015, 2.431020, 2.807341, 3.002131, 2.351092, 2.339987, 2.087090, 1.721986, 2.049433, 1.590812, 0.819885, 1.141045, 1.254260, 0.641583, 0.622192, 0.251458, -0.474724, -0.158115, -0.169190, -0.637424, -0.799728, -0.016830, -0.111711, -0.423010, -0.637288, 0.275569, 0.331804, -0.036359, 0.222057, 0.485696, 0.353092, 0.556798, 1.133114, 0.611365, 1.012312, 0.903177, 0.382294, 0.939343, 0.308226, 0.539127, 0.296777, 0.086278, 0.411621, 0.103599, -0.217065, -0.030479, -0.195911, -0.255116, -0.547480, -1.156525, -0.523555, -0.282735, -0.752963, -0.768907, -0.551752, -0.290660, -0.258563, -0.389069, 0.293849, -0.460610, -0.387088, 0.858289, 0.280602, 0.537299, -0.013063, 0.187755, 0.720094, 0.101744, -0.132686, -0.088742, -0.934227, -0.182602, -0.828090, -1.179810, -1.254800, -1.438828, -1.779241, -2.390736, -2.230252, -2.185227, -2.600627, -2.587400, -2.583372, -2.454518, -2.450056, -2.578903, -2.623655, -2.464975, -1.760693, -1.762233, -1.142737, -0.838546, -0.374533, -0.106143, -0.014376, 0.458428, 0.883037, 1.107717, 1.144097, 1.585770, 2.512190, 2.040804, 1.976387, 2.470534, 2.372721, 2.977296, 2.636011, 2.523667, 2.059712, 2.394869, 1.674157, 2.071446, 0.819493, 1.694556, 0.804397, 0.732953, 0.529971, 0.469027, 0.287767, 0.536727, -0.092822, -0.081194, -0.045534, -0.161826, -0.310320, -0.026919, -0.430860, -0.196574, 0.158147, 0.111768, 0.396034, 0.150891, 0.150025, 0.489495, 0.485981, 0.163561, 0.619220, 0.611541, 0.155884, -0.043578, 0.364270, 0.932256, 0.474445, 0.839491, -0.173602, 0.023970, -0.458810, 0.271759, -0.713273, -0.389788, -0.376132, -0.897861, -0.271075, -0.834011, -1.025084, -0.561849, -0.614852, -0.466063, -0.537136, 0.025096, -0.180440, 0.079190, -0.446622, 0.431360, -0.009958, 0.574599, -0.088137, 0.272575, -0.526605, -0.031773, 0.302304, 0.027155, 0.146867, -0.231649, -0.945807, -0.659285, -1.028151, -0.708110, -1.320978, -1.407632, -1.764794, -2.229964, -2.038862, -2.138561, -2.178650, -2.566788, -2.915314, -2.240422, -2.481332, -1.803639, -2.118957, -1.307709, -0.909203, -1.433635, -0.625591, -0.142631, 0.028413, 0.016518, 0.253732, 1.368444, 1.435858, 1.145170, 1.540291, 2.402732, 2.082858, 2.685889, 2.765246, 2.263746, 2.819416, 2.652811, 1.845281, 2.260908, 2.233011, 2.071601, 1.438805, 1.622938, 0.716195, 0.576169, 0.697739, 0.404560, 0.134971, 0.390014, 0.216177, -0.309066, -0.373539, 0.157669, -0.085890, -0.365194, -0.566972, -0.041571, -0.187456, -0.267048, 0.131639, 0.262973, 0.391679, 0.256704, 0.554361, 0.595764, 0.591663, 0.661543, 0.520339, 1.000666, 0.712233, 0.236681, 0.847405, -0.270556, 0.027257, 0.290665, 0.453183, -0.372548, 0.319754, 0.058501, -0.210505, -0.614093, -0.591716, -0.089049, -0.216665, -0.517731, -0.513747, -0.041185, -0.233405, -0.328007, -0.187889, 0.020072, -0.220126, -0.078975, -0.106235, 0.293345, 0.174012, 0.385052, -0.136397, -0.035604, 0.397930, 0.090979, 0.301539, 0.015352, -0.493644, -0.542326, -0.945846, -1.245981, -1.674707, -1.425038, -1.615774, -2.091006, -2.237243, -2.267972, -2.183112, -2.867010, -2.531437, -2.294973, -2.204319, -2.000308, -1.964765, -1.919177, -1.734252, -0.861705, -0.735544, -0.299804, 0.197920, 0.185430, 0.418532, 0.936872, 1.386989, 0.974997, 2.038928, 1.507485, 2.172123, 2.281768, 1.862455, 2.357536, 2.642628, 2.695962, 2.065099, 1.832827, 2.469485, 1.896391, 1.472379, 1.339534, 1.014666, 1.053991, 0.944137, 0.036546, -0.250208, 0.154877, -0.092601, 0.332818, -0.237491, -0.307166, -0.555711, 0.206653, 0.135853, -0.240190, -0.175371, 0.244824, -0.235681, 0.089085, 0.156867, 0.378576, 1.249162, 0.179068, 0.153244, 1.121611, 0.617478, 0.801829, 0.245574, 0.285625, 0.474771, 0.192913, 0.681581, 0.261999, -0.161538, -0.348001, -0.378610, -0.155281, -0.280315, -0.294542, -0.933001, -0.737207, -0.295508, -1.069209, -0.451978, -0.843080, -0.210750, -0.475503, 0.247316, -0.241921, 0.117626, -0.325404, -0.023405, 0.270815, -0.552631, 0.246094, 0.019483, 0.071030, 0.201806, 0.602276, -0.439166, -0.331840, -0.582806, -0.750964, -0.734182, -0.831071, -1.270195, -1.825618, -1.968032, -1.710466, -2.164414, -2.176854, -2.107464, -2.260391, -2.956173, -2.226412, -2.570535, -2.121081, -2.319479, -1.827073, -2.060443, -0.922858, -1.508289, -1.167309, -0.683408, 0.434622, 1.246772, 1.224806, 1.635538, 1.473495, 2.117606, 2.629249, 3.115875, 2.656159, 2.529445, 2.741253, 3.494516, 3.307451, 3.146098, 3.045934, 3.106633, 2.834018, 2.387245, 2.430057, 2.105663, 1.667874, 1.690364, 0.771810, 0.736756, 0.739808, 0.472248, 0.234047, 0.746844, 0.100834, 0.589682, -0.056752, 0.636103, 0.130160, -0.065618, 0.358806, 0.468049, 1.039677, 1.205967, 0.635381, 1.042340, 0.862804, 1.064166, 1.366582, 1.306269, 0.688467, 1.492767, 1.256492, 0.903638, 0.540329, 0.677800, 0.146651, 0.571079, 0.466522, -0.151364, 0.059724, 0.079687, 0.360848, 0.177197, 0.131896, 0.214081, -0.393877, -0.268149, 0.404721, -0.351012, -0.310679, 0.586257, -0.108370, 0.621715, 0.699790, 0.186747, 1.125329, 0.406162, 0.482767, 0.728078, 0.514443, 0.887300, 0.662590, 0.685882, -0.067507, -0.024625, 0.396288, 0.148786, -0.370714, -0.704970, -0.608318, -0.843822, -1.730051, -1.457327, -1.434621, -1.606219, -2.435722, -2.299680, -2.109391, -2.008079, -1.458030, -1.274994, -1.411305, -1.049791, -0.610698, -0.836311, -0.660881, 0.018656, 0.780030, 0.430543, 1.565411, 1.349442, 1.530551, 2.293393, 2.363122, 2.430692, 2.620503, 2.590710, 3.305382, 2.569533, 2.849722, 2.540316, 3.245416, 2.235564, 2.253771, 2.181615, 2.506356, 1.871819, 1.364354, 1.241756, 1.599763, 0.498632, 0.476353, 0.905162, 0.175571, 0.399942, 0.110309, 0.645106, 0.581168, 0.770809, 0.186366, 0.381534, 0.700933, 0.443843, 1.074409, 0.671337, 0.383685, 0.588885, 0.870202, 0.629095, 1.455836, 1.523360, 0.690576, 0.809577, 0.647595, 1.065731, 0.843768, 0.394528, 0.968935, 0.807392, 0.096189, 0.446127, 0.514206, 0.432563, -0.108232, 0.261633, -0.538776, -0.537836, 0.170717, -0.071436, 0.314821, -0.335668, 0.384507, -0.297584, 0.336408, -0.102863, 0.170258, 0.249811, 0.371252, 0.776749, 0.916895, 1.163781, 0.888943, 0.828567, 0.526940, 0.381781, 0.346352, 0.571533, -0.062067, 0.232292, -0.066669, -0.286076, -0.476584, -1.231899, -1.725454, -1.721778, -2.071049, -1.636038, -1.469298, -1.823176, -2.083112, -2.230058, -2.043828, -1.569286, -1.607004, -1.057289, -1.288902, -1.230434, -0.168988, -0.227956, -0.036866, 0.679513, 1.016522, 1.756732, 1.196722, 2.165574, 2.628975, 2.165210, 3.068265, 3.146761, 3.097412, 3.145308, 3.032642, 2.606668, 2.991588, 2.627898, 2.535771, 2.510458, 2.581243, 1.595823, 2.234042, 1.872768, 1.229944, 1.404721, 0.668117, 0.711234, 0.802713, 0.312177, 0.109421, 0.048584, 0.342425, 0.206138, 0.239527, 0.825146, 0.710416, 0.217630, 1.051251, 0.261929, 0.326978, 0.605117, 0.773867, 0.913860, 1.448104, 1.569437, 0.698911, 1.029227, 1.529009, 0.744895, 0.490708, 0.354958, 0.459294, 0.795391, 0.131855, 0.582397, 0.145560, 0.014429, 0.519457, -0.434466, -0.325900, -0.207033, 0.068816, 0.120300, -0.560603, 0.233512, -0.162614, 0.017789, -0.215127, 0.145998, 0.026743, 0.298170, 1.027162, 0.923680, 1.028259, 0.351765, 0.443510, 0.806618, 0.167537, 0.339962, 0.609425, 0.000452, 0.310251, -0.465816, -0.341343, -0.888474, -0.728528, -1.223135, -1.543344, -1.489578, -1.538346, -1.953323, -1.640636, -2.118454, -2.452408, -2.080447, -2.109285, -1.966841, -2.116377, -1.221518, -1.647228, -1.153597, -0.716776, -0.095504, -0.210302, 0.725363, 1.054609, 0.995387, 1.231782, 2.033283, 2.025312, 2.822646, 2.749408, 2.372430, 3.175617, 3.169133, 2.607252, 2.685827, 3.347691, 2.512054, 2.204146, 2.531040, 1.793100, 2.146540, 1.787618, 1.954840, 1.471534, 0.710678, 1.139672, 0.396040, 1.049154, 0.015042, 0.580311, 0.570909, 0.467781, 0.153113, 0.671547, 0.292284, 0.503589, 0.100634, 0.898525, 0.609707, 1.185266, 1.130625, 0.663048, 0.663822, 0.693283, 0.843130, 0.856773, 0.850539, 1.046508, 0.858010, 1.295065, 0.974948, 1.155199, 0.905175, 0.751137, 0.780867, -0.059289, -0.177213, 0.050653, -0.203156, 0.110647, -0.375421, -0.422658, -0.023506, -0.000158, 0.424780, 0.480925, 0.291510, 0.486928, 0.121902, 0.003310, 0.738561, 0.694012, 1.118046, 0.963212, 1.198456, 0.388176, 0.946203, 0.470969, 0.710465, 0.468134, 0.431212, 0.612881, -0.075021, -0.611694, -0.156138, -0.782831, -0.899354, -1.322509, -1.218198, -1.176684, -1.556460, -1.833960, -1.509089, -2.140020, -2.475714, -2.411920, -1.577398, -1.267204, -1.313923, -1.550226, -0.848575, -1.163776, -0.019097, 0.201277, -0.068780, 0.568261, 1.466468, 1.054058, 1.471568, 1.558835, 1.927196, 2.094198, 2.916793, 2.420345, 2.970983, 3.272351, 2.564576, 3.106890, 2.789672, 2.619376, 2.666380, 2.867571, 1.787402, 1.632014, 2.089382, 1.029588, 0.827413, 1.117832, 0.376422, 0.271852, 0.424302, 0.449313, 0.045081, 0.163969, 0.671942, 0.129110, 0.343688, 0.042405, 0.276977, 0.876151, 1.086986, 0.760233, 1.210006, 1.163925, 0.634267, 0.564007, 1.396934, 1.144970, 0.864892, 1.317445, 1.222063, 1.375884, 0.773057, 0.657617, 0.510200, 0.111117, 0.255145, 0.711889, -0.110758, 0.184519, -0.399349, 0.310651, 0.371847, -0.323477, -0.402236, 0.311610, 0.252571, 0.244261, 0.043552, 0.203817, 0.303035, 0.237371, 0.750215, 0.167424, 0.206133, 0.689142, 0.767769, 0.403585, 0.386755, 0.265352, 0.574144, 0.536515, -0.073723, 0.028102, -0.070763, -0.601456, -0.132186, -0.212598, -0.874368, -0.714481, -0.756415, -1.517250, -1.168757, -1.846140, -2.188589, -2.267524, -1.743268, -1.536816, -1.553647, -1.891345, -1.182682, -1.455434, -0.966373, -0.895278, -0.701868, -0.111500, 0.286677, -0.278051, 0.419613, 0.592103, 1.351344, 0.950808, 1.518573, 1.952439, 1.964031, 2.002147, 2.735932, 2.748701, 3.007873, 2.661723, 2.230027, 2.198711, 2.238686, 2.303673, 1.688968, 1.021966, 0.992764, 1.255672, 0.834435, 0.894966, 0.541934, -0.191558, 0.454859, -0.422101, -0.166369, -0.165696, -0.111096, 0.193036, 0.099203, -0.462102, -0.384870, 0.294480, 0.271472, 0.237205, 0.270189, 0.556456, 0.323860, 1.180522, 0.576420, 0.613936, 0.523991, 0.694625, 0.633623, 0.263763, 0.739548, 0.164113, -0.003657, 0.287782, -0.116635, -0.185759, -0.653773, -0.518312, -0.237934, -0.574287, -0.586067, -0.913784, -1.139522, -0.881219, -0.766761, -0.690966, -0.175750, -0.504902, 0.066901, 0.231274, -0.078085, -0.184134, 0.096769, 0.014123, 0.130454, 0.446896, 0.475450, -0.164312, -0.165974, 0.465532, -0.174178, -0.334574, 0.117387, -0.298101, -0.372349, -1.123950, -0.711595, -1.567631, -1.623918, -2.127912, -2.014915, -2.312444, -2.215489, -2.790054, -2.838522, -2.771863, -2.674088, -2.607103, -2.372603, -2.495317, -2.047009, -2.129746, -1.688088, -0.736920, -0.856800, -0.187631, -0.001245, 0.824848, 0.228594, 1.265937, 2.027357, 2.100435, 2.256446, 2.115261, 3.389015, 2.431020, 2.807341, 3.002131, 2.351092, 2.339987, 2.087090, 1.721986, 2.049433, 1.590812, 0.819885, 1.141045, 1.254260, 0.641583, 0.622192, 0.251458, -0.474724, -0.158115, -0.169190, -0.637424, -0.799728, -0.016830, -0.111711, -0.423010, -0.637288, 0.275569, 0.331804, -0.036359, 0.222057, 0.485696, 0.353092, 0.556798, 1.133114, 0.611365, 1.012312, 0.903177, 0.382294, 0.939343, 0.308226, 0.539127, 0.296777, 0.086278, 0.411621, 0.103599, -0.217065, -0.030479, -0.195911, -0.255116, -0.547480, -1.156525, -0.523555, -0.282735, -0.752963, -0.768907, -0.551752, -0.290660, -0.258563, -0.389069, 0.293849, -0.460610, -0.387088, 0.858289, 0.280602, 0.537299, -0.013063, 0.187755, 0.720094, 0.101744, -0.132686, -0.088742, -0.934227, -0.182602, -0.828090, -1.179810, -1.254800, -1.438828, -1.779241, -2.390736, -2.230252, -2.185227, -2.600627, -2.587400, -2.583372, -2.454518, -2.450056, -2.578903, -2.623655, -2.464975, -1.760693, -1.762233, -1.142737, -0.838546, -0.374533, -0.106143, -0.014376, 0.458428, 0.883037, 1.107717, 1.144097, 1.585770, 2.512190, 2.040804, 1.976387, 2.470534, 2.372721, 2.977296, 2.636011, 2.523667, 2.059712, 2.394869, 1.674157, 2.071446, 0.819493, 1.694556, 0.804397, 0.732953, 0.529971, 0.469027, 0.287767, 0.536727, -0.092822, -0.081194, -0.045534, -0.161826, -0.310320, -0.026919, -0.430860, -0.196574, 0.158147, 0.111768, 0.396034, 0.150891, 0.150025, 0.489495, 0.485981, 0.163561, 0.619220, 0.611541, 0.155884, -0.043578, 0.364270, 0.932256, 0.474445, 0.839491, -0.173602, 0.023970, -0.458810, 0.271759, -0.713273, -0.389788, -0.376132, -0.897861, -0.271075, -0.834011, -1.025084, -0.561849, -0.614852, -0.466063, -0.537136, 0.025096, -0.180440, 0.079190, -0.446622, 0.431360, -0.009958, 0.574599, -0.088137, 0.272575, -0.526605, -0.031773, 0.302304, 0.027155, 0.146867, -0.231649, -0.945807, -0.659285, -1.028151, -0.708110, -1.320978, -1.407632, -1.764794, -2.229964, -2.038862, -2.138561, -2.178650, -2.566788, -2.915314, -2.240422, -2.481332, -1.803639, -2.118957, -1.307709, -0.909203, -1.433635, -0.625591, -0.142631, 0.028413, 0.016518, 0.253732, 1.368444, 1.435858, 1.145170, 1.540291, 2.402732, 2.082858, 2.685889, 2.765246, 2.263746, 2.819416, 2.652811, 1.845281, 2.260908, 2.233011, 2.071601, 1.438805, 1.622938, 0.716195, 0.576169, 0.697739, 0.404560, 0.134971, 0.390014, 0.216177, -0.309066, -0.373539, 0.157669, -0.085890, -0.365194, -0.566972, -0.041571, -0.187456, -0.267048, 0.131639, 0.262973, 0.391679, 0.256704, 0.554361, 0.595764, 0.591663, 0.661543, 0.520339, 1.000666, 0.712233, 0.236681, 0.847405, -0.270556, 0.027257, 0.290665, 0.453183, -0.372548, 0.319754, 0.058501, -0.210505, -0.614093, -0.591716, -0.089049, -0.216665, -0.517731, -0.513747, -0.041185, -0.233405, -0.328007, -0.187889, 0.020072, -0.220126, -0.078975, -0.106235, 0.293345, 0.174012, 0.385052, -0.136397, -0.035604, 0.397930, 0.090979, 0.301539, 0.015352, -0.493644, -0.542326, -0.945846, -1.245981, -1.674707, -1.425038, -1.615774, -2.091006, -2.237243, -2.267972, -2.183112, -2.867010, -2.531437, -2.294973, -2.204319, -2.000308, -1.964765, -1.919177, -1.734252, -0.861705, -0.735544, -0.299804, 0.197920, 0.185430, 0.418532, 0.936872, 1.386989, 0.974997, 2.038928, 1.507485, 2.172123, 2.281768, 1.862455, 2.357536, 2.642628, 2.695962, 2.065099, 1.832827, 2.469485, 1.896391, 1.472379, 1.339534, 1.014666, 1.053991, 0.944137, 0.036546, -0.250208, 0.154877, -0.092601, 0.332818, -0.237491, -0.307166, -0.555711, 0.206653, 0.135853, -0.240190, -0.175371, 0.244824, -0.235681, 0.089085, 0.156867, 0.378576, 1.249162, 0.179068, 0.153244, 1.121611, 0.617478, 0.801829, 0.245574, 0.285625, 0.474771, 0.192913, 0.681581, 0.261999, -0.161538, -0.348001, -0.378610, -0.155281, -0.280315, -0.294542, -0.933001, -0.737207, -0.295508, -1.069209, -0.451978, -0.843080, -0.210750, -0.475503, 0.247316, -0.241921, 0.117626, -0.325404, -0.023405, 0.270815, -0.552631, 0.246094, 0.019483, 0.071030, 0.201806, 0.602276, -0.439166, -0.331840, -0.582806, -0.750964, -0.734182, -0.831071, -1.270195, -1.825618, -1.968032, -1.710466, -2.164414, -2.176854, -2.107464, -2.260391, -2.956173, -2.226412, -2.570535, -2.121081, -2.319479, -1.827073, -2.060443, -0.922858, -1.508289, -1.167309, -0.683408, 0.434622, 1.246772, 1.224806, 1.635538, 1.473495, 2.117606, 2.629249, 3.115875, 2.656159, 2.529445, 2.741253, 3.494516, 3.307451, 3.146098, 3.045934, 3.106633, 2.834018, 2.387245, 2.430057, 2.105663, 1.667874, 1.690364, 0.771810, 0.736756, 0.739808, 0.472248, 0.234047, 0.746844, 0.100834, 0.589682, -0.056752, 0.636103, 0.130160, -0.065618, 0.358806, 0.468049, 1.039677, 1.205967, 0.635381, 1.042340, 0.862804, 1.064166, 1.366582, 1.306269, 0.688467, 1.492767, 1.256492, 0.903638, 0.540329, 0.677800, 0.146651, 0.571079, 0.466522, -0.151364, 0.059724, 0.079687, 0.360848, 0.177197, 0.131896, 0.214081, -0.393877, -0.268149, 0.404721, -0.351012, -0.310679, 0.586257, -0.108370, 0.621715, 0.699790, 0.186747, 1.125329, 0.406162, 0.482767, 0.728078, 0.514443, 0.887300, 0.662590, 0.685882, -0.067507, -0.024625, 0.396288, 0.148786, -0.370714, -0.704970, -0.608318, -0.843822, -1.730051, -1.457327, -1.434621, -1.606219, -2.435722, -2.299680, -2.109391, -2.008079, -1.458030, -1.274994, -1.411305, -1.049791, -0.610698, -0.836311, -0.660881, 0.018656, 0.780030, 0.430543, 1.565411, 1.349442, 1.530551, 2.293393, 2.363122, 2.430692, 2.620503, 2.590710, 3.305382, 2.569533, 2.849722, 2.540316, 3.245416, 2.235564, 2.253771, 2.181615, 2.506356, 1.871819, 1.364354, 1.241756, 1.599763, 0.498632, 0.476353, 0.905162, 0.175571, 0.399942, 0.110309, 0.645106, 0.581168, 0.770809, 0.186366, 0.381534, 0.700933, 0.443843, 1.074409, 0.671337, 0.383685, 0.588885, 0.870202, 0.629095, 1.455836, 1.523360, 0.690576, 0.809577, 0.647595, 1.065731, 0.843768, 0.394528, 0.968935, 0.807392, 0.096189, 0.446127, 0.514206, 0.432563, -0.108232, 0.261633, -0.538776, -0.537836, 0.170717, -0.071436, 0.314821, -0.335668, 0.384507, -0.297584, 0.336408, -0.102863, 0.170258, 0.249811, 0.371252, 0.776749, 0.916895, 1.163781, 0.888943, 0.828567, 0.526940, 0.381781, 0.346352, 0.571533, -0.062067, 0.232292, -0.066669, -0.286076, -0.476584, -1.231899, -1.725454, -1.721778, -2.071049, -1.636038, -1.469298, -1.823176, -2.083112, -2.230058, -2.043828, -1.569286, -1.607004, -1.057289, -1.288902, -1.230434, -0.168988, -0.227956, -0.036866, 0.679513, 1.016522, 1.756732, 1.196722, 2.165574, 2.628975, 2.165210, 3.068265, 3.146761, 3.097412, 3.145308, 3.032642, 2.606668, 2.991588, 2.627898, 2.535771, 2.510458, 2.581243, 1.595823, 2.234042, 1.872768, 1.229944, 1.404721, 0.668117, 0.711234, 0.802713, 0.312177, 0.109421, 0.048584, 0.342425, 0.206138, 0.239527, 0.825146, 0.710416, 0.217630, 1.051251, 0.261929, 0.326978, 0.605117, 0.773867, 0.913860, 1.448104, 1.569437, 0.698911, 1.029227, 1.529009, 0.744895, 0.490708, 0.354958, 0.459294, 0.795391, 0.131855, 0.582397, 0.145560, 0.014429, 0.519457, -0.434466, -0.325900, -0.207033, 0.068816, 0.120300, -0.560603, 0.233512, -0.162614, 0.017789, -0.215127, 0.145998, 0.026743, 0.298170, 1.027162, 0.923680, 1.028259, 0.351765, 0.443510, 0.806618, 0.167537, 0.339962, 0.609425, 0.000452, 0.310251, -0.465816, -0.341343, -0.888474, -0.728528, -1.223135, -1.543344, -1.489578, -1.538346, -1.953323, -1.640636, -2.118454, -2.452408, -2.080447, -2.109285, -1.966841, -2.116377, -1.221518, -1.647228, -1.153597, -0.716776, -0.095504, -0.210302, 0.725363, 1.054609, 0.995387, 1.231782, 2.033283, 2.025312, 2.822646, 2.749408, 2.372430, 3.175617, 3.169133, 2.607252, 2.685827, 3.347691, 2.512054, 2.204146, 2.531040, 1.793100, 2.146540, 1.787618, 1.954840, 1.471534, 0.710678, 1.139672, 0.396040, 1.049154, 0.015042, 0.580311, 0.570909, 0.467781, 0.153113, 0.671547, 0.292284, 0.503589, 0.100634, 0.898525, 0.609707, 1.185266, 1.130625, 0.663048, 0.663822, 0.693283, 0.843130, 0.856773, 0.850539, 1.046508, 0.858010, 1.295065, 0.974948, 1.155199, 0.905175, 0.751137, 0.780867, -0.059289, -0.177213, 0.050653, -0.203156, 0.110647, -0.375421, -0.422658, -0.023506, -0.000158, 0.424780, 0.480925, 0.291510, 0.486928, 0.121902, 0.003310, 0.738561, 0.694012, 1.118046, 0.963212, 1.198456, 0.388176, 0.946203, 0.470969, 0.710465, 0.468134, 0.431212, 0.612881, -0.075021, -0.611694, -0.156138, -0.782831, -0.899354, -1.322509, -1.218198, -1.176684, -1.556460, -1.833960, -1.509089, -2.140020, -2.475714, -2.411920, -1.577398, -1.267204, -1.313923, -1.550226, -0.848575, -1.163776, -0.019097, 0.201277, -0.068780, 0.568261, 1.466468, 1.054058, 1.471568, 1.558835, 1.927196, 2.094198, 2.916793, 2.420345, 2.970983, 3.272351, 2.564576, 3.106890, 2.789672, 2.619376, 2.666380, 2.867571, 1.787402, 1.632014, 2.089382, 1.029588, 0.827413, 1.117832, 0.376422, 0.271852, 0.424302, 0.449313, 0.045081, 0.163969, 0.671942, 0.129110, 0.343688, 0.042405, 0.276977, 0.876151, 1.086986, 0.760233, 1.210006, 1.163925, 0.634267, 0.564007, 1.396934, 1.144970, 0.864892, 1.317445, 1.222063, 1.375884, 0.773057, 0.657617, 0.510200, 0.111117, 0.255145, 0.711889, -0.110758, 0.184519, -0.399349, 0.310651, 0.371847, -0.323477, -0.402236, 0.311610, 0.252571, 0.244261, 0.043552, 0.203817, 0.303035, 0.237371, 0.750215, 0.167424, 0.206133, 0.689142, 0.767769, 0.403585, 0.386755, 0.265352, 0.574144, 0.536515, -0.073723, 0.028102, -0.070763, -0.601456, -0.132186, -0.212598, -0.874368, -0.714481, -0.756415, -1.517250, -1.168757, -1.846140, -2.188589, -2.267524, -1.743268, -1.536816, -1.553647, -1.891345, -1.182682, -1.455434, -0.966373, -0.895278, -0.701868, -0.111500, 0.286677, }; const float32_t OrigalData[2048] = { 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, 20.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, -2.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, -5.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, 9.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, -4.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 3.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 12.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 5.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 25.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, 7.000000, }; const float32_t MixData[2048] = { -0.191369, -0.749127, -0.531185, 1.636901, 1.984951, -0.536357, -0.526809, 0.698130, 0.802163, -1.580007, -0.779832, -1.143477, 0.462977, 1.285612, -0.375808, 0.607811, -0.741598, -0.448738, 1.278238, 0.199438, 0.556566, 0.880427, -1.063859, 0.842679, -0.756426, 0.981440, 0.892898, 1.347870, 0.438222, 0.767736, -0.433392, -1.476173, -0.510023, 0.689417, -0.457657, 0.123272, 1.073843, 1.572955, -0.077115, -0.831921, -0.709114, 1.883983, -1.848087, 0.208080, -0.323356, -0.089697, -1.777702, -1.466205, 1.583541, -1.754747, 1.515992, -0.313105, -0.242881, -0.367793, -0.923131, 0.701841, -0.340415, 0.382061, 0.960845, 0.340726, -0.031181, 1.300579, -1.176799, -0.976389, -0.183658, -1.846481, 0.592703, -0.582565, -0.341140, -0.572744, 1.987394, -0.608183, -0.016105, -0.499183, 0.162622, 0.046288, 0.738153, -1.190017, -0.346654, -1.816176, 0.264233, 0.937689, 0.408466, -0.837202, 0.513476, -0.530290, -0.160781, 0.486319, -1.629413, -0.890651, -0.446313, 0.265341, -0.225654, -0.158109, -0.482954, 1.830467, 0.320417, -0.970291, 0.418248, -2.135538, 20.910395, 17.841122, 20.597354, 18.321467, 19.781582, 18.686821, 20.227608, 19.327304, 19.555231, 21.727175, 18.988994, 20.848924, 19.233256, 19.599421, 21.270044, 20.478215, 20.442770, 21.154232, 19.411892, 19.833372, -1.603663, -1.774487, -1.082986, -3.759646, -2.907569, -3.261289, -3.546728, -1.411938, -2.442689, -3.056303, -2.199872, -3.738597, -3.223296, -1.687603, -3.730154, -0.496218, -3.314874, -2.055081, -2.724858, -2.169917, -1.588044, -0.776636, -0.784726, -2.426247, -2.179535, -1.755633, -0.340519, -1.100521, -3.638904, -2.733516, 3.874695, 4.059649, 5.716389, 4.530539, 6.600014, 5.525856, 5.321188, 7.095263, 4.609872, 5.368814, 5.612250, 4.356811, 5.186749, 3.582162, 6.033563, 6.898249, 5.307993, 2.811645, 6.881504, 3.719954, 3.730636, 4.138494, 4.730949, 3.611499, 8.048982, 4.068129, 5.884561, 5.684722, 4.153400, 4.079910, 6.681937, 5.724988, 3.898786, 4.719988, 4.887168, 5.637743, 5.976972, 6.002931, 5.975084, 5.297737, 6.682555, 4.158666, 7.081845, 5.679158, 6.458619, 4.778726, 4.226219, 5.538600, 5.476589, 5.490040, 5.205832, 5.680233, 5.499988, 4.230363, 3.633145, 5.458514, 5.172352, 5.495531, 3.516129, 4.353320, 5.199864, 6.344863, 3.802207, 5.131089, 5.219337, 5.285633, 4.189385, 4.183263, 4.451523, 5.068705, 5.486625, 7.068244, 3.401550, 5.991179, 6.043269, 4.899206, 4.052250, 4.653389, 4.663737, 5.578173, -4.755886, -4.283716, -5.079975, -4.414210, -5.097557, -3.207465, -5.704865, -4.267042, -2.744498, -5.581295, -4.929389, -4.230796, -4.909626, -4.045983, -4.703848, -3.632953, -5.216252, -6.728259, -4.210673, -5.360196, -4.952863, -4.368865, -6.939665, -5.359276, -4.412516, -7.280638, -6.116867, -5.816486, -5.485327, -4.334981, 7.671687, 8.873841, 9.632914, 9.469979, 9.063516, 9.556245, 10.575581, 9.125633, 10.625598, 10.799788, 8.518634, 8.607463, 9.607410, 8.248434, 7.344631, 9.271736, 9.435436, 9.197208, 8.037997, 8.607800, 10.030320, 9.179983, 8.806731, 8.425941, 8.636819, 9.029741, 9.304111, 8.297898, 8.004216, 9.043830, 9.163041, 9.034175, 8.384248, 7.340012, 8.828276, 9.865752, 10.810739, 9.516697, 9.336073, 9.462812, 9.108030, 8.187531, 8.390439, 7.852137, 8.854272, 9.184024, 9.840553, 8.591391, 8.041362, 9.326816, 7.563626, 7.957029, 7.394757, 9.059029, 9.327090, 7.991391, 8.766415, 9.647914, 9.232663, 8.721903, 9.063167, 8.829403, 7.717187, 9.506898, 9.776002, 9.253020, 9.351479, 9.395197, 9.342416, 8.545510, 9.400396, 9.495266, 10.376886, 7.309244, 7.468083, 9.655610, 10.132802, 9.316194, 7.802531, 8.427661, 10.013687, 10.232217, 9.707704, 7.528022, 9.452580, 7.056861, 9.226204, 8.879749, 9.758559, 8.872123, 7.964222, 8.699268, 8.877355, 7.503179, 9.307898, 8.117875, 10.114623, 9.486305, 8.500482, 7.885157, 7.317921, 9.894366, 10.316869, 9.266766, 8.410104, 9.476291, 9.053787, 9.273372, 10.725818, 8.796850, 9.117307, 7.825506, 8.277831, 10.027711, 8.450544, 7.154872, 9.562675, 9.576406, 9.518157, 9.827275, 8.331395, 9.357855, 8.747453, 9.437819, 8.124531, 9.266900, 8.792846, 10.942103, 8.882119, 9.421224, 9.459842, 8.498255, 10.184112, 9.407786, 10.027958, 8.322561, 8.191143, 9.542488, 9.684821, 9.616658, -3.018951, -3.927135, -4.108310, -5.048560, -3.907581, -3.435319, -2.746054, -4.727676, -3.517871, -3.256603, -2.903085, -4.132433, -5.080795, -4.418563, -4.790791, -4.017594, -5.640663, -4.659616, -4.591201, -3.231238, -3.020852, -3.475873, -4.657343, -4.582487, -5.713247, -2.676578, -5.844275, -3.170716, -5.143565, -3.947016, -4.231541, -3.212407, -2.601830, -4.255225, -2.670143, -5.430716, -5.347036, -3.349611, -3.455481, -3.848006, 1.355298, 3.772950, 4.220892, 3.152731, 2.829202, 1.958649, 2.787451, 4.036527, 3.087246, 2.989515, 3.564104, 2.233250, 2.610927, 1.754422, 1.409628, 2.644174, 3.875122, 2.584340, 3.889929, 2.159248, 2.891914, 2.258054, 3.452049, 3.568172, 2.458213, 2.142941, 0.108753, 1.524591, 3.866783, 5.014628, 3.411060, 3.037729, 3.535182, 1.341819, 4.056992, 3.182946, 2.160399, 3.003900, 3.064865, 3.101283, 3.954393, 3.124648, 3.118135, 4.446050, 0.729254, 3.393961, 1.564530, 3.224953, 4.563784, 1.302582, 3.110984, 2.226544, 3.832021, 3.316146, 1.794835, 3.612261, 3.800246, 2.050217, 2.413396, 4.400176, 2.650103, 3.893210, 4.497104, 3.937372, 4.404039, 2.551433, 3.892254, 4.519806, 4.159218, 4.814500, 1.298597, 3.801705, 3.188672, 3.239955, 4.163651, 3.011309, 3.623262, 2.118537, 3.178298, 3.573497, 3.041045, 2.549192, 3.994926, 4.583972, 3.466773, 1.814521, 3.026880, 2.899341, 0.465716, 2.713927, 3.631795, 3.706314, 0.981104, 2.727316, 3.819292, 2.366964, 3.684221, 1.963861, 3.948440, 4.409128, 3.813670, 2.821799, 2.954779, 2.360414, 2.561696, 3.623100, 3.082260, 3.150661, 3.866161, 3.581981, 3.229727, 3.986244, 3.066000, 1.710789, 2.908360, 4.874899, 2.770672, 1.823320, 3.192864, 2.553591, 3.843609, 4.202764, 2.912035, 3.989408, 2.662912, 2.494070, 1.553211, 2.544995, 4.413650, 3.280056, 2.347228, 2.394332, 2.524323, 3.871451, 3.013344, 3.187703, 3.165606, 2.888160, 1.357811, 4.364732, 1.414335, 0.369534, 2.552457, 3.724690, 2.968288, 2.736687, 2.845247, 3.389558, 3.397048, 3.781755, 2.243389, 2.053190, 3.825352, 2.688027, 2.298747, 1.850329, 1.963509, 2.619968, 3.568431, 1.902936, 4.524858, 4.489171, 4.245867, 3.104543, 2.574010, 4.050934, 3.021975, 3.282062, 4.066149, 1.223703, 4.158723, 2.489351, 1.279311, 2.730771, 2.078510, 2.124990, 2.041405, 3.615505, 2.254914, 2.428036, 3.144494, 1.628409, 3.888282, 0.353978, 2.611382, 2.397944, 3.710538, 3.406865, 3.595019, 2.495350, 4.855430, 2.525012, 3.003461, 2.305046, 4.275201, 2.044810, 1.569082, 2.687778, 5.057221, 2.732969, 2.248326, 3.010729, 3.225569, 2.706394, 3.482589, 1.458424, 1.567320, -0.555789, 3.080790, 4.442939, 3.238116, 3.122721, 3.845333, 2.658504, 2.392372, 3.270601, 3.725726, 4.060191, 1.885879, 2.760272, 10.118199, 11.806606, 11.238046, 12.427293, 12.452675, 12.974889, 13.336935, 13.479238, 10.003256, 12.036254, 10.719331, 12.734945, 11.393162, 11.359317, 11.426971, 11.084504, 11.631946, 13.087906, 12.759296, 12.104975, 11.740420, 8.888618, 11.372645, 12.351950, 12.411682, 12.301632, 10.930858, 11.903953, 11.274828, 13.202222, 13.392753, 12.886341, 11.864719, 12.640542, 11.116491, 13.401556, 12.772636, 11.614163, 12.631864, 11.929024, 12.604826, 11.303522, 12.244977, 11.318461, 10.662016, 11.314049, 11.513576, 12.758536, 10.928917, 12.626499, 11.081752, 13.056499, 12.086366, 11.855402, 10.796979, 10.858069, 11.779116, 13.270837, 12.058332, 10.988444, 12.890824, 11.895496, 12.868898, 11.444749, 12.189483, 10.593911, 11.172877, 12.696624, 12.533058, 13.197526, 12.506154, 12.179692, 12.729587, 12.798504, 13.129747, 13.582342, 12.756347, 11.845798, 10.672523, 11.337512, 11.179131, 11.436697, 13.465063, 11.081615, 12.668532, 10.515674, 11.698381, 11.916703, 11.437482, 13.013418, 11.667011, 13.238574, 11.333662, 10.812477, 12.607026, 13.894420, 13.338355, 13.075339, 12.648913, 13.683885, 6.373446, 4.684835, 5.143509, 4.116877, 4.847059, 5.792419, 5.407943, 3.984098, 6.252480, 6.004841, 6.175336, 5.316578, 5.971478, 5.512969, 5.550868, 4.937370, 4.631392, 3.634516, 4.877606, 4.351711, 24.269755, 24.640878, 25.413885, 23.629609, 25.181290, 24.679503, 23.269497, 22.554806, 25.894235, 24.560946, 25.662211, 25.275855, 24.448629, 25.820538, 25.818659, 25.159790, 25.993625, 25.380302, 25.739870, 23.843429, 26.074818, 23.257756, 24.511182, 25.611507, 24.540054, 25.465904, 25.566659, 24.366501, 25.782308, 25.266479, 7.043245, 7.929045, 6.819392, 5.985242, 7.608212, 7.737461, 6.209048, 8.455440, 5.880634, 6.137267, 7.536348, 4.833134, 5.671861, 6.614699, 8.177697, 8.387626, 6.168403, 6.326179, 7.380058, 7.964334, 9.569601, 7.337192, 7.807847, 6.573755, 6.011224, 7.132337, 7.264387, 6.195267, 8.173349, 8.419950, 7.402783, 8.379375, 6.468091, 5.656961, 5.710908, 7.406720, 6.654044, 7.445923, 8.080649, 7.541225, 7.604885, 5.302966, 6.474810, 6.776079, 8.545189, 7.188862, 5.426539, 8.643812, 7.495264, 7.015756, 6.516814, 8.210869, 6.155687, 9.191678, 6.818163, 6.028582, 5.646904, 6.686993, 7.048484, 6.618632, 6.288055, 7.567591, 6.226985, 7.276264, 6.734415, 7.634540, 5.441156, 7.960036, 5.969569, 6.148803, 8.012569, 8.725189, 6.578929, 7.211702, 5.802283, 5.389515, 8.174351, 7.749141, 6.965420, 6.482423, 5.757767, 6.442935, 8.494895, 6.760179, 7.569572, 7.094422, 5.664344, 5.288769, 8.050819, 7.222689, 9.847221, 6.850237, 7.651105, 7.146910, 6.352025, 6.183520, 5.993922, 8.012459, 6.441806, 6.030844, 6.825159, 6.323066, 6.886529, 5.132140, 5.803993, 7.060870, 6.227052, 6.355260, 8.848466, 8.282246, 6.776619, 5.795912, 6.057793, 9.214122, 6.869101, 7.268129, 7.029081, 8.130347, 6.230249, 6.260183, 5.211649, 5.472602, 7.269470, 6.912228, 7.769458, 6.486948, 7.456511, 7.749295, 8.926703, 6.913637, 6.815894, 7.088230, 7.074207, 6.829103, 8.875026, 8.238620, 6.481127, 7.827610, 8.243983, 6.066656, 5.927471, 6.654590, 7.230047, 7.119509, 6.896261, 7.196357, 6.046410, 6.120738, 7.346869, 6.801541, 6.584296, 5.286987, 7.209935, 7.380413, 5.607311, 6.798960, 6.973972, 7.810840, 6.259502, 6.359475, 6.184767, 5.219459, 7.064596, 7.312455, 6.196338, 6.045742, 5.820075, 6.802202, 8.065646, 4.171872, 4.732984, 8.038709, 6.281535, 6.935907, 8.178235, 8.523277, 7.030259, 7.657438, 7.188683, 7.473293, 6.630315, 5.493502, 7.568678, 7.625452, 6.597252, 6.431136, 5.545781, 6.463156, 6.401551, 6.623049, 8.648526, 7.353456, 6.596998, 7.297770, 7.292613, 8.163939, 7.866269, 7.994731, 7.163869, 7.364719, 8.061693, 7.088825, 5.439744, 7.170877, 6.058343, 6.924883, 6.517801, 6.308143, 8.133026, 6.616336, 6.999758, 7.072493, 5.570238, 8.167932, -0.191369, -0.749127, -0.531185, 1.636901, 1.984951, -0.536357, -0.526809, 0.698130, 0.802163, -1.580007, -0.779832, -1.143477, 0.462977, 1.285612, -0.375808, 0.607811, -0.741598, -0.448738, 1.278238, 0.199438, 0.556566, 0.880427, -1.063859, 0.842679, -0.756426, 0.981440, 0.892898, 1.347870, 0.438222, 0.767736, -0.433392, -1.476173, -0.510023, 0.689417, -0.457657, 0.123272, 1.073843, 1.572955, -0.077115, -0.831921, -0.709114, 1.883983, -1.848087, 0.208080, -0.323356, -0.089697, -1.777702, -1.466205, 1.583541, -1.754747, 1.515992, -0.313105, -0.242881, -0.367793, -0.923131, 0.701841, -0.340415, 0.382061, 0.960845, 0.340726, -0.031181, 1.300579, -1.176799, -0.976389, -0.183658, -1.846481, 0.592703, -0.582565, -0.341140, -0.572744, 1.987394, -0.608183, -0.016105, -0.499183, 0.162622, 0.046288, 0.738153, -1.190017, -0.346654, -1.816176, 0.264233, 0.937689, 0.408466, -0.837202, 0.513476, -0.530290, -0.160781, 0.486319, -1.629413, -0.890651, -0.446313, 0.265341, -0.225654, -0.158109, -0.482954, 1.830467, 0.320417, -0.970291, 0.418248, -2.135538, 20.910395, 17.841122, 20.597354, 18.321467, 19.781582, 18.686821, 20.227608, 19.327304, 19.555231, 21.727175, 18.988994, 20.848924, 19.233256, 19.599421, 21.270044, 20.478215, 20.442770, 21.154232, 19.411892, 19.833372, -1.603663, -1.774487, -1.082986, -3.759646, -2.907569, -3.261289, -3.546728, -1.411938, -2.442689, -3.056303, -2.199872, -3.738597, -3.223296, -1.687603, -3.730154, -0.496218, -3.314874, -2.055081, -2.724858, -2.169917, -1.588044, -0.776636, -0.784726, -2.426247, -2.179535, -1.755633, -0.340519, -1.100521, -3.638904, -2.733516, 3.874695, 4.059649, 5.716389, 4.530539, 6.600014, 5.525856, 5.321188, 7.095263, 4.609872, 5.368814, 5.612250, 4.356811, 5.186749, 3.582162, 6.033563, 6.898249, 5.307993, 2.811645, 6.881504, 3.719954, 3.730636, 4.138494, 4.730949, 3.611499, 8.048982, 4.068129, 5.884561, 5.684722, 4.153400, 4.079910, 6.681937, 5.724988, 3.898786, 4.719988, 4.887168, 5.637743, 5.976972, 6.002931, 5.975084, 5.297737, 6.682555, 4.158666, 7.081845, 5.679158, 6.458619, 4.778726, 4.226219, 5.538600, 5.476589, 5.490040, 5.205832, 5.680233, 5.499988, 4.230363, 3.633145, 5.458514, 5.172352, 5.495531, 3.516129, 4.353320, 5.199864, 6.344863, 3.802207, 5.131089, 5.219337, 5.285633, 4.189385, 4.183263, 4.451523, 5.068705, 5.486625, 7.068244, 3.401550, 5.991179, 6.043269, 4.899206, 4.052250, 4.653389, 4.663737, 5.578173, -4.755886, -4.283716, -5.079975, -4.414210, -5.097557, -3.207465, -5.704865, -4.267042, -2.744498, -5.581295, -4.929389, -4.230796, -4.909626, -4.045983, -4.703848, -3.632953, -5.216252, -6.728259, -4.210673, -5.360196, -4.952863, -4.368865, -6.939665, -5.359276, -4.412516, -7.280638, -6.116867, -5.816486, -5.485327, -4.334981, 7.671687, 8.873841, 9.632914, 9.469979, 9.063516, 9.556245, 10.575581, 9.125633, 10.625598, 10.799788, 8.518634, 8.607463, 9.607410, 8.248434, 7.344631, 9.271736, 9.435436, 9.197208, 8.037997, 8.607800, 10.030320, 9.179983, 8.806731, 8.425941, 8.636819, 9.029741, 9.304111, 8.297898, 8.004216, 9.043830, 9.163041, 9.034175, 8.384248, 7.340012, 8.828276, 9.865752, 10.810739, 9.516697, 9.336073, 9.462812, 9.108030, 8.187531, 8.390439, 7.852137, 8.854272, 9.184024, 9.840553, 8.591391, 8.041362, 9.326816, 7.563626, 7.957029, 7.394757, 9.059029, 9.327090, 7.991391, 8.766415, 9.647914, 9.232663, 8.721903, 9.063167, 8.829403, 7.717187, 9.506898, 9.776002, 9.253020, 9.351479, 9.395197, 9.342416, 8.545510, 9.400396, 9.495266, 10.376886, 7.309244, 7.468083, 9.655610, 10.132802, 9.316194, 7.802531, 8.427661, 10.013687, 10.232217, 9.707704, 7.528022, 9.452580, 7.056861, 9.226204, 8.879749, 9.758559, 8.872123, 7.964222, 8.699268, 8.877355, 7.503179, 9.307898, 8.117875, 10.114623, 9.486305, 8.500482, 7.885157, 7.317921, 9.894366, 10.316869, 9.266766, 8.410104, 9.476291, 9.053787, 9.273372, 10.725818, 8.796850, 9.117307, 7.825506, 8.277831, 10.027711, 8.450544, 7.154872, 9.562675, 9.576406, 9.518157, 9.827275, 8.331395, 9.357855, 8.747453, 9.437819, 8.124531, 9.266900, 8.792846, 10.942103, 8.882119, 9.421224, 9.459842, 8.498255, 10.184112, 9.407786, 10.027958, 8.322561, 8.191143, 9.542488, 9.684821, 9.616658, -3.018951, -3.927135, -4.108310, -5.048560, -3.907581, -3.435319, -2.746054, -4.727676, -3.517871, -3.256603, -2.903085, -4.132433, -5.080795, -4.418563, -4.790791, -4.017594, -5.640663, -4.659616, -4.591201, -3.231238, -3.020852, -3.475873, -4.657343, -4.582487, -5.713247, -2.676578, -5.844275, -3.170716, -5.143565, -3.947016, -4.231541, -3.212407, -2.601830, -4.255225, -2.670143, -5.430716, -5.347036, -3.349611, -3.455481, -3.848006, 1.355298, 3.772950, 4.220892, 3.152731, 2.829202, 1.958649, 2.787451, 4.036527, 3.087246, 2.989515, 3.564104, 2.233250, 2.610927, 1.754422, 1.409628, 2.644174, 3.875122, 2.584340, 3.889929, 2.159248, 2.891914, 2.258054, 3.452049, 3.568172, 2.458213, 2.142941, 0.108753, 1.524591, 3.866783, 5.014628, 3.411060, 3.037729, 3.535182, 1.341819, 4.056992, 3.182946, 2.160399, 3.003900, 3.064865, 3.101283, 3.954393, 3.124648, 3.118135, 4.446050, 0.729254, 3.393961, 1.564530, 3.224953, 4.563784, 1.302582, 3.110984, 2.226544, 3.832021, 3.316146, 1.794835, 3.612261, 3.800246, 2.050217, 2.413396, 4.400176, 2.650103, 3.893210, 4.497104, 3.937372, 4.404039, 2.551433, 3.892254, 4.519806, 4.159218, 4.814500, 1.298597, 3.801705, 3.188672, 3.239955, 4.163651, 3.011309, 3.623262, 2.118537, 3.178298, 3.573497, 3.041045, 2.549192, 3.994926, 4.583972, 3.466773, 1.814521, 3.026880, 2.899341, 0.465716, 2.713927, 3.631795, 3.706314, 0.981104, 2.727316, 3.819292, 2.366964, 3.684221, 1.963861, 3.948440, 4.409128, 3.813670, 2.821799, 2.954779, 2.360414, 2.561696, 3.623100, 3.082260, 3.150661, 3.866161, 3.581981, 3.229727, 3.986244, 3.066000, 1.710789, 2.908360, 4.874899, 2.770672, 1.823320, 3.192864, 2.553591, 3.843609, 4.202764, 2.912035, 3.989408, 2.662912, 2.494070, 1.553211, 2.544995, 4.413650, 3.280056, 2.347228, 2.394332, 2.524323, 3.871451, 3.013344, 3.187703, 3.165606, 2.888160, 1.357811, 4.364732, 1.414335, 0.369534, 2.552457, 3.724690, 2.968288, 2.736687, 2.845247, 3.389558, 3.397048, 3.781755, 2.243389, 2.053190, 3.825352, 2.688027, 2.298747, 1.850329, 1.963509, 2.619968, 3.568431, 1.902936, 4.524858, 4.489171, 4.245867, 3.104543, 2.574010, 4.050934, 3.021975, 3.282062, 4.066149, 1.223703, 4.158723, 2.489351, 1.279311, 2.730771, 2.078510, 2.124990, 2.041405, 3.615505, 2.254914, 2.428036, 3.144494, 1.628409, 3.888282, 0.353978, 2.611382, 2.397944, 3.710538, 3.406865, 3.595019, 2.495350, 4.855430, 2.525012, 3.003461, 2.305046, 4.275201, 2.044810, 1.569082, 2.687778, 5.057221, 2.732969, 2.248326, 3.010729, 3.225569, 2.706394, 3.482589, 1.458424, 1.567320, -0.555789, 3.080790, 4.442939, 3.238116, 3.122721, 3.845333, 2.658504, 2.392372, 3.270601, 3.725726, 4.060191, 1.885879, 2.760272, 10.118199, 11.806606, 11.238046, 12.427293, 12.452675, 12.974889, 13.336935, 13.479238, 10.003256, 12.036254, 10.719331, 12.734945, 11.393162, 11.359317, 11.426971, 11.084504, 11.631946, 13.087906, 12.759296, 12.104975, 11.740420, 8.888618, 11.372645, 12.351950, 12.411682, 12.301632, 10.930858, 11.903953, 11.274828, 13.202222, 13.392753, 12.886341, 11.864719, 12.640542, 11.116491, 13.401556, 12.772636, 11.614163, 12.631864, 11.929024, 12.604826, 11.303522, 12.244977, 11.318461, 10.662016, 11.314049, 11.513576, 12.758536, 10.928917, 12.626499, 11.081752, 13.056499, 12.086366, 11.855402, 10.796979, 10.858069, 11.779116, 13.270837, 12.058332, 10.988444, 12.890824, 11.895496, 12.868898, 11.444749, 12.189483, 10.593911, 11.172877, 12.696624, 12.533058, 13.197526, 12.506154, 12.179692, 12.729587, 12.798504, 13.129747, 13.582342, 12.756347, 11.845798, 10.672523, 11.337512, 11.179131, 11.436697, 13.465063, 11.081615, 12.668532, 10.515674, 11.698381, 11.916703, 11.437482, 13.013418, 11.667011, 13.238574, 11.333662, 10.812477, 12.607026, 13.894420, 13.338355, 13.075339, 12.648913, 13.683885, 6.373446, 4.684835, 5.143509, 4.116877, 4.847059, 5.792419, 5.407943, 3.984098, 6.252480, 6.004841, 6.175336, 5.316578, 5.971478, 5.512969, 5.550868, 4.937370, 4.631392, 3.634516, 4.877606, 4.351711, 24.269755, 24.640878, 25.413885, 23.629609, 25.181290, 24.679503, 23.269497, 22.554806, 25.894235, 24.560946, 25.662211, 25.275855, 24.448629, 25.820538, 25.818659, 25.159790, 25.993625, 25.380302, 25.739870, 23.843429, 26.074818, 23.257756, 24.511182, 25.611507, 24.540054, 25.465904, 25.566659, 24.366501, 25.782308, 25.266479, 7.043245, 7.929045, 6.819392, 5.985242, 7.608212, 7.737461, 6.209048, 8.455440, 5.880634, 6.137267, 7.536348, 4.833134, 5.671861, 6.614699, 8.177697, 8.387626, 6.168403, 6.326179, 7.380058, 7.964334, 9.569601, 7.337192, 7.807847, 6.573755, 6.011224, 7.132337, 7.264387, 6.195267, 8.173349, 8.419950, 7.402783, 8.379375, 6.468091, 5.656961, 5.710908, 7.406720, 6.654044, 7.445923, 8.080649, 7.541225, 7.604885, 5.302966, 6.474810, 6.776079, 8.545189, 7.188862, 5.426539, 8.643812, 7.495264, 7.015756, 6.516814, 8.210869, 6.155687, 9.191678, 6.818163, 6.028582, 5.646904, 6.686993, 7.048484, 6.618632, 6.288055, 7.567591, 6.226985, 7.276264, 6.734415, 7.634540, 5.441156, 7.960036, 5.969569, 6.148803, 8.012569, 8.725189, 6.578929, 7.211702, 5.802283, 5.389515, 8.174351, 7.749141, 6.965420, 6.482423, 5.757767, 6.442935, 8.494895, 6.760179, 7.569572, 7.094422, 5.664344, 5.288769, 8.050819, 7.222689, 9.847221, 6.850237, 7.651105, 7.146910, 6.352025, 6.183520, 5.993922, 8.012459, 6.441806, 6.030844, 6.825159, 6.323066, 6.886529, 5.132140, 5.803993, 7.060870, 6.227052, 6.355260, 8.848466, 8.282246, 6.776619, 5.795912, 6.057793, 9.214122, 6.869101, 7.268129, 7.029081, 8.130347, 6.230249, 6.260183, 5.211649, 5.472602, 7.269470, 6.912228, 7.769458, 6.486948, 7.456511, 7.749295, 8.926703, 6.913637, 6.815894, 7.088230, 7.074207, 6.829103, 8.875026, 8.238620, 6.481127, 7.827610, 8.243983, 6.066656, 5.927471, 6.654590, 7.230047, 7.119509, 6.896261, 7.196357, 6.046410, 6.120738, 7.346869, 6.801541, 6.584296, 5.286987, 7.209935, 7.380413, 5.607311, 6.798960, 6.973972, 7.810840, 6.259502, 6.359475, 6.184767, 5.219459, 7.064596, 7.312455, 6.196338, 6.045742, 5.820075, 6.802202, 8.065646, 4.171872, 4.732984, 8.038709, 6.281535, 6.935907, 8.178235, 8.523277, 7.030259, 7.657438, 7.188683, 7.473293, 6.630315, 5.493502, 7.568678, 7.625452, 6.597252, 6.431136, 5.545781, 6.463156, 6.401551, 6.623049, 8.648526, 7.353456, 6.596998, 7.297770, 7.292613, 8.163939, 7.866269, 7.994731, 7.163869, 7.364719, 8.061693, 7.088825, 5.439744, 7.170877, 6.058343, 6.924883, 6.517801, 6.308143, 8.133026, 6.616336, 6.999758, 7.072493, 5.570238, 8.167932, }; //原始波形由任意波形+ 高斯分布白噪声 + 均匀分布白噪声组成,滤除高斯分布白噪声 + 均匀分布白噪声。 void arm_lms_f32_test2(void) { uint32_t i; arm_lms_norm_instance_f32 lmsS; float32_t *inputF32, *outputF32, *inputREF, *outputERR; /* 如果是实时性的滤波,仅需清零一次 */ memset(lmsCoeffs32,0,sizeof(lmsCoeffs32)); memset(lmsStateF32,0,sizeof(lmsStateF32)); /* 初始化输入输出缓存指针 */ inputF32 = (float32_t *)&MixData[0]; /* 原始波形 */ outputF32 = (float32_t *)&testOutput[0]; /* 滤波后输出波形 */ inputREF = (float32_t *)&OrigalData[0]; /* 参考波形 */ outputERR = (float32_t *)&test_f32_ERR[0]; /* 误差数据 */ /* 归一化LMS初始化 */ arm_lms_norm_init_f32 (&lmsS, /* LMS结构体 */ NUM_TAPS, /* 滤波器系数个数 */ (float32_t *)&lmsCoeffs32[0], /* 滤波 */ &lmsStateF32[0], /* 滤波器系数 */ 0.01, /* 步长 */ blockSize); /* 处理的数据个数 */ /* 实现LMS自适应滤波,这里每次处理1个点 */ for(i=0; i < numBlocks; i++) { arm_lms_norm_f32(&lmsS, /* LMS结构体 */ inputF32 + (i * blockSize), /* 输入数据 */ inputREF + (i * blockSize), /* 输出数据 */ outputF32 + (i * blockSize), /* 参考数据 */ outputERR + (i * blockSize), /* 误差数据 */ blockSize); /* 处理的数据个数 */ } /* 打印滤波后结果 */ for(i=0; i<TEST_LENGTH_SAMPLES; i++) { printf("%f, %f, %f\r\n", MixData[i], outputF32[i], test_f32_ERR[i]); } } 图中红色信号是原始测试波形数据,绿色是滤波后数据,可见噪声毛刺基本被滤除, 性能     计算2048点自适应滤波耗时180个时钟周期,主频配置的是600MHz,即1/600*180=0.3us,足以满足一般实时性要求较高的场合。

  • 发表了主题帖: 【STM32H7S78-DK】测评+ADC DMA采集1024点FFT计算速度测评

    在前面帖子实现ADC DMA采集、DSP库添加的基础上,本帖将采集1024点数据进行FFT运算,评估STM32H7S78的DSP性能。 测试代码如下: /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "stdio.h" #include "arm_math.h" #include "perf_counter.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ #define VDDA_APPLI (3300UL) #define VAR_CONVERTED_DATA_INIT_VALUE (__LL_ADC_DIGITAL_SCALE(LL_ADC_RESOLUTION_12B) + 1) #define ADC_CONVERTED_DATA_BUFFER_SIZE 1024 ALIGN_32BYTES (uint16_t uhADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE]); uint16_t uhADCxConvertedData_Voltage_mVolt[ADC_CONVERTED_DATA_BUFFER_SIZE]; //0: DMA transfer is not completed //1: DMA transfer is completed //2: DMA transfer has not yet been started yet (initial state) __IO uint8_t ubDmaTransferStatus = 2U; /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc2; DMA_HandleTypeDef handle_GPDMA1_Channel0; TIM_HandleTypeDef htim6; UART_HandleTypeDef huart4; /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ static void MPU_Config(void); static void MX_GPIO_Init(void); static void MX_GPDMA1_Init(void); static void MX_TIM6_Init(void); static void MX_UART4_Init(void); static void MX_ADC2_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /* USER CODE BEGIN PFP */ int __io_putchar(int ch) { HAL_UART_Transmit(&huart4 , (uint8_t *)&ch, 1, 0xFFFF); return ch; } /* USER CODE END PFP */ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { ubDmaTransferStatus = 1; } int tmp_index; #define FFT_LENGTH ADC_CONVERTED_DATA_BUFFER_SIZE float fft_inputbuf[FFT_LENGTH * 2]; float fft_outputbuf[FFT_LENGTH]; uint32_t ifftFlag = 0; uint32_t fftSize = 0; #define TEST_LENGTH_SAMPLES 1024 static float32_t testOutput_f32[TEST_LENGTH_SAMPLES*2]; static float32_t testOutputMag_f32[TEST_LENGTH_SAMPLES*2]; static float32_t testInput_f32[TEST_LENGTH_SAMPLES*2]; static float32_t Phase_f32[TEST_LENGTH_SAMPLES*2]; void PowerPhaseRadians_f32(float32_t *_ptr, float32_t *_phase, uint16_t _usFFTPoints, float32_t _uiCmpValue) { float32_t lX, lY; uint16_t i; float32_t phase; float32_t mag; for (i=0; i <_usFFTPoints; i++) { lX= _ptr[2*i];//实部 lY= _ptr[2*i + 1];//虚部 phase = atan2f(lY, lX);//atan2求解的结果范围是(-pi, pi], 弧度 arm_sqrt_f32((float32_t)(lX*lX+ lY*lY), &mag);//求模 if(_uiCmpValue > mag) { Phase_f32[i] = 0; } else { Phase_f32[i] = phase* 180.0f/3.1415926f;//将求解的结果由弧度转换为角度 } } } static void arm_rfft_f32_app2(void) { uint16_t i; arm_rfft_fast_instance_f32 S; //正变换 ifftFlag = 0; //初始化结构体S中的参数 arm_rfft_fast_init_f32(&S, TEST_LENGTH_SAMPLES); for(i=0; i<TEST_LENGTH_SAMPLES; i++) { //测试波形 //testInput_f32[i] = 1 + cos(2*3.1415926f*50*i/1024 + 3.1415926f/3); testInput_f32[i * 2] = uhADCxConvertedData_Voltage_mVolt[i]; testInput_f32[i * 2 + 1] = 0;//虚部赋值,固定为0. } //1024点实序列快速变换 arm_rfft_fast_f32(&S, testInput_f32, testOutput_f32, ifftFlag); arm_cmplx_mag_f32(testOutput_f32, testOutputMag_f32, TEST_LENGTH_SAMPLES); PowerPhaseRadians_f32(testOutput_f32, Phase_f32, TEST_LENGTH_SAMPLES, 0.5f); //串口打印求解的幅频和相频 for(i=0; i<TEST_LENGTH_SAMPLES; i++) { //printf("%f, %f\r\n", testOutputMag_f32[i], Phase_f32[i]); } } /* USER CODE END 0 */ /** * [url=home.php?mod=space&uid=159083]@brief[/url] The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MPU Configuration--------------------------------------------------------*/ MPU_Config(); /* MCU Configuration--------------------------------------------------------*/ /* Update SystemCoreClock variable according to RCC registers values. */ SystemCoreClockUpdate(); /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ init_cycle_counter(true); /* USER CODE END Init */ /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_GPDMA1_Init(); MX_TIM6_Init(); MX_UART4_Init(); MX_ADC2_Init(); /* USER CODE BEGIN 2 */ start_cycle_counter(); //DSP_RMS(); int64_t lCycleUsed = stop_cycle_counter(); printf("ADC DMA DEMO\n"); for (tmp_index = 0; tmp_index < ADC_CONVERTED_DATA_BUFFER_SIZE; tmp_index++) { uhADCxConvertedData[tmp_index] = VAR_CONVERTED_DATA_INIT_VALUE; } if (HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED) != HAL_OK) { printf("ADC Calibration Err\n"); Error_Handler(); } printf("ADC Calibration End\n"); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin); if (HAL_ADC_Start_DMA(&hadc2,(uint32_t *)uhADCxConvertedData,ADC_CONVERTED_DATA_BUFFER_SIZE) != HAL_OK) { Error_Handler(); } HAL_Delay(50); if (ubDmaTransferStatus == 1) { ubDmaTransferStatus = 0; for (tmp_index = 0; tmp_index < ADC_CONVERTED_DATA_BUFFER_SIZE; tmp_index++) { uhADCxConvertedData_Voltage_mVolt[tmp_index] = __LL_ADC_CALC_DATA_TO_VOLTAGE(VDDA_APPLI, uhADCxConvertedData[tmp_index], LL_ADC_RESOLUTION_12B); //printf("voltage[%d]=%d mV\n",tmp_index,uhADCxConvertedData_Voltage_mVolt[tmp_index]); //printf("%d\n",uhADCxConvertedData_Voltage_mVolt[tmp_index]); arm_rfft_f32_app2(); printf("cycle counter = %lld\n",lCycleUsed); } } } /* USER CODE END 3 */ } 主要用到的函数是arm_rfft_fast_f32,函数原型是 void arm_rfft_fast_f32( const arm_rfft_fast_instance_f32 * S, float32_t * p, float32_t * pOut, uint8_t ifftFlag) 这个函数用于单精度浮点实数FFT,函数有4个参数: S是FFT实例化句柄,调用函数arm_rfft_fast_init_f32初始化得到,然后供此函数arm_rfft_fast_f32调用。支持32, 64, 128, 256, 512, 1024, 2048, 4096点FFT。 比如做1024点FFT,代码如下: arm_rfft_fast_instance_f32 S; arm_rfft_fast_init_f32(&S, 1024); arm_rfft_fast_f32(&S, testInput_f32, testOutput_f32, ifftFlag); p是实数地址,比如我们要做1024点实数FFT,要保证有1024个缓冲。 pOut是FFT转换结果,转换结果不是实数了,而是复数,按照实部,虚拟,实部,虚部,依次排列。比如做1024点FFT,这里的输出也会有1024个数据,即512个复位。 ifftFlag用于设置正变换和逆变换,ifftFlag=0表示正变换,ifftFlag=1表示逆变换。   测试结果: 调用arm_rfft_fast_f32计算1024点FFT耗时184个时钟周期,主频配置的是600MHz,即1/600*184=0.307us,下图是大佬测试的STM32F4和F1的数据,可见1024点FFT性能可以说是F4的369.25/0.307=1202倍  

  • 2024-11-04
  • 回复了主题帖: 【STM32H7S78-DK】测评+TouchGFX显示曲线

    版本是TouchGFX 4.24.1 Designer

  • 2024-11-01
  • 发表了主题帖: 【STM32H7S78-DK】测评+TouchGFX显示曲线

    本帖最后由 dql2016 于 2024-11-4 20:16 编辑 TouchGFX带有丰富的曲线控件,十分方便展示数据动态过程,通过曲线的高速刷新显示,也能体现STM32H7S78强大的图形性能。如下图,选中动态曲线控件,添加到屏幕中:   动态曲线行为选择向左滚动刷新,点数100,数据范围0~3300,ADC采集模拟电压的范围: 打开水平、垂直分割线的显示:     再添加一个文本显示区域用于显示实时数据:   文本显示采用通配符形式<value>,这样在程序中能够动态的更新显示内容:   添加wildcard,添加初始显示值和缓存大小:   同样的方法再添加几个文本显示区,adc用于显示ADC实时采集电压,rms用于显示采集1024点计算的均方根值,time用于显示计算rms值消耗的时间,RMS计算采样CMSIS-DSP库,这样评估STM32H7S78的DSP性能:   通过TouchGFX官网资料可以知道TouchGFX使用的是MVP框架,在MVP框架中所有数据仅能保存在称为 Model 的类对象中,Presenter是视图(View)与Model之间的纽带,View只能通过Presenter来读取数据。MVP框架所有需要保存的数据必须再Model 的类对象。View不能直接读写Model中的数据,必须得通过Presenter来操作,所以先要在Presenter中实现对数据的读写,在ScreenPresenter.hpp中添加读写函数。 在Model.cpp tick中添加模拟产生正弦曲线数据: void Model::tick() { static uint32_t cnt = 0; static time_t raw_time = 1671459593; ++cnt; if (cnt % 60 == 0) { /* Simple counter increase */ ++raw_time; } if (raw_time != last_time) { last_time = raw_time; current_dt = *gmtime(&raw_time); /* Simple gmtime calculation */ /* Notify active presenter */ modelListener->notifyNewDateTime(&current_dt); } { double temp; //if (cnt % 2 == 0) { /* Calculate temperature manually */ temp = 0; for (size_t i = 1; i <= this->sinus_count; i += 2) { temp += sin(2.0 * 3.1415 * (20 * i) * cnt * 20) * (48 / i) + (i == 1 ? 50 : 0); } temp=temp*10+500; modelListener->notifyNewTemp((float)temp); } } } 在Screen1Presenter.cpp中添加实现: void Screen1Presenter::notifyNewTemp(float temp) { view.setTemp(temp); } 在Screen1View.cpp中添加刷新数据到曲线,更新文本显示: void Screen1View::setTemp(float temp) { dynamicGraph1.addDataPoint((int)temp);//更新曲线点数据 Unicode::snprintfFloat(textArea1Buffer, TEXTAREA1_SIZE, "%2.3f", float(12.556)); textArea1.invalidate();//更新文本显示区1 Unicode::snprintfFloat(textArea2Buffer, TEXTAREA2_SIZE, "%2.1f", float(12.5)); textArea2.invalidate();//更新文本显示区2 Unicode::snprintf(textArea3Buffer, TEXTAREA3_SIZE, "%d", 123); textArea3.invalidate();//更新文本显示区3 } 效果: [localvideo]9e1a9d54f0856446dce6e68d43db7dd3[/localvideo]   文本显示区是问号,有没有懂的大佬指点一下,这是啥情况?

  • 2024-10-27
  • 发表了主题帖: 【STM32H7S78-DK】测评+图形库的应用TouchGFX初探

    原计划是要移植LVGL的,但是在看了一些资料后,发现LVGL暂时不支持STM32H7S78的高性能图形引擎GPU,在详细了解了相关资料后,发现还是ST自家的TouchGFX对齐支持最完善,能够充分发挥其高性能图形特性。TouchGFX框架包含易于使用的拖放式图形构建PC工具TouchGFX Designer (TouchGFXDesigner)以及强大的优化图形处理内核TouchGFX引擎。结合WYSIWYG仿真器和自动代码生成功能,TouchGFX大大简化了GUI开发。TouchGFX拥有自己的上位机TouchGFX Designer用于开发图形UI,当前版本是4.24.1,笔者下载的就是这个版本,而且TouchGFX也集成到了STM32CubeMX生态中,使用起来十分方便。本帖初步探索TouchGFX的应用,后续利用TouchGFX实现电压采集波形的刷新展示。 使用软件: TouchGFX Designer(4.21.4) STM32CubeIDE(自家的IDE,支持最完善) 下载安装好TouchGFX Designer,打开软件,在home主页点击新建项目按钮,就可以开始了,当前版本相比以往的版本优化不少,使用起来十分流程:   在搜索框搜索板卡关键字即可,通过板卡模板创建项目的好处是,各种外设都帮我们配置好了,十分方便快速体验demo和创建项目:     在屏幕1中我加入了一张图片作为背景,然后加入了一个按钮,按钮有多种样式和尺寸可选,这里选的是翻转样式:   然后是配置按钮的参数,主要是按下后触发的回调名称,这里就使用默认的function1了: 点击右下角按钮或者按F4生成工程: 生成工程后,可以在电脑上仿真运行,查看UI基本效果:   也可以直接点击编译下载,将工程烧写到开发板上运行观看效果: 使用stm32cubeide导入工程,添加一个GPIO控制LED: 然后保存更新下代码,在生成的代码中,很容易就能找到需要用户添加逻辑的部分,在User/gui/Screen11view.cpp中添加按键翻转LED的控制代码,这里的函数名和之前创建按钮填入的回调名称一致:   在类中添加声明: 效果 [localvideo]8f44e4ece37af5355632bcf23b152b7a[/localvideo]      

  • 2024-10-26
  • 上传了资料: Follow me第二季第1期代码

  • 2024-10-13
  • 发表了主题帖: 【STM32H7S78-DK】测评+SPI应用之驱动AD9833

    由于STM32H7S78是没有DAC外设的,因此要想产生模拟信号,通常有2种方法,一是PWM加输出滤波器,二是专用DDS芯片。 AD9833是一款低功耗、可编程波形发生器,能够产生正弦波、三角波和方波输出。各种类型的检测、信号激励和时域反射(TDR)应用都需要波形发生器。输出频率和相位可通过软件进行编程,调整简单。无需外部元件。频率寄存器为28位宽,时钟速率为25 MHz时,可以实现0.1 Hz的分辨率;时钟速率为1 MHz时,AD9833可以实现0.004 Hz的分辨率。 AD9833通过一个3线串行接口写入数据。该串行接口能够以最高40 MHz的时钟速率工作,并且与DSP和微控制器标准兼容。该器件采用2.3 V至5.5 V电源供电。主页特性: 特性 数字可编程频率和相位 当供电电压为3 V时,功耗为12.65 mW 输出频率范围:0 MHz至12.5 MHz 28位分辨率(25 MHz基准时钟时为0.1 Hz) 正弦波/三角波/方波输出 2.3 V至5.5 V电源供电 无需外部元件 三线式SPI接口 扩展温度范围: -40 ℃至+105 ℃ 掉电选项 10引脚MSOP封装 通过汽车应用认证 AD9833-EP支持防务和航空航天应用(AQEC标准) 下载 AD9833-EP数据手册 (pdf) 温度范围: −55 ℃至+125 ℃ 受控制造基线 一个装配/测试厂 一个制造厂 增强型产品变更通知 认证数据可应要求提供 V62/14619-01XE DSCC图纸号    使用SPI接口即可与AD9833通信,通常可以使用GPIO模拟方式或者硬件SPI接口,本帖使用硬件SPI接口。查看原理图,得知arduino接口上的SPI接口是SPI4,片选使用的是PF8,不是硬件片选信号: SPI接口配置如下:     PF8配置为GPIO作为片选:     然后在AD98333.h头文件定义相关寄存器: #ifndef INC_AD9833_H_ #define INC_AD9833_H_ #include "main.h" /*** Redefine if necessary ***/ #define AD9833_SPI_PORT hspi4 extern SPI_HandleTypeDef AD9833_SPI_PORT; /*** Control Register Bits (DataSheet AD9833 p. 14, Table 6) ***/ #define B28_CFG (1 << 13) #define HLB_CFG (1 << 12) #define F_SELECT_CFG (1 << 11) #define P_SELECT_CFG (1 << 10) #define RESET_CFG (1 << 8) #define SLEEP1_CFG (1 << 7) #define SLEEP12_CFG (1 << 6) #define OPBITEN_CFG (1 << 5) #define DIV2_CFG (1 << 3) #define MODE_CFG (1 << 1) /*** Bitmask to register access ***/ #define FREQ0_REG 0x4000 #define PHASE0_REG 0xC000 //#define FREQ1_ACCESS 0x8000 //#define PHASE1_ACCESS 0xE000 /*** Waveform Types (DataSheet p. 16, Table 15) ***/ #define WAVEFORM_SINE 0 #define WAVEFORM_TRIANGLE MODE_CFG #define WAVEFORM_SQUARE OPBITEN_CFG | DIV2_CFG #define WAVEFORM_SQUARE_DIV2 OPBITEN_CFG /*** Sleep Modes ***/ #define NO_POWERDOWN 0 #define DAC_POWERDOWN SLEEP12_CFG #define CLOCK_POWERDOWN SLEEP1_CFG #define FULL_POWERDOWN SLEEP12_CFG | SLEEP1_CFG #define FMCLK 25000000 #define BITS_PER_DEG 11.3777777777778 // 4096 / 360 typedef enum { wave_triangle, wave_square, wave_sine, } WaveDef; /* * [url=home.php?mod=space&uid=159083]@brief[/url] Set signal generation frequency * @param Frequency value in uint32_t format */ void AD9833_SetFrequency(uint32_t freq); /* * @brief Set signal generation waveform * @param Waveform in WaveDef Type declared in .h file */ void AD9833_SetWaveform(WaveDef Wave); /* * @brief Set signal generation phase * @param Phase in degrees in uint16_t format. Value can be large then 360 */ void AD9833_SetPhase(uint16_t phase_deg); /* * @brief AD9833 Initial Configuration * @param Type of Waveform, Frequency, Phase in degrees */ void AD9833_Init(WaveDef Wave, uint32_t freq, uint16_t phase_deg); /* * @brief Enable or disable the output of the AD9833 * @param Output state (ON/OFF) */ void AD9833_OutputEnable(uint8_t output_state); /* * @brief Set Sleep Mode Function (Explained in datasheet Table 14) * @param Mode of sleep function defined in title */ void AD9833_SleepMode(uint8_t mode); #endif /* INC_AD9833_H_ */   源码AD9833.c实现初始化、频率、相位设置: //Setup Hardware SPI to POLATRITY HIGH, PHASE 1 EDGE #include "AD9833.h" uint8_t _waveform = WAVEFORM_SINE; uint8_t _sleep_mode = NO_POWERDOWN; uint8_t _freq_source = 0; uint8_t _phase_source = 0; uint8_t _reset_state = 0; /* * @brief Set Chip Select pin to LOW state */ static void AD9833_Select(void) { HAL_GPIO_WritePin(AD9833_FSYNC_GPIO_Port, AD9833_FSYNC_Pin, GPIO_PIN_RESET); } /* * @brief Set Chip Select pin to HIGH state */ static void AD9833_Unselect(void) { HAL_GPIO_WritePin(AD9833_FSYNC_GPIO_Port, AD9833_FSYNC_Pin, GPIO_PIN_SET); } /* * @brief Send data by SPI protocol * @param Data variable in uint16_t format */ static void AD9833_WriteRegister(uint16_t data) { AD9833_Select(); uint8_t LByte = data & 0xff; uint8_t HByte = (data >> 8) & 0xff; HAL_SPI_Transmit(&AD9833_SPI_PORT, &HByte, 1, HAL_MAX_DELAY); HAL_SPI_Transmit(&AD9833_SPI_PORT, &LByte, 1, HAL_MAX_DELAY); AD9833_Unselect(); } /* * @brief Update Control Register Bits */ static void AD9833_WriteCfgReg(void) { uint16_t cfg = 0; cfg |= _waveform; cfg |= _sleep_mode; cfg |= (_freq_source ? F_SELECT_CFG : 0); //it's unimportant because don't use FREQ1 cfg |= (_phase_source ? P_SELECT_CFG : 0); //it's unimportant because don't use PHASE1 cfg |= (_reset_state ? RESET_CFG : 0); cfg |= B28_CFG; AD9833_WriteRegister(cfg); } void AD9833_SetWaveform(WaveDef Wave) { if (Wave == wave_sine) _waveform = WAVEFORM_SINE; else if (Wave == wave_square) _waveform = WAVEFORM_SQUARE; else if (Wave == wave_triangle) _waveform = WAVEFORM_TRIANGLE; AD9833_WriteCfgReg(); } void AD9833_SetFrequency(uint32_t freq) { // TODO: calculate max frequency based on refFrequency. // Use the calculations for sanity checks on numbers. // Sanity check on frequency: Square - refFrequency / 2 // Sine/Triangle - refFrequency / 4 if (freq > (FMCLK >> 1)) //bitwise FMCLK / 2 freq = FMCLK >> 1; else if (freq < 0) freq = 0; uint32_t freq_reg = (float)freq * (float)((1 << 28) / FMCLK); // Tuning word uint16_t LSB = FREQ0_REG | (freq_reg & 0x3FFF); uint16_t MSB = FREQ0_REG | (freq_reg >> 14); AD9833_WriteCfgReg(); // Update Config Register AD9833_WriteRegister(LSB); AD9833_WriteRegister(MSB); } void AD9833_SetPhase(uint16_t phase_deg) { if(phase_deg < 0) phase_deg = 0; else if (phase_deg > 360) phase_deg %= 360; uint16_t phase_val = ((uint16_t)(phase_deg * BITS_PER_DEG)) & 0xFFF; AD9833_WriteRegister(PHASE0_REG | phase_val); } void AD9833_Init(WaveDef Wave, uint32_t freq, uint16_t phase_deg) { AD9833_OutputEnable(0); AD9833_SetWaveform(Wave); AD9833_WriteCfgReg(); AD9833_SetFrequency(freq); AD9833_SetPhase(phase_deg); AD9833_OutputEnable(1); } void AD9833_SleepMode(uint8_t mode) { _sleep_mode = mode; AD9833_WriteCfgReg(); } void AD9833_OutputEnable(uint8_t output_state) { _reset_state = !output_state; AD9833_WriteCfgReg(); } 最后调用接口初始化: AD9833_Init(wave_sine, 100, 0); 将输出频率100Hz的正弦波。 接线: AD9833模块:     波形效果如下,可见正确驱动了芯片:  

  • 2024-10-10
  • 发表了主题帖: 【STM32H7S78-DK】测评+DSP计算速度评估

    本帖最后由 dql2016 于 2024-10-10 22:33 编辑 在前面的帖子中,顺利的添加了DSP库进行数学计算,本帖添加傻孩子大佬的开源性能评估库perf_counter(https://github.com/GorgonMeducer/perf_counter)进行计算性能的测试,通过计算耗时来衡量DSP性能。   perf_counter是一个基于C语言的模块,提供以下功能: 精确测量系统性能 精确测量函数执行时间 精确测量中断响应延迟 提供精确到us级的阻塞或非阻塞的延时服务 改善伪随机数的随机数特性 提供系统时间戳 …… 它使用了SysTick却不会占用SysTick,支持所有Cortex-M处理器裸机环境和RTOS环境、KEIL、IAR、GCC等编译器平台都支持。下载源码包后得到下面文件: 对于裸机,只需将图中的4个文件加入到工程中即可:   首先在mian.c加入对头文件的引用: #include "perf_counter.h" 然后对 perf_counter 库进行初始化:  init_cycle_counter(false); 或者 init_cycle_counter(true); 如果用户并没有自己初始化 SysTick,传递 false 给函数 init_cycle_counter() 。 如果用户自己初始化了 SysTick,传递true 给函数 init_cycle_counter() 。 本项目生产的工程是初始化了SysTick,所以入口参数是true      在systick中断中调用perfc_port_insert_to_system_timer_insert_ovf_handler(): 将前面帖子中计算RMS的打印屏蔽掉 //DSP库求均方根测试 static void DSP_RMS(void) { float32_t pSrc[10] = {0.7060f, 0.0318f, 0.2769f, 0.0462f, 0.0971f, 0.8235f, 0.6948f, 0.3171f,0.9502f, 0.0344f}; float32_t pResult; uint32_t pIndex; q31_t pSrc1[10]; q31_t pResult1; q15_t pSrc2[10]; q15_t pResult2; //printf("******** stm32h7s78-dk eeworld dsp test ***********\r\n"); arm_rms_f32(pSrc, 10, &pResult); //printf("arm_rms_f32 : pResult = %f\r\n", pResult); /*****************************************************************/ for(pIndex = 0; pIndex < 10; pIndex++) { pSrc1[pIndex] = rand(); } arm_rms_q31(pSrc1, 10, &pResult1); //printf("arm_rms_q31 : pResult = %d\r\n", pResult1); /*****************************************************************/ for(pIndex = 0; pIndex < 10; pIndex++) { pSrc2[pIndex] = rand()%32768; } arm_rms_q15(pSrc2, 10, &pResult2); //printf("arm_rms_q15 : pResult = %d\r\n", pResult2); //printf("******************************************************************\r\n"); } 测量调用该函数耗时: start_cycle_counter(); DSP_RMS(); int64_t lCycleUsed = stop_cycle_counter(); printf("cycle counter = %lld\n",lCycleUsed);   printf如果需要打印64位数据int64、uint64类型,需要开启完整标准输出库的支持: 直接编译下载程序,输出计算打印结果是0,在STM32官方论坛中找到了答案: https://community.st.com/t5/stm32cubeide-mcus/wrong-result-when-printing-a-int64-t-value-using-stm32cubeide/td-p/148913   STM32CubeIDE uses a reduced library by default in order to reduce code size, as it's usually preferred for embedded development. Part of this tradeoff is dropping support for long long ints in printf-type functions. > What can I do to print a 64-bit int value? Change the runtime library from reduced to standard. 之前配置的是精简标准输出库,导致输出不正确。 修改后,打印正确: stm32h7s7 主频配置的是600MHz,1/600 000 000 (s) * 35630(cycle) =5.938*10^-5 (s)=59.38us 可见计算速度还是很快的,总共计算了10个数据的arm_rms_f32、arm_rms_q31、arm_rms_q15。

  • 2024-10-09
  • 回复了主题帖: 总感觉不痛快,想找点刺激

    okhxyyo 发表于 2024-10-9 16:37 公园20分钟效应不知道你听没听过。下班了到周边环境好的地方散步20分钟会让你心情舒畅很多。我住的小区环境 ... 在家里上班感觉就是不一样啊

  • 2024-10-04
  • 发表了主题帖: 【STM32H7S78-DK】测评+DSP测试

    本帖最后由 dql2016 于 2024-10-10 21:22 编辑 STM32H7S78采用的是M7内核,支持双精度浮点DSP指令,性能强劲。通常可以在STM32CubeMX配置界面通过如下方法加入DSP库:   但实际测试下来,通过此方法STM32H7S78无法将DSP库添加到工程,因此只能采用手动下载DSP库并添加到STM32CubeIDE工程。 ARM公司提供的数字信号库CMSIS-DSP可以在github上下载,也可以在ST提供的STM32Cube软件包里面找到。由于CMSIS-5.6.0以后版本不再提供编译好的静态库,这里为了方便下载CMSIS-5.6.0版本,解压后主要关注下面3个文件夹: Lib文件夹中包含的底层库包括IAR、KEIL、GCC三个编译器平台,字母l代表小端地址格式,b代表大端地址格式(所有STM32皆为小端地址格式处理器);字母f代表使用浮点处理单元(FPU) 对于M7内核提供如下3种: arm_cortexM7lfdp_math.lib (Cortex-M7, Little endian, Double Precision Floating Point Unit) arm_cortexM7lfsp_math.lib (Cortex-M7, Little endian, Single Precision Floating Point Unit) arm_cortexM7l_math.lib (Cortex-M7, Little endian) 这里我们使用第1种。 DSP库Source目录包含了各种数学运算库的源码,如果使用添加源码的方式,能够更好的使用编译器的优化功能,这也是5.6.0不再提供静态库的原因,armcc v6无法对静态lib优化。 1)BasicMathFunctions 基本数学函数:提供浮点数的各种基本运算函数,如向量加减乘除等运算。 2)CommonTables 数字信号处理常用参数表。 3)ComplexMathFunctions 复数计算数学函数。 4)ControllerFunctions 控制算法函数。包括正弦余弦,PID电机控制,矢量Clarke变换,矢量Clarke逆变换等。 5)FastMathFunctions 常见快速算法的数学函数。 6)FilteringFunctions 滤波函数功能,主要为FIR和LMS(最小均方根)等滤波函数。 7)MatrixFunctions 矩阵处理函数。包括矩阵加法、矩阵初始化、矩阵反、矩阵乘法、矩阵规模、矩阵减法、矩阵转置等函数。 8)StatisticsFunctions 统计功能函数。如求平均值、最大值、最小值、计算均方根RMS、计算方差/标准差等。 9)SupportFunctions 支持功能函数,如数据拷贝,Q格式和浮点格式相互转换,Q任意格式相互转换。 10)TransformFunctions 变换功能。包括复数FFT(CFFT)/复数FFT逆运算(CIFFT)、实数FFT(RFFT)/实数FFT逆运算(RIFFT)、和DCT(离散余弦变换)和配套的初始化函数。   在工作空间目录下添加DSP文件夹: 将上面的Include、Lib、Source三个文件夹复制到DSP文件夹中,如下图:   然后在STM32CubeIDE指定库路径和头文件路径。 首先添加静态库:   然后添加静态库路径:   添加头文件引用路径:   添加宏定义:   使能硬件浮点运算单元FPU:   添加头文件: #include "arm_math.h" 添加浮点运算测试代码: //DSP库求均方根测试 static void DSP_RMS(void) { float32_t pSrc[10] = {0.7060f, 0.0318f, 0.2769f, 0.0462f, 0.0971f, 0.8235f, 0.6948f, 0.3171f,0.9502f, 0.0344f}; float32_t pResult; uint32_t pIndex; q31_t pSrc1[10]; q31_t pResult1; q15_t pSrc2[10]; q15_t pResult2; printf("******** stm32h7s78-dk eeworld dsp test ***********\r\n"); arm_rms_f32(pSrc, 10, &pResult); printf("arm_rms_f32 : pResult = %f\r\n", pResult); /*****************************************************************/ for(pIndex = 0; pIndex < 10; pIndex++) { pSrc1[pIndex] = rand(); } arm_rms_q31(pSrc1, 10, &pResult1); printf("arm_rms_q31 : pResult = %d\r\n", pResult1); /*****************************************************************/ for(pIndex = 0; pIndex < 10; pIndex++) { pSrc2[pIndex] = rand()%32768; } arm_rms_q15(pSrc2, 10, &pResult2); printf("arm_rms_q15 : pResult = %d\r\n", pResult2); printf("******************************************************************\r\n"); }   调用 计算结果符合预期,可见DSP库被正确的加入到了工程中 附件:

  • 2024-09-29
  • 回复了主题帖: 【STM32H7S78-DK】测评+STM32CubeIDE配置ADC DMA采集

    freebsder 发表于 2024-9-29 14:30 这个波形看起来有些奇怪。 采集完了,停止采集delay了50ms,没有连续不停采集,这样的是对的

  • 2024-09-22
  • 发表了主题帖: 【STM32H7S78-DK】测评+STM32CubeIDE配置ADC DMA采集

    本帖最后由 dql2016 于 2024-9-22 21:16 编辑 DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用CPU, 即在传输数据的时候,CPU可以干其它的事情,好像是多线程一样。STM32H7S的DMA和STM32F1、F4系列玩法不一样,分为GPDMA(通用DMA)和HPDMA(高性能DMA)。 数据传输支持从外设到存储器或者存储器到存储器, 这里的存储器可以是SRAM或者是FLASH。选择ADC2的通道2,连续转换,DMA单次模式,开启ADC中断,这样当DMA将ADC转换数据搬运到RAM后进入中断回调函数,通知应用处理: 中断开启:   GPDMA选择通道0,标准模式,ADC2请求,数据长度为半字: 在main.c中增加测试代码,在ADC中断置位标准,主循环进行处理: /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "stdio.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ #define VDDA_APPLI (3300UL) #define VAR_CONVERTED_DATA_INIT_VALUE (__LL_ADC_DIGITAL_SCALE(LL_ADC_RESOLUTION_12B) + 1) #define ADC_CONVERTED_DATA_BUFFER_SIZE 256 ALIGN_32BYTES (uint16_t uhADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE]); uint16_t uhADCxConvertedData_Voltage_mVolt[ADC_CONVERTED_DATA_BUFFER_SIZE]; /* 0: DMA transfer is not completed */ /* 1: DMA transfer is completed */ /* 2: DMA transfer has not yet been started yet (initial state) */ __IO uint8_t ubDmaTransferStatus = 2U; /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc2; DMA_HandleTypeDef handle_GPDMA1_Channel0; TIM_HandleTypeDef htim6; UART_HandleTypeDef huart4; /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ static void MPU_Config(void); static void MX_GPIO_Init(void); static void MX_GPDMA1_Init(void); static void MX_TIM6_Init(void); static void MX_UART4_Init(void); static void MX_ADC2_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /* USER CODE BEGIN PFP */ int __io_putchar(int ch) { HAL_UART_Transmit(&huart4 , (uint8_t *)&ch, 1, 0xFFFF); return ch; } /* USER CODE END PFP */ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc) { ubDmaTransferStatus = 1; } int tmp_index; /* USER CODE END 0 */ /** * [url=home.php?mod=space&uid=159083]@brief[/url] The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MPU Configuration--------------------------------------------------------*/ MPU_Config(); /* MCU Configuration--------------------------------------------------------*/ /* Update SystemCoreClock variable according to RCC registers values. */ SystemCoreClockUpdate(); /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_GPDMA1_Init(); MX_TIM6_Init(); MX_UART4_Init(); MX_ADC2_Init(); /* USER CODE BEGIN 2 */ printf("ADC DMA DEMO\n"); for (tmp_index = 0; tmp_index < ADC_CONVERTED_DATA_BUFFER_SIZE; tmp_index++) { uhADCxConvertedData[tmp_index] = VAR_CONVERTED_DATA_INIT_VALUE; } if (HAL_ADCEx_Calibration_Start(&hadc2, ADC_SINGLE_ENDED) != HAL_OK) { printf("ADC Calibration Err\n"); Error_Handler(); } printf("ADC Calibration End\n"); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin); if (HAL_ADC_Start_DMA(&hadc2,(uint32_t *)uhADCxConvertedData,ADC_CONVERTED_DATA_BUFFER_SIZE) != HAL_OK) { Error_Handler(); } HAL_Delay(50); if (ubDmaTransferStatus == 1) { ubDmaTransferStatus = 0; for (tmp_index = 0; tmp_index < ADC_CONVERTED_DATA_BUFFER_SIZE; tmp_index++) { uhADCxConvertedData_Voltage_mVolt[tmp_index] = __LL_ADC_CALC_DATA_TO_VOLTAGE(VDDA_APPLI, uhADCxConvertedData[tmp_index], LL_ADC_RESOLUTION_12B); //printf("voltage[%d]=%d mV\n",tmp_index,uhADCxConvertedData_Voltage_mVolt[tmp_index]); printf("%d\n",uhADCxConvertedData_Voltage_mVolt[tmp_index]); } } } /* USER CODE END 3 */ } /** * @brief ADC2 Initialization Function * @param None * @retval None */ static void MX_ADC2_Init(void) { /* USER CODE BEGIN ADC2_Init 0 */ /* USER CODE END ADC2_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; /* USER CODE BEGIN ADC2_Init 1 */ /* USER CODE END ADC2_Init 1 */ /** Common config */ hadc2.Instance = ADC2; hadc2.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV10; hadc2.Init.Resolution = ADC_RESOLUTION_12B; hadc2.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc2.Init.ScanConvMode = ADC_SCAN_DISABLE; hadc2.Init.EOCSelection = ADC_EOC_SINGLE_CONV; hadc2.Init.LowPowerAutoWait = DISABLE; hadc2.Init.ContinuousConvMode = ENABLE; hadc2.Init.NbrOfConversion = 1; hadc2.Init.DiscontinuousConvMode = DISABLE; hadc2.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc2.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; hadc2.Init.SamplingMode = ADC_SAMPLING_MODE_NORMAL; hadc2.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_ONESHOT; hadc2.Init.Overrun = ADC_OVR_DATA_PRESERVED; hadc2.Init.OversamplingMode = DISABLE; if (HAL_ADC_Init(&hadc2) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_2; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_6CYCLES_5; sConfig.SingleDiff = ADC_SINGLE_ENDED; sConfig.OffsetNumber = ADC_OFFSET_NONE; sConfig.Offset = 0; sConfig.OffsetSign = ADC_OFFSET_SIGN_NEGATIVE; if (HAL_ADC_ConfigChannel(&hadc2, &sConfig) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN ADC2_Init 2 */ /* USER CODE END ADC2_Init 2 */ } /** * @brief GPDMA1 Initialization Function * @param None * @retval None */ static void MX_GPDMA1_Init(void) { /* USER CODE BEGIN GPDMA1_Init 0 */ /* USER CODE END GPDMA1_Init 0 */ /* Peripheral clock enable */ __HAL_RCC_GPDMA1_CLK_ENABLE(); /* GPDMA1 interrupt Init */ HAL_NVIC_SetPriority(GPDMA1_Channel0_IRQn, 0, 0); HAL_NVIC_EnableIRQ(GPDMA1_Channel0_IRQn); /* USER CODE BEGIN GPDMA1_Init 1 */ /* USER CODE END GPDMA1_Init 1 */ /* USER CODE BEGIN GPDMA1_Init 2 */ /* USER CODE END GPDMA1_Init 2 */ } /** * @brief TIM6 Initialization Function * @param None * @retval None */ static void MX_TIM6_Init(void) { /* USER CODE BEGIN TIM6_Init 0 */ /* USER CODE END TIM6_Init 0 */ TIM_MasterConfigTypeDef sMasterConfig = {0}; /* USER CODE BEGIN TIM6_Init 1 */ /* USER CODE END TIM6_Init 1 */ htim6.Instance = TIM6; htim6.Init.Prescaler = 0; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 299; htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim6) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN TIM6_Init 2 */ /* USER CODE END TIM6_Init 2 */ } /** * @brief UART4 Initialization Function * @param None * @retval None */ static void MX_UART4_Init(void) { /* USER CODE BEGIN UART4_Init 0 */ /* USER CODE END UART4_Init 0 */ /* USER CODE BEGIN UART4_Init 1 */ /* USER CODE END UART4_Init 1 */ huart4.Instance = UART4; huart4.Init.BaudRate = 115200; huart4.Init.WordLength = UART_WORDLENGTH_8B; huart4.Init.StopBits = UART_STOPBITS_1; huart4.Init.Parity = UART_PARITY_NONE; huart4.Init.Mode = UART_MODE_TX_RX; huart4.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart4.Init.OverSampling = UART_OVERSAMPLING_16; huart4.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart4.Init.ClockPrescaler = UART_PRESCALER_DIV1; huart4.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart4) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_SetTxFifoThreshold(&huart4, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_SetRxFifoThreshold(&huart4, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK) { Error_Handler(); } if (HAL_UARTEx_DisableFifoMode(&huart4) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN UART4_Init 2 */ /* USER CODE END UART4_Init 2 */ } /** * @brief GPIO Initialization Function * @param None * @retval None */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; /* USER CODE BEGIN MX_GPIO_Init_1 */ /* USER CODE END MX_GPIO_Init_1 */ /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOM_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOO_CLK_ENABLE(); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOM, LD4_Pin|LD3_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOO, LD1_Pin|LD2_Pin, GPIO_PIN_RESET); /*Configure GPIO pins : LD4_Pin LD3_Pin */ GPIO_InitStruct.Pin = LD4_Pin|LD3_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOM, &GPIO_InitStruct); /*Configure GPIO pins : LD1_Pin LD2_Pin */ GPIO_InitStruct.Pin = LD1_Pin|LD2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOO, &GPIO_InitStruct); /* USER CODE BEGIN MX_GPIO_Init_2 */ /* USER CODE END MX_GPIO_Init_2 */ } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ /* MPU Configuration */ static void MPU_Config(void) { MPU_Region_InitTypeDef MPU_InitStruct = {0}; /* Disables the MPU */ HAL_MPU_Disable(); /** Initializes and configures the Region and the memory to be protected */ MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER0; MPU_InitStruct.BaseAddress = 0x08000000; MPU_InitStruct.Size = MPU_REGION_SIZE_64KB; MPU_InitStruct.SubRegionDisable = 0x0; MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; MPU_InitStruct.AccessPermission = MPU_REGION_PRIV_RO; MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE; MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; HAL_MPU_ConfigRegion(&MPU_InitStruct); /* Enables the MPU */ HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT); } /** * @brief This function is executed in case of error occurrence. * @retval None */ void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t *file, uint32_t line) { /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ 接线,还是上帖的A4管脚:  串口示波器采集波形效果: 视频 [localvideo]ab998c31302e7ccdef895d988b3f8555[/localvideo]    

  • 2024-09-21
  • 回复了主题帖: 【STM32H7S78-DK】测评+STM32CubeIDE配置ADC单通道轮询

    lugl4313820 发表于 2024-9-21 13:30 看我前面的帖子,秒秒搞定呀,官方的屏驱动好了的,非常简单。 简单的可以,我试了自带的复杂demo,固件太大了,那个一键下载不行,它是下载到内部flash

  • 回复了主题帖: 【STM32H7S78-DK】测评+STM32CubeIDE配置ADC单通道轮询

    lugl4313820 发表于 2024-9-21 08:32 我在前面测试过,好象参考电压不是3.3v,你分个压过去测试一下看是不是这样的。 看原理图是3.3V,测试VCC计算也得到3.3V,大佬教我学学touchgfx呀,折腾了一下,无法下载到外部flash

  • 2024-09-20
  • 回复了主题帖: 【STM32H7S78-DK】测评+STM32CubeIDE下载程序到外部Flash

    秦天qintian0303 发表于 2024-9-20 08:24 外部Flash启动和内部启动有什么差异吗?启动速度等 肯定慢一些了,内部flash贵很多

统计信息

已有642人来访过

  • 芯积分:1200
  • 好友:4
  • 主题:287
  • 回复:952

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言