]> code.bitgloo.com Git - clyne/stmdsp.git/commitdiff
Sampling rate done. 96kS/s
authorClyne Sullivan <clyne@bitgloo.com>
Sat, 17 Oct 2020 17:40:59 +0000 (13:40 -0400)
committerClyne Sullivan <clyne@bitgloo.com>
Sat, 17 Oct 2020 17:40:59 +0000 (13:40 -0400)
cfg/chconf.h
cfg/mcuconf.h
gui/wxmain.cpp
source/adc.cpp
source/dac.cpp
source/main.cpp

index eb399f7da2b8963eabb750eb64e6ac14f7d7fc49..7e11588132af785b2eb526068f20c3988fbe6355 100644 (file)
  * @note    The default is @p FALSE.\r
  */\r
 #if !defined(CH_DBG_ENABLE_ASSERTS)\r
-#define CH_DBG_ENABLE_ASSERTS               FALSE\r
+#define CH_DBG_ENABLE_ASSERTS               TRUE\r
 #endif\r
 \r
 /**\r
index cd6d0bb7b2e113b831ffa2a93a410cee2f838f74..520d6093abae38c4b245bae842589baa1b865f80 100644 (file)
 #define STM32_VOS                           STM32_VOS_RANGE1\r
 #define STM32_PVD_ENABLE                    FALSE\r
 #define STM32_PLS                           STM32_PLS_LEV0\r
-#define STM32_HSI16_ENABLED                 TRUE\r
+#define STM32_HSI16_ENABLED                 FALSE\r
 #define STM32_LSI_ENABLED                   TRUE\r
 #define STM32_HSE_ENABLED                   FALSE\r
-#define STM32_LSE_ENABLED                   TRUE\r
-#define STM32_MSIPLL_ENABLED                TRUE\r
-#define STM32_MSIRANGE                      STM32_MSIRANGE_48M\r
+#define STM32_LSE_ENABLED                   FALSE\r
+#define STM32_MSIPLL_ENABLED                FALSE\r
+#define STM32_MSIRANGE                      STM32_MSIRANGE_8M\r
 #define STM32_MSISRANGE                     STM32_MSISRANGE_4M\r
 #define STM32_SW                            STM32_SW_PLL\r
-#define STM32_PLLSRC                        STM32_PLLSRC_HSI16\r
-#define STM32_PLLM_VALUE                    4\r
-#define STM32_PLLN_VALUE                    80\r
+#define STM32_PLLSRC                        STM32_PLLSRC_MSI\r
+#define STM32_PLLM_VALUE                    2\r
+#define STM32_PLLN_VALUE                    72\r
 #define STM32_PLLP_VALUE                    7\r
 #define STM32_PLLQ_VALUE                    6\r
 #define STM32_PLLR_VALUE                    4\r
 #define STM32_MCOSEL                        STM32_MCOSEL_NOCLOCK\r
 #define STM32_MCOPRE                        STM32_MCOPRE_DIV1\r
 #define STM32_LSCOSEL                       STM32_LSCOSEL_NOCLOCK\r
-#define STM32_PLLSAI1N_VALUE                44\r
+#define STM32_PLLSAI1N_VALUE                24\r
 #define STM32_PLLSAI1P_VALUE                7\r
-#define STM32_PLLSAI1Q_VALUE                6\r
-#define STM32_PLLSAI1R_VALUE                8\r
-#define STM32_PLLSAI2N_VALUE                72\r
+#define STM32_PLLSAI1Q_VALUE                2\r
+#define STM32_PLLSAI1R_VALUE                4\r
+#define STM32_PLLSAI2N_VALUE                24\r
 #define STM32_PLLSAI2P_VALUE                7\r
-#define STM32_PLLSAI2R_VALUE                6\r
+#define STM32_PLLSAI2R_VALUE                2\r
 \r
 /*\r
  * Peripherals clock sources.\r
@@ -87,7 +87,7 @@
 #define STM32_LPTIM2SEL                     STM32_LPTIM2SEL_PCLK1\r
 #define STM32_SAI1SEL                       STM32_SAI1SEL_OFF\r
 #define STM32_SAI2SEL                       STM32_SAI2SEL_OFF\r
-#define STM32_CLK48SEL                      STM32_CLK48SEL_MSI\r
+#define STM32_CLK48SEL                      STM32_CLK48SEL_PLLSAI1\r
 #define STM32_ADCSEL                        STM32_ADCSEL_PLLSAI1\r
 #define STM32_SWPMI1SEL                     STM32_SWPMI1SEL_PCLK1\r
 #define STM32_DFSDMSEL                      STM32_DFSDMSEL_PCLK2\r
index 82e6ed5cce133a0aec7ca67387b9e71859735a31..d4f48787a2881217f344970b9c714aad87379551 100644 (file)
@@ -138,6 +138,7 @@ static wxString file_header (R"cpp(
 #include <cstdint>
 
 using adcsample_t = uint16_t;
+constexpr unsigned int SIZE = 4000;
 
 adcsample_t *process_data(adcsample_t *samples, unsigned int size);
 
index 6e02dde0481ebb3802b2f05b923a916bc92fb13f..744dbc077676472644a6fe331c534c07d075e678 100644 (file)
@@ -38,7 +38,7 @@ static ADCConversionGroup adc_group_config = {
 };
 
 constexpr static const GPTConfig gpt_config = {
-    .frequency = 8000000,
+    .frequency = 2400000,
     .callback = nullptr,
     .cr2 = TIM_CR2_MMS_1, /* TRGO */
     .dier = 0
@@ -65,7 +65,7 @@ namespace adc
         adc_is_read_finished = false;
         adc_group_config.circular = false;
         adcStartConversion(adcd, &adc_group_config, buffer, count);
-        gptStartContinuous(gptd, 2);
+        gptStartContinuous(gptd, 25);
         while (!adc_is_read_finished);
         return buffer;
     }
@@ -77,7 +77,7 @@ namespace adc
         adc_operation_func = operation_func;
         adc_group_config.circular = true;
         adcStartConversion(adcd, &adc_group_config, buffer, count);
-        gptStartContinuous(gptd, 2);
+        gptStartContinuous(gptd, 25);
     }
 
     void read_set_operation_func(operation_t operation_func)
@@ -113,7 +113,7 @@ namespace adc
             val = ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_24P5);
             break;
         case rate::R47P5:
-            val = ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_47P5);////
+            val = ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_47P5);
             break;
         case rate::R92P5:
             val = ADC_SMPR1_SMP_AN5(ADC_SMPR_SMP_92P5);
index e0f62a5525adf3db71e4d32f328d887795869cd2..74b69e3e7aedf98f241df29230b5dc03d5af90f0 100644 (file)
@@ -28,7 +28,7 @@ constexpr static const DACConversionGroup dac_group_config = {
 };
 
 constexpr static const GPTConfig gpt_config = {
-  .frequency = 440000,
+  .frequency = 2400000,
   .callback = nullptr,
   .cr2 = TIM_CR2_MMS_1, /* TRGO */
   .dier = 0
@@ -48,7 +48,7 @@ namespace dac
     void write_start(dacsample_t *buffer, size_t count)
     {
         dacStartConversion(dacd, &dac_group_config, buffer, count);
-        gptStartContinuous(gptd, 5);
+        gptStartContinuous(gptd, 25);
     }
     
     void write_stop()
index 9dcd72f3c9c1c6036f0bb98d0a3083520eb2f05a..1e3c5fb1c0e530593e76bb1d852a34b0689d732f 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <array>
 
-constexpr unsigned int MAX_SAMPLE_BUFFER_SIZE = 8000;//2048;
+constexpr unsigned int MAX_SAMPLE_BUFFER_SIZE = 8000;
 
 enum class RunStatus : char
 {
@@ -240,25 +240,25 @@ THD_FUNCTION(conversionThread, arg)
                 std::copy(samples, samples + halfsize, &dac_samples[0]);
             } else if (message == MSG_CONVSECOND) {
                 if (elf_entry)
-                    samples = elf_entry(&adc_samples[adc_samples.size() / 2], halfsize);
+                    samples = elf_entry(&adc_samples[halfsize], halfsize);
                 if (!samples)
-                    samples = &adc_samples[adc_samples.size() / 2];
+                    samples = &adc_samples[halfsize];
                 std::copy(samples, samples + halfsize, &dac_samples[dac_samples.size() / 2]);
             } else if (message == MSG_CONVFIRST_MEASURE) {
                 chTMStartMeasurementX(&conversion_time_measurement);
                 if (elf_entry)
-                    samples = elf_entry(&adc_samples[adc_samples.size() / 2], halfsize);
+                    samples = elf_entry(&adc_samples[0], halfsize);
                 chTMStopMeasurementX(&conversion_time_measurement);
                 if (!samples)
-                    samples = &adc_samples[adc_samples.size() / 2];
-                std::copy(samples, samples + halfsize, &dac_samples[dac_samples.size() / 2]);
+                    samples = &adc_samples[0];
+                std::copy(samples, samples + halfsize, &dac_samples[0]);
             } else if (message == MSG_CONVSECOND_MEASURE) {
                 chTMStartMeasurementX(&conversion_time_measurement);
                 if (elf_entry)
-                    samples = elf_entry(&adc_samples[adc_samples.size() / 2], halfsize);
+                    samples = elf_entry(&adc_samples[halfsize], halfsize);
                 chTMStopMeasurementX(&conversion_time_measurement);
                 if (!samples)
-                    samples = &adc_samples[adc_samples.size() / 2];
+                    samples = &adc_samples[halfsize];
                 std::copy(samples, samples + halfsize, &dac_samples[dac_samples.size() / 2]);
             }
         }