RDA5807 функция мягкого отключения звука

Обсуждаем приемники, передатчики, радиомикрофоны, жучки, генераторы, ВЧ-усилители, антенны и прочее радиохозяйство
Ответить
Родился
Сообщения: 14
Зарегистрирован: Ср сен 21, 2022 19:20:41

Сообщение coder1448 »

Используя библиотеку RDA5807, я хочу использовать функцию softmute, чтобы предотвратить шум от пустых частот в fm-радио.Проект, который я сделал с arduino, занимает много места.

Я просто хочу использовать для этого функцию частоты, звука и soft mute.Мы нашли самую легкую библиотеку для этого, но они не добавили функцию softmute в эту библиотеку.

Можем ли мы добавить эту функцию?

мне нужны операции с такими не многими функциями, чтобы библиотека была очень легкой
Вложения
RDA5807M.zip
Библиотека, которую я хочу использовать, доступна в этом файле, если вы добавите нужную мне функцию, я был бы очень рад
(6.01 КБ) 66 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6647
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Я бы понял, если бы вы хотели отключить функцию SoftMute. А включать то, что в RDA5807 вообще никак не отключается, оно как-то странно...
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Родился
Сообщения: 14
Зарегистрирован: Ср сен 21, 2022 19:20:41

Сообщение coder1448 »

Я хочу добавить функцию мягкого отключения звука в отправленную мной библиотеку, как мне это сделать?
Друг Кота
Аватара пользователя
Сообщения: 6647
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Ее не нужно никуда добавлять, софтмют в RDA5807 включен по умолчанию и никак не отключается. Эту мерзость мешающую нормальной работе чипа пытались отключить разными способами, множество людей искали какие биты в каких регистрах за это отвечают, но ничего не нашли.
Астролябия-сама меряет, было бы что мерять!!!
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 19495
Зарегистрирован: Чт фев 20, 2014 18:57:55

Сообщение Morroc »

А вдруг нашли и отключили ? )
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Реклама
Мудрый кот
Сообщения: 1712
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

Там выход один-выключаем звук,перестраиваемся по частоте,если есть станция (FM TRUE=1)-включаем звук
Все программно,софтмуте там нет
Реклама
Друг Кота
Аватара пользователя
Сообщения: 6647
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение Asmodey »

Он там есть, но срабатывает только при настройке, после каждого шага по частоте.
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1712
Зарегистрирован: Вт янв 05, 2016 10:14:25
Откуда: поселок Мелеуз

Сообщение Novice user »

Странно,сколько приемников собирал нигде не было выключения звука при отсутствии станции...

Добавлено after 3 minutes 11 seconds:
Нашел вроде,бит 9 регистра 04H,никогда его не замечал...
Спасибо,сейчас попробую в железе
Родился
Сообщения: 14
Зарегистрирован: Ср сен 21, 2022 19:20:41

Сообщение coder1448 »

void RDA5807::setSoftmute(bool value)
{
reg04->refined.SOFTMUTE_EN = value;
setRegister(REG04, reg04->raw);
}
Друг Кота
Аватара пользователя
Сообщения: 6647
Зарегистрирован: Сб янв 28, 2006 22:47:24

Сообщение 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, но так и не нашли ничего.
Астролябия-сама меряет, было бы что мерять!!!
Мудрый кот
Сообщения: 1712
Зарегистрирован: Вт янв 05, 2016 10:14: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();     // передача данных 
}


Этот код выложен на ардуино.ру,все рабочее,софтмуте можно добавить так же
Ответить

Вернуться в «Радиотехника: приемники, передатчики, антенны»