From c3937c3b10b11233b8d63868464d87b773194873 Mon Sep 17 00:00:00 2001 From: "Ben V. Brown" Date: Sun, 2 Jun 2024 16:04:55 +1000 Subject: [PATCH] ADC cleanup --- .../bl702_driver/std_drv/src/bl702_adc.c | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/source/Core/BSP/Pinecilv2/bl_mcu_sdk/drivers/bl702_driver/std_drv/src/bl702_adc.c b/source/Core/BSP/Pinecilv2/bl_mcu_sdk/drivers/bl702_driver/std_drv/src/bl702_adc.c index 304a3ca5..9f239157 100644 --- a/source/Core/BSP/Pinecilv2/bl_mcu_sdk/drivers/bl702_driver/std_drv/src/bl702_adc.c +++ b/source/Core/BSP/Pinecilv2/bl_mcu_sdk/drivers/bl702_driver/std_drv/src/bl702_adc.c @@ -527,44 +527,48 @@ void ADC_Parse_Result(uint32_t *orgVal, uint32_t len, ADC_Result_Type *result) { for (i = 0; i < len; i++) { result[i].posChan = orgVal[i] >> 21; result[i].negChan = -1; - + uint32_t sample; if (dataType == ADC_DATA_WIDTH_12) { - result[i].value = (unsigned int)(((orgVal[i] & 0xffff) >> 4) / coe); + sample = ((orgVal[i] & 0xffff) >> 4); } else if ((dataType == ADC_DATA_WIDTH_14_WITH_16_AVERAGE) || (dataType == ADC_DATA_WIDTH_14_WITH_64_AVERAGE)) { - result[i].value = (unsigned int)(((orgVal[i] & 0xffff) >> 2) / coe); + sample = ((orgVal[i] & 0xffff) >> 2); } else if ((dataType == ADC_DATA_WIDTH_16_WITH_128_AVERAGE) || (dataType == ADC_DATA_WIDTH_16_WITH_256_AVERAGE)) { - result[i].value = (unsigned int)((orgVal[i] & 0xffff) / coe); - } - // Saturate at 16 bits - if (result[i].value > 0xFFFF) { - result[i].value = 0xFFFF; - } - } - } else { - for (i = 0; i < len; i++) { - neg = 0; - result[i].posChan = orgVal[i] >> 21; - result[i].negChan = (orgVal[i] >> 16) & 0x1F; - - if (orgVal[i] & 0x8000) { - orgVal[i] = ~orgVal[i]; - orgVal[i] += 1; - neg = 1; + sample = (orgVal[i] & 0xffff); } - if (dataType == ADC_DATA_WIDTH_12) { - result[i].value = (unsigned int)(((orgVal[i] & 0xffff) >> 4) / coe); - } else if ((dataType == ADC_DATA_WIDTH_14_WITH_16_AVERAGE) || (dataType == ADC_DATA_WIDTH_14_WITH_64_AVERAGE)) { - result[i].value = (unsigned int)(((orgVal[i] & 0xffff) >> 2) / coe); - } else if ((dataType == ADC_DATA_WIDTH_16_WITH_128_AVERAGE) || (dataType == ADC_DATA_WIDTH_16_WITH_256_AVERAGE)) { - result[i].value = (unsigned int)((orgVal[i] & 0xffff) / coe); - } + result[i].value = (unsigned int)(sample / coe); + // Saturate at 16 bits if (result[i].value > 0xFFFF) { result[i].value = 0xFFFF; } } } + // else { + // for (i = 0; i < len; i++) { + // neg = 0; + // result[i].posChan = orgVal[i] >> 21; + // result[i].negChan = (orgVal[i] >> 16) & 0x1F; + + // if (orgVal[i] & 0x8000) { + // orgVal[i] = ~orgVal[i]; + // orgVal[i] += 1; + // neg = 1; + // } + + // if (dataType == ADC_DATA_WIDTH_12) { + // result[i].value = (unsigned int)(((orgVal[i] & 0xffff) >> 4) / coe); + // } else if ((dataType == ADC_DATA_WIDTH_14_WITH_16_AVERAGE) || (dataType == ADC_DATA_WIDTH_14_WITH_64_AVERAGE)) { + // result[i].value = (unsigned int)(((orgVal[i] & 0xffff) >> 2) / coe); + // } else if ((dataType == ADC_DATA_WIDTH_16_WITH_128_AVERAGE) || (dataType == ADC_DATA_WIDTH_16_WITH_256_AVERAGE)) { + // result[i].value = (unsigned int)((orgVal[i] & 0xffff) / coe); + // } + // // Saturate at 16 bits + // if (result[i].value > 0xFFFF) { + // result[i].value = 0xFFFF; + // } + // } + // } } /****************************************************************************/