diff --git a/platform/drivers/ADC/ADC1_MDx.c b/platform/drivers/ADC/ADC1_MDx.c index a0bab820..dc82492b 100644 --- a/platform/drivers/ADC/ADC1_MDx.c +++ b/platform/drivers/ADC/ADC1_MDx.c @@ -24,7 +24,7 @@ /* * The sample buffer is structured as follows: * - * | vbat | rssi | vox | vol | + * | vbat | vol | rssi | vox | * * NOTE: we are forced to allocate it through a malloc in order to make it be * in the "large" 128kB RAM. This because the linker script maps the .data and @@ -48,8 +48,8 @@ void adc1_init() * - PB0: RSSI level */ gpio_setMode(AIN_VBAT, INPUT_ANALOG); - #if defined(PLATFORM_MD3x0) gpio_setMode(AIN_VOLUME, INPUT_ANALOG); + #if defined(PLATFORM_MD3x0) gpio_setMode(AIN_MIC, INPUT_ANALOG); gpio_setMode(AIN_RSSI, INPUT_ANALOG); #endif @@ -85,8 +85,9 @@ void adc1_init() | (3 << 10) /* CH3, vox level on PA3 */ | (0 << 15); /* CH0, volume potentiometer level on PA0 */ #else - ADC1->SQR1 = 0; /* Convert one channel */ - ADC1->SQR3 |= (1 << 0); /* CH1, battery voltage on PA1 */ + ADC1->SQR1 = 1 << 20; /* Convert two channel */ + ADC1->SQR3 |= (1 << 0) /* CH1, battery voltage on PA1 */ + | (0 << 15); /* CH0, volume potentiometer level on PA0 */ #endif /* DMA2 Stream 0 configuration: diff --git a/platform/drivers/ADC/ADC1_MDx.h b/platform/drivers/ADC/ADC1_MDx.h index 017d2182..a4a49629 100644 --- a/platform/drivers/ADC/ADC1_MDx.h +++ b/platform/drivers/ADC/ADC1_MDx.h @@ -49,9 +49,9 @@ void adc1_terminate(); /** * Get current measurement of a given channel, mapped as below: * - channel 0: battery voltage - * - channel 1: RSSI level - * - channel 2: vox level - * - channel 3: volume level + * - channel 1: volume level + * - channel 2: RSSI level + * - channel 3: vox level * * NOTE: the mapping above DOES NOT correspond to the physical ADC channel * mapping! diff --git a/platform/drivers/baseband/radio_MD3x0.c b/platform/drivers/baseband/radio_MD3x0.c index 9870f9a6..6739d5e0 100644 --- a/platform/drivers/baseband/radio_MD3x0.c +++ b/platform/drivers/baseband/radio_MD3x0.c @@ -290,7 +290,7 @@ float radio_getRssi(const freq_t rxFreq) if(rxFreq < 401035000) offset_index = 0; if(rxFreq > 479995000) offset_index = 8; - float rssi_mv = adc1_getMeasurement(1); + float rssi_mv = adc1_getMeasurement(2); float rssi_dbm = (rssi_mv - rssi_offset[offset_index]) / rssi_gain; return rssi_dbm; } diff --git a/platform/targets/MD-UV380/hwconfig.h b/platform/targets/MD-UV380/hwconfig.h index b3425860..fb1eef18 100644 --- a/platform/targets/MD-UV380/hwconfig.h +++ b/platform/targets/MD-UV380/hwconfig.h @@ -72,6 +72,7 @@ #define RED_LED GPIOE,1 /* Analog inputs */ +#define AIN_VOLUME GPIOA,0 #define AIN_VBAT GPIOA,1 /* Channel selection rotary encoder */ diff --git a/platform/targets/MD-UV380/platform.c b/platform/targets/MD-UV380/platform.c index 0dd7aa3f..9cbd7d3b 100644 --- a/platform/targets/MD-UV380/platform.c +++ b/platform/targets/MD-UV380/platform.c @@ -147,7 +147,7 @@ float platform_getMicLevel() float platform_getVolumeLevel() { - return 0.0f; + return adc1_getMeasurement(1); } uint8_t platform_getChSelector()