From a8b4fae755b692eebc5506fc2ae58dc754ada792 Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Thu, 29 Oct 2020 19:43:02 +0200 Subject: [PATCH] Initialize CRC for PDM2PCM library. --- src/omv/py/py_audio.c | 13 +++++++++++++ src/omv/stm32fxxx_hal_msp.c | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/omv/py/py_audio.c b/src/omv/py/py_audio.c index 7534d3316..ac7c22196 100644 --- a/src/omv/py/py_audio.c +++ b/src/omv/py/py_audio.c @@ -23,6 +23,7 @@ #define RAISE_OS_EXCEPTION(msg) nlr_raise(mp_obj_new_exception_msg(&mp_type_OSError, msg)) #define SAI_MIN(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; }) +static CRC_HandleTypeDef hcrc; static SAI_HandleTypeDef hsai; static DMA_HandleTypeDef hdma_sai_rx; @@ -131,6 +132,18 @@ static mp_obj_t py_audio_init() NVIC_SetPriority(AUDIO_SAI_DMA_IRQ, IRQ_PRI_DMA21); HAL_NVIC_EnableIRQ(AUDIO_SAI_DMA_IRQ); + // Init CRC for the PDM library + hcrc.Instance = CRC; + hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE; + hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE; + hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; + hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; + hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES; + if (HAL_CRC_Init(&hcrc) != HAL_OK) { + RAISE_OS_EXCEPTION("Failed to initialize CRC!"); + } + __HAL_CRC_DR_RESET(&hcrc); + return mp_const_none; } diff --git a/src/omv/stm32fxxx_hal_msp.c b/src/omv/stm32fxxx_hal_msp.c index 92cbb2c57..63c136306 100644 --- a/src/omv/stm32fxxx_hal_msp.c +++ b/src/omv/stm32fxxx_hal_msp.c @@ -337,6 +337,17 @@ void HAL_SAI_MspDeInit(SAI_HandleTypeDef* hsai) } #endif +void HAL_CRC_MspInit(CRC_HandleTypeDef* hcrc) +{ + __HAL_RCC_CRC_CLK_ENABLE(); +} + + +void HAL_CRC_MspDeInit(CRC_HandleTypeDef* hcrc) +{ + __HAL_RCC_CRC_CLK_DISABLE(); +} + void HAL_MspDeInit(void) {