From aa38e5c1f48e31213ee349aa5cd6f06c85bda70d Mon Sep 17 00:00:00 2001
From: android <android@lingyun.com>
Date: Tue, 25 Jun 2024 21:49:39 +0800
Subject: [PATCH] Add GD32F103RCT6 ADC converter board SDK source code

---
 mcu_sdk/gd32f103/rk_eFire/Board/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c |  144 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 144 insertions(+), 0 deletions(-)

diff --git a/mcu_sdk/gd32f103/rk_eFire/Board/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c b/mcu_sdk/gd32f103/rk_eFire/Board/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c
new file mode 100644
index 0000000..f26c6f6
--- /dev/null
+++ b/mcu_sdk/gd32f103/rk_eFire/Board/CMSIS/DSP/DSP_Lib_TestSuite/Common/src/transform_tests/cfft_tests.c
@@ -0,0 +1,144 @@
+#include "jtest.h"
+#include "ref.h"
+#include "arr_desc.h"
+#include "transform_templates.h"
+#include "transform_test_data.h"
+
+#define CFFT_SNR_THRESHOLD 120
+
+/*
+  CFFT function test template. Arguments are: inverse-transform flag, function
+  suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)
+*/
+#define CFFT_TEST_BODY(ifft_flag, suffix, output_type)                                  \
+    do                                                                                  \
+    {                                                                                   \
+        /* Go through all arm_cfft_instances */                                         \
+        TEMPLATE_DO_ARR_DESC(                                                           \
+            cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr,           \
+            transform_cfft_##suffix##_structs                                           \
+            ,                                                                           \
+                                                                                        \
+            TRANSFORM_PREPARE_INPLACE_INPUTS(                                           \
+                transform_fft_##suffix##_inputs,                                        \
+                cfft_inst_ptr->fftLen *                                                 \
+                sizeof(output_type) *                                                   \
+                2 /*complex_inputs*/);                                                  \
+                                                                                        \
+                /* Display parameter values */                                          \
+                JTEST_DUMP_STRF("Block Size: %d\n"                                      \
+                                "Inverse-transform flag: %d\n",                         \
+                                (int)cfft_inst_ptr->fftLen,                             \
+                                (int)ifft_flag);                                        \
+                                                                                        \
+            /* Display cycle count and run test */                                      \
+            JTEST_COUNT_CYCLES(                                                         \
+                arm_cfft_##suffix(cfft_inst_ptr,                                        \
+                             (void *) transform_fft_inplace_input_fut,                  \
+                             ifft_flag,              /* IFFT Flag */                    \
+                             1));            /* Bitreverse flag */                      \
+            ref_cfft_##suffix(cfft_inst_ptr,                                            \
+                         (void *) transform_fft_inplace_input_ref,                      \
+                         ifft_flag,         /* IFFT Flag */                             \
+                         1);        /* Bitreverse flag */                               \
+                                                                                        \
+            /* Test correctness */                                                      \
+            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE(                                      \
+                cfft_inst_ptr->fftLen,                                                  \
+                output_type));                                                          \
+                                                                                        \
+        return JTEST_TEST_PASSED;                                                       \
+    } while (0)
+
+
+/*
+  CFFT function with downshift test template. Arguments are: inverse-transform flag,
+  function suffix (q7/q15/q31/f32) and the output type (q7_t, q15_t, q31_t, float32_t)
+*/
+#define CFFT_DOWNSHIFT_INPUT_TEST_BODY(ifft_flag, suffix, output_type)                  \
+    do                                                                                  \
+    {                                                                                   \
+        /* Go through all arm_cfft_instances */                                         \
+        TEMPLATE_DO_ARR_DESC(                                                           \
+            cfft_inst_idx, const arm_cfft_instance_##suffix *, cfft_inst_ptr,           \
+            transform_cfft_##suffix##_structs                                           \
+            ,                                                                           \
+                                                                                        \
+            TRANSFORM_PREPARE_INPLACE_INPUTS_DOWNSHIFT(                                 \
+                transform_fft_##suffix##_inputs,                                        \
+                cfft_inst_ptr->fftLen *                                                 \
+                sizeof(output_type) *                                                   \
+                2 /*complex_inputs*/, output_type);                                     \
+                                                                                        \
+            /* Display parameter values */                                              \
+            JTEST_DUMP_STRF("Block Size: %d\n"                                          \
+                            "Inverse-transform flag: %d\n",                             \
+                            (int)cfft_inst_ptr->fftLen,                                 \
+                            (int)ifft_flag);                                            \
+                                                                                        \
+            /* Display cycle count and run test */                                      \
+            JTEST_COUNT_CYCLES(                                                         \
+                arm_cfft_##suffix(cfft_inst_ptr,                                        \
+                             (void *) transform_fft_inplace_input_fut,                  \
+                             ifft_flag,              /* IFFT Flag */                    \
+                             1));            /* Bitreverse flag */                      \
+            ref_cfft_##suffix(cfft_inst_ptr,                                            \
+                         (void *) transform_fft_inplace_input_ref,                      \
+                         ifft_flag,         /* IFFT Flag */                             \
+                         1);        /* Bitreverse flag */                               \
+                                                                                        \
+            /* Test correctness */                                                      \
+            TRANSFORM_SNR_COMPARE_CMPLX_INTERFACE(                                      \
+                cfft_inst_ptr->fftLen,                                                  \
+                output_type));                                                          \
+                                                                                        \
+        return JTEST_TEST_PASSED;                                                       \
+    } while (0)
+
+
+/* Test declarations */
+JTEST_DEFINE_TEST(cfft_f32_test, cfft_f32)
+{
+    CFFT_TEST_BODY((uint8_t) 0, f32, float32_t);
+}
+
+JTEST_DEFINE_TEST(cfft_f32_ifft_test, cfft_f32)
+{
+    CFFT_TEST_BODY((uint8_t) 1, f32, float32_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q31_test, cfft_q31)
+{
+    CFFT_TEST_BODY((uint8_t) 0, q31, q31_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q31_ifft_test, cfft_q31)
+{
+    CFFT_TEST_BODY((uint8_t) 1, q31, q31_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q15_test, cfft_q15)
+{
+    CFFT_TEST_BODY((uint8_t) 0, q15, q15_t);
+}
+
+JTEST_DEFINE_TEST(cfft_q15_ifft_test, cfft_q15)
+{
+    CFFT_TEST_BODY((uint8_t) 1, q15, q15_t);
+}
+
+/*--------------------------------------------------------------------------------*/
+/* Collect all tests in a group */
+/*--------------------------------------------------------------------------------*/
+
+JTEST_DEFINE_GROUP(cfft_tests)
+{
+    JTEST_TEST_CALL(cfft_f32_test);
+    JTEST_TEST_CALL(cfft_f32_ifft_test);
+
+    JTEST_TEST_CALL(cfft_q31_test);
+    JTEST_TEST_CALL(cfft_q31_ifft_test);
+
+    JTEST_TEST_CALL(cfft_q15_test);
+    JTEST_TEST_CALL(cfft_q15_ifft_test);
+}

--
Gitblit v1.9.1