From d000890eafbc6cc715fa6e7da2db61db05a6f3e4 Mon Sep 17 00:00:00 2001 From: ozpv <39195175+ozpv@users.noreply.github.com> Date: Sat, 22 Aug 2026 19:53:06 -0500 Subject: update ring mod --- Core/Src/cs4272.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'Core/Src/cs4272.c') diff --git a/Core/Src/cs4272.c b/Core/Src/cs4272.c index 81179c7..9a7f0d1 100755 --- a/Core/Src/cs4272.c +++ b/Core/Src/cs4272.c @@ -9,6 +9,14 @@ #include "cs4272.h" #include "ringmod.h" +const struct RingModParams params = { + 0.40f, + 156.0f, + 6.90f, + 0.18f, + true, +}; + volatile int32_t rx_buffer[BUFFER_SIZE] __attribute__((section(".audio_buffers"))); volatile int32_t tx_buffer[BUFFER_SIZE] __attribute__((section(".audio_buffers"))); volatile float samples[BUFFER_SIZE] __attribute__((section(".sdram"))); @@ -50,13 +58,13 @@ const uint8_t CS4272_CONFIG[7] = { 0b00000010, }; -void int32_t_to_float(int32_t *in, float *out, size_t range_min, size_t range_max) { +inline void int32_t_to_float(int32_t *in, float *out, const size_t range_min, const size_t range_max) { for (size_t i = range_min; i < range_max; ++i) { out[i] = ((float)(in[i] << 8)) / ((float)INT32_MAX); } } -void float_to_int32_t(float *in, int32_t *out, size_t range_min, size_t range_max) { +inline void float_to_int32_t(float *in, int32_t *out, const size_t range_min, const size_t range_max) { for (size_t i = range_min; i < range_max; ++i) { out[i] = ((int32_t)(in[i] * ((float)INT32_MAX))) >> 8; } @@ -65,7 +73,7 @@ void float_to_int32_t(float *in, int32_t *out, size_t range_min, size_t range_ma void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai) { int32_t_to_float((int32_t *)rx_buffer, (float *)samples, 0, BUFFER_SIZE / 2); - ringmod((float *)samples, 0, BUFFER_SIZE / 2); + ringmod((float *)samples, 0, BUFFER_SIZE / 2, ¶ms); float_to_int32_t((float *)samples, (int32_t *)tx_buffer, 0, BUFFER_SIZE / 2); } @@ -73,20 +81,18 @@ void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai) { void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai) { int32_t_to_float((int32_t *)rx_buffer, (float *)samples, BUFFER_SIZE / 2, BUFFER_SIZE); - ringmod((float *)samples, BUFFER_SIZE / 2, BUFFER_SIZE); + ringmod((float *)samples, BUFFER_SIZE / 2, BUFFER_SIZE, ¶ms); float_to_int32_t((float *)samples, (int32_t *)tx_buffer, BUFFER_SIZE / 2, BUFFER_SIZE); } -HAL_StatusTypeDef CS4272_ReadRegister(uint8_t addr, uint8_t *data) { - return HAL_I2C_Mem_Read(&hi2c4, CS4272_I2C_ADDR, addr, I2C_MEMADD_SIZE_8BIT, - data, 1, HAL_MAX_DELAY); +HAL_StatusTypeDef CS4272_ReadRegister(const uint8_t addr, uint8_t *data) { + return HAL_I2C_Mem_Read(&hi2c4, CS4272_I2C_ADDR, addr, I2C_MEMADD_SIZE_8BIT, data, 1, HAL_MAX_DELAY); } -HAL_StatusTypeDef CS4272_WriteRegister(uint8_t addr, uint8_t data) { - return HAL_I2C_Mem_Write(&hi2c4, CS4272_I2C_ADDR, addr, - I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY); +HAL_StatusTypeDef CS4272_WriteRegister(const uint8_t addr, uint8_t data) { + return HAL_I2C_Mem_Write(&hi2c4, CS4272_I2C_ADDR, addr, I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY); } void CS4272_Reset(void) { -- cgit v1.2.3