Страница 1 из 1
RDA5807 функция мягкого отключения звука
Добавлено: Вс янв 15, 2023 23:41:50
coder1448
Используя библиотеку RDA5807, я хочу использовать функцию softmute, чтобы предотвратить шум от пустых частот в fm-радио.Проект, который я сделал с arduino, занимает много места.
Я просто хочу использовать для этого функцию частоты, звука и soft mute.Мы нашли самую легкую библиотеку для этого, но они не добавили функцию softmute в эту библиотеку.
Можем ли мы добавить эту функцию?
мне нужны операции с такими не многими функциями, чтобы библиотека была очень легкой
Re: RDA5807 функция мягкого отключения звука
Добавлено: Вт янв 17, 2023 22:02:38
Asmodey
Я бы понял, если бы вы хотели отключить функцию SoftMute. А включать то, что в RDA5807 вообще никак не отключается, оно как-то странно...
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 16:38:15
coder1448
Я хочу добавить функцию мягкого отключения звука в отправленную мной библиотеку, как мне это сделать?
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 17:18:40
Asmodey
Ее не нужно никуда добавлять, софтмют в RDA5807 включен по умолчанию и никак не отключается. Эту мерзость мешающую нормальной работе чипа пытались отключить разными способами, множество людей искали какие биты в каких регистрах за это отвечают, но ничего не нашли.
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 17:54:12
Morroc
А вдруг нашли и отключили ? )
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 19:39:58
Novice user
Там выход один-выключаем звук,перестраиваемся по частоте,если есть станция (FM TRUE=1)-включаем звук
Все программно,софтмуте там нет
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 21:10:50
Asmodey
Он там есть, но срабатывает только при настройке, после каждого шага по частоте.
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 21:18:33
Novice user
Странно,сколько приемников собирал нигде не было выключения звука при отсутствии станции...
Добавлено after 3 minutes 11 seconds:
Нашел вроде,бит 9 регистра 04H,никогда его не замечал...
Спасибо,сейчас попробую в железе
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 21:23:16
coder1448
void RDA5807::setSoftmute(bool value)
{
reg04->refined.SOFTMUTE_EN = value;
setRegister(REG04, reg04->raw);
}
Re: RDA5807 функция мягкого отключения звука
Добавлено: Ср янв 18, 2023 22:27:15
Asmodey
[uquote="Novice user",url="/forum/viewtopic.php?p=4356695#p4356695"]Нашел вроде,бит 9 регистра 04H,никогда его не замечал...[/uquote]
Сейчас уже точно не помню, но от него вроде ничего не зависит.
[uquote="Novice user",url="/forum/viewtopic.php?p=4356695#p4356695"]Странно,сколько приемников собирал нигде не было выключения звука при отсутствии станции...[/uquote]Есть затыкание приемника на треть секунды после каждого шага по частоте. Обычно это обусловлено действием софтмюта (по аналогии с другими DSP чипами) и устраняется выключением софтмюта. Но в RDA5807 установка и сброс бита SoftMute ни на что не влияет, затык как был, так и остается. На форуме уже много раз это обсуждали, искали способы отключить SoftMute, но так и не нашли ничего.
Re: RDA5807 функция мягкого отключения звука
Добавлено: Чт янв 19, 2023 07:35:25
Novice user
Так это при переключении частоты боролись чтоб звук не приглушался,а меня интересует при отсутствии станции чтоб не шипел,думаю автор тоже об этом
Добавлено after 46 seconds:
[uquote="coder1448",url="/forum/viewtopic.php?p=4355051#p4355051"]я хочу использовать функцию softmute, чтобы предотвратить шум от пустых частот в fm-радио[/uquote]
Добавлено after 3 minutes 46 seconds:
Я пробовал без использования библиотеки ERDA5807 в ардуино (чисто спортивный интерес),работало,пример моего кода
Спойлер
Код: Выделить всё
#include <Wire.h>
#define Pin_DOWN 12//4 // левая кнопка
#define Pin_UP 13//2 // правая кнопка
#define Pin_SET 11//3 // центральная кнопка
const byte channel=5;
byte Byte0;
byte val = 0;
byte volume = 4;
int freq=1011;
void setup()
{
pinMode(Pin_DOWN,INPUT_PULLUP);
pinMode(Pin_UP,INPUT_PULLUP);
pinMode(Pin_SET,INPUT_PULLUP);
Wire.begin(); // подключение к шине i2c
delay(500);
Inicial();
}
void loop()
{
boolean SET=digitalRead(Pin_SET);
boolean UP=digitalRead(Pin_UP);
boolean DOWN=digitalRead(Pin_DOWN);
if(DOWN==LOW)
{
volume=volume+1; set_vol();delay(500);
//freq=freq+1; set_freq();delay(500);//работает норм
}
if(SET==LOW)
{
volume=volume-1; set_vol();delay(500);
//freq=freq-1;set_freq();delay(500); //работает норм
}
if(UP==LOW)
{
stby();//выключаем радио ,потребление почти 0
delay(1500);//ждем 1,5 сек и вкл
set_freq(); // вкл радио
}
}
void Inicial()
{
Wire.beginTransmission(0x10); // передача для устройства
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B11010000); // отправка байта
Wire.write(0B10000001);
//03
Byte0 = freq - 870;
Wire.write(Byte0);
Byte0=0B00010011;
Wire.write(Byte0);
//04
Wire.write(0B00010000);
Wire.write(0B00000000);
//05
Wire.write(0B10001000);
Byte0=0B10000000 + volume;
Wire.write(Byte0);
Wire.endTransmission(); // передача данных
}
void set_freq()//установка частоты
{
if (freq > 1080) freq = 870;
if (freq < 880) freq = 1080;
Wire.beginTransmission(0x10); // передача для устройства
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B11010000); // отправка байта
Wire.write(0B10000001);
//03
Byte0 = freq - 870;
Wire.write(Byte0);//частота,старшие 8 бит
Byte0=0B00010011;//7,6-мл биты частоты=всегда 00 так как шаг=25, 4-точная установка,3,2-диапазон=87-108,1,0-шаг 25 кгц
Wire.write(Byte0);
Wire.endTransmission(); // передача данных
}
void set_vol()//установка громкости
{
if (volume > 200) volume = 0;
if (volume >15) volume = 15;
Wire.beginTransmission(0x11); // передача для устройства
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B00000101); // отправка байта val
//05
Wire.write(0B10001000);
Byte0=0B10000000 + volume;
Wire.write(Byte0);
Wire.endTransmission(); // передача данных
}
void stby()
{
Wire.beginTransmission(0x10); // выкл радио
//02 // адрес устройства указывается в документации (datasheet)
Wire.write(0B11010000); // отправка байта val
Wire.write(0B10000000);
Wire.endTransmission(); // передача данных
}
Этот код выложен на ардуино.ру,все рабочее,софтмуте можно добавить так же