chore(radio): remove 20% deadband for low volume (#7347)
This commit is contained in:
@@ -26,7 +26,6 @@
|
||||
#include "stm32_i2c_driver.h"
|
||||
|
||||
#include "stm32_hal_ll.h"
|
||||
#include "timers_driver.h"
|
||||
|
||||
#include "audio.h"
|
||||
#include "debug.h"
|
||||
@@ -176,7 +175,7 @@ void audioSetVolume(uint8_t volume)
|
||||
if (btAudioLinked())
|
||||
volume = volume + (volume >> 2);
|
||||
#endif
|
||||
tas2505_set_volume(&_tas2505, volume * 9 / 10, audioHeadphoneDetect()); // TX15 HP cannot handle the full power of TAS2505
|
||||
tas2505_set_volume(&_tas2505, volume, audioHeadphoneDetect());
|
||||
}
|
||||
|
||||
extern "C" void DMA1_Stream4_IRQHandler(void)
|
||||
|
||||
@@ -131,10 +131,11 @@ int tas2505_init(tas2505_t* dev)
|
||||
// adjust this value for a volume level just above the silence
|
||||
// values is attenuation in dB, higher value - less volume
|
||||
// max value is 126
|
||||
#define VOLUME_MIN_DB 60
|
||||
#define VOLUME_MIN_DB 45
|
||||
|
||||
void tas2505_set_volume(tas2505_t* dev, uint8_t volume, bool headphone_mode = false)
|
||||
{
|
||||
TRACE("Set volume: %d, headphone_mode: %d", volume, headphone_mode);
|
||||
if (volume > VOLUME_LEVEL_MAX) {
|
||||
volume = VOLUME_LEVEL_MAX;
|
||||
}
|
||||
|
||||
+10
-9
@@ -614,19 +614,20 @@ void calcBacklightValue(int16_t source)
|
||||
#endif
|
||||
}
|
||||
|
||||
#define VOLUME_HYSTERESIS 10 // how much must a input value change to actually be considered for new volume setting
|
||||
getvalue_t requiredSpeakerVolumeRawLast = 1024 + 1; //initial value must be outside normal range
|
||||
#define VOLUME_SOURCE_DEADZONE 10 // how much must a input value change to actually be considered for new volume setting
|
||||
|
||||
void calcVolumeValue(int16_t source)
|
||||
{
|
||||
getvalue_t raw = getValue(source);
|
||||
// only set volume if input changed more than hysteresis
|
||||
if (abs(requiredSpeakerVolumeRawLast - raw) > VOLUME_HYSTERESIS) {
|
||||
requiredSpeakerVolumeRawLast = raw;
|
||||
int32_t shifted = 1024 + getValue(source);
|
||||
int32_t v;
|
||||
if (shifted < VOLUME_SOURCE_DEADZONE) {
|
||||
v = 0;
|
||||
} else {
|
||||
v = 1 + ((shifted - VOLUME_SOURCE_DEADZONE) * (VOLUME_LEVEL_MAX - 1)) /
|
||||
(2048 - VOLUME_SOURCE_DEADZONE);
|
||||
if (v > VOLUME_LEVEL_MAX) v = VOLUME_LEVEL_MAX;
|
||||
}
|
||||
requiredSpeakerVolume =
|
||||
((1024 + requiredSpeakerVolumeRawLast) * VOLUME_LEVEL_MAX) /
|
||||
2048;
|
||||
requiredSpeakerVolume = (int16_t)v;
|
||||
}
|
||||
|
||||
void checkBacklight()
|
||||
|
||||
@@ -24,8 +24,13 @@
|
||||
#include <stdint.h>
|
||||
|
||||
// Audio volume is defined between 0 and VOLUME_LEVEL_MAX.
|
||||
// Targets that need a different range can define it in their board/hal header.
|
||||
#ifndef VOLUME_LEVEL_MAX
|
||||
#define VOLUME_LEVEL_MAX 23
|
||||
#endif
|
||||
#ifndef VOLUME_LEVEL_DEF
|
||||
#define VOLUME_LEVEL_DEF 12
|
||||
#endif
|
||||
|
||||
#define AUDIO_SAMPLE_RATE 32000
|
||||
|
||||
|
||||
@@ -197,11 +197,13 @@ SAI1_Block_A: PDM_CLOCK (1 MHz bit-clock output on SAI1_CK1 / PE5, !FLYSKY_GIMBA
|
||||
#define AUDIO_SPI SPI2
|
||||
#define AUDIO_RESET_PIN GPIO_PIN(GPIOH, 10)
|
||||
#define AUDIO_HP_DETECT_PIN GPIO_PIN(GPIOA, 5)
|
||||
#define I2S_DMA DMA1
|
||||
#define I2S_DMA_Stream LL_DMA_STREAM_4
|
||||
#define I2S_DMA_Stream_Request LL_DMAMUX1_REQ_SPI2_TX
|
||||
#define I2S_DMA_Stream_IRQn DMA1_Stream4_IRQn
|
||||
#define I2S_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler
|
||||
#undef VOLUME_LEVEL_MAX
|
||||
#define VOLUME_LEVEL_MAX 20
|
||||
#define I2S_DMA DMA1
|
||||
#define I2S_DMA_Stream LL_DMA_STREAM_4
|
||||
#define I2S_DMA_Stream_Request LL_DMAMUX1_REQ_SPI2_TX
|
||||
#define I2S_DMA_Stream_IRQn DMA1_Stream4_IRQn
|
||||
#define I2S_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler
|
||||
|
||||
// MEMS PDM microphone — not available when FLYSKY_GIMBAL is enabled
|
||||
#if !defined(FLYSKY_GIMBAL)
|
||||
|
||||
@@ -401,11 +401,13 @@ USART6: INTMODULE_USART
|
||||
#define AUDIO_SPI SPI2
|
||||
#define AUDIO_RESET_PIN GPIO_PIN(GPIOH, 10)
|
||||
#define AUDIO_HP_DETECT_PIN GPIO_PIN(GPIOH, 14)
|
||||
#define I2S_DMA DMA1
|
||||
#define I2S_DMA_Stream LL_DMA_STREAM_4
|
||||
#define I2S_DMA_Stream_Request LL_DMAMUX1_REQ_SPI2_TX
|
||||
#define I2S_DMA_Stream_IRQn DMA1_Stream4_IRQn
|
||||
#define I2S_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler
|
||||
#undef VOLUME_LEVEL_MAX
|
||||
#define VOLUME_LEVEL_MAX 20
|
||||
#define I2S_DMA DMA1
|
||||
#define I2S_DMA_Stream LL_DMA_STREAM_4
|
||||
#define I2S_DMA_Stream_Request LL_DMAMUX1_REQ_SPI2_TX
|
||||
#define I2S_DMA_Stream_IRQn DMA1_Stream4_IRQn
|
||||
#define I2S_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler
|
||||
|
||||
//MEMS — PDM microphone:
|
||||
// clock output driven by SAI1 block A on SAI1_CK1 / PE5 (AF6, 1 MHz)
|
||||
|
||||
Reference in New Issue
Block a user