* @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
#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
#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
#include <cstdint>
using adcsample_t = uint16_t;
+constexpr unsigned int SIZE = 4000;
adcsample_t *process_data(adcsample_t *samples, unsigned int size);
};
constexpr static const GPTConfig gpt_config = {
- .frequency = 8000000,
+ .frequency = 2400000,
.callback = nullptr,
.cr2 = TIM_CR2_MMS_1, /* TRGO */
.dier = 0
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;
}
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)
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);
};
constexpr static const GPTConfig gpt_config = {
- .frequency = 440000,
+ .frequency = 2400000,
.callback = nullptr,
.cr2 = TIM_CR2_MMS_1, /* TRGO */
.dier = 0
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()
#include <array>
-constexpr unsigned int MAX_SAMPLE_BUFFER_SIZE = 8000;//2048;
+constexpr unsigned int MAX_SAMPLE_BUFFER_SIZE = 8000;
enum class RunStatus : char
{
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]);
}
}