Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Re: Расчет частоты приема для RDA5807M

Пн мар 28, 2016 21:35:20

У меня не приглушался, может вы имеете ввиду что становится примерно в половину тиши при низком уровне приема. Тогда здесь ничего не поделаешь так работает RDA.

Re: Расчет частоты приема для RDA5807M

Вт мар 29, 2016 07:44:56

Нет, именно в момент передачи новой пачки данных, звук приглушается.

на этом видео слышно https://youtu.be/32nVjKDLBME

Re: Расчет частоты приема для RDA5807M

Вт мар 29, 2016 08:00:25

на всякий случай проверьте бит SOFTMUTE_EN

Re: Расчет частоты приема для RDA5807M

Вт мар 29, 2016 13:07:54

Код:
  reg[REG_00]=0b11100010;
  reg[REG_01]=0b10000101;
  reg[REG_02]=0b00000000;
  reg[REG_03]=0b00010000;
  reg[REG_04]=0b000010_0_1;
  reg[REG_05]=0b00000000;
  reg[REG_06]=0b00001000;
  reg[REG_07]=0b10000111;
  reg[REG_08]=0b00000000;
  reg[REG_09]=0b00000000;
  reg[REG_10]=0b00000000;
  reg[REG_11]=0b00001100;


Если я все правильно понял, бит SOFTMUTE_EN выделен подчеркиваниями. Пробовал его ставить и в "1", и в "0" - результат одинаков. Видимо это свойство самого чипа.

Re: Расчет частоты приема для RDA5807M

Вт мар 29, 2016 19:11:37

Да скорее всего так нет генерации при перестройки соответственно нет звука, Попробовал тоже сегодня ради спортивного интереса, выходит все таки затухание громкости при снижении уровня сигнала можно убрать, сбросив этот бит.

Re: Расчет частоты приема для RDA5807M

Ср июн 29, 2016 19:52:11

есть ли вариант приемника на атмега8?жки-хоть семисегментный(оа либо ок),хоть WH1602,смотрел в сторону этого приемника http://radiokot.ru/circuit/digital/home/202/ но там ничего не понятно -схема одна,а прошивок более 20,начал читать форум и запутался совсем

Re: Расчет частоты приема для RDA5807M

Ср июн 29, 2016 19:58:37

вообще-то схем (разводок) две, плюс на каждую 4 варианта прошивки под разные типы индикаторов и способы управления ими. Берёте подходящую под железо прошивку и шьёте.

Re: Расчет частоты приема для RDA5807M

Ср июн 29, 2016 20:20:34

попробую собрать,спасибо

Re: Расчет частоты приема для RDA5807M

Вт июл 26, 2016 12:57:54

Спаял на макетке приёмник на модуле TEA5767 и Atmega32, добился работоспособности. Решил попробовать модуль RDA5807M, т.к. привлекла регулировка громкости. Посмотрел примеры (в том числе и в этой теме), переделал код, но не могу принять ни одну станцию, только шипение.
Так делаю расчёт частоты и инициализацию, громкость программно регулируется, значит связь есть.
Пишу в Codevision
Код:
unsigned int freqB;
unsigned int freq;
unsigned char wbyte1, wbyte2;



freq=1000;
freqB = freq - 870;
wbyte1  = (freqB >> 2);               
wbyte2 =  (freqB << 6);

i2c_start();
i2c_write(0b00100000); //адрес
i2c_write(0b11000000);                // 02h
i2c_write(0b00000101);                // 02L
i2c_write(wbyte1);                    //03H     
i2c_write(wbyte2|0b00010000);         // 03L
i2c_write(0b00000010);                // 04h
i2c_write(0x00);                      // 04l
i2c_write(0b10001000);                // 05h
i2c_write(0b10001111);                // 05l
i2c_write(0x00);                      // 06h
i2c_write(0x00);                      // 06l
i2c_write(0b01000000);                // 07h
i2c_write(0b00000010);                // 07l
i2c_stop();



Далее в бесконечном цикле с задержкой 1 сек изменяю freq++ (на 0.1 МГц) и записываю новое значение частоты в адрес 03
Код:
freqB = freq - 870;
wbyte1  = (freqB >> 2);               
wbyte2 =  (freqB << 6);
 
i2c_start();
i2c_write(0b00100010); //адрес
i2c_write(0x03);               
i2c_write(wbyte1);                //03H     
i2c_write(wbyte2|0b00010000);   // 03L
i2c_stop();


Всё-таки не пойму почему нужно сбрасывать бит TUNE, т.к. в даташите написано The tune bit is reset to low automatically when
the tune operation completes..

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

В чём может быть проблема?

Re: Расчет частоты приема для RDA5807M

Вт июл 26, 2016 13:38:22

Dj_Alex писал(а):не пойму почему нужно сбрасывать бит TUNE, т.к. в даташите написано The tune bit is reset to low automatically when
the tune operation completes..
В даташите не написано, что его нужно сбрасывать. Написано, что он сбрасывается сам после настройки.
По коду в целом всё вроде правильно, но не совсем понятно, зачем вводить тюнер в interrupt mode (0b10001000 в 05H).

В любом случае, взял свой работающий код и заменил функцию инициализации и установки частоты на то, что написали Вы:

Разница лишь в названиях функций I²C и том, что у меня частота хранится в глобальной структуре tuner.freq. Хранится в виде 9950 для 99.5MHz, отсюда и деление на 10.

Итог - код работает, тюнер настраивается нормально.

Поэтому должно работать и у Вас.

По поводу нарастающей громкости - это фича RDA5807 (неотключаемая, судя по всему), которая при каждой перестройке (TUNE) приглушает на доли секунды звук.

ЕМНИП, у меня когда-то была такая микросхема, которая тоже только шипела и не работала.

Кстати, RDA5807 должна полностью работать с кодом для TEA5767. Если у Вас работало там, то при замене модуля c TEA5767 на модуль с RDA5807 всё должно продолжать работать. Если и так не работает - то точно неисправная RDA-шка.

Re: Расчет частоты приема для RDA5807M

Вт июл 26, 2016 20:03:47

WiseLord, спасибо за ответ.
Попробовал второй имеющийся модуль, однако снова шипение. Пробовал и код для TEA, но ничего не меняется. Грешил поначалу на кварц, т.к. его замыкание не меняет звук, но осциллограф показал генерацию на нём. Видно придется возвращаться на TEA5767, хотя хотелось реализовать кнопочное управление громкостью. :cry:

PS А действительно у RDA низкая чувствительность по сравнению с TEA или как повезёт?

PPS похоже модули RDA надо заказывать десятками, т.к. очень высок процент брака, я так и надеялся, что из 2 заработает хотя бы один, но процент брака выше.
из 10 модулей работают 4, остальные просто шипят
из тех 4 работающих у одного битый один аудивыход (не играет совсем)

Re: Расчет частоты приема для RDA5807M

Вт июл 26, 2016 20:48:39

У всех модулей RDA5807M, с которыми я имел дело, чувствительность лучше, чем у аналогичных на TEA5767.
Dj_Alex писал(а):Пробовал и код для TEA, но ничего не меняется
Ну вот и ответ. Были бы модули исправны, работали бы точно так же, как и TEA5767 с тем же кодом.

Re: Расчет частоты приема для RDA5807M

Пн авг 08, 2016 17:12:04

есть ли у кого пример расшифровки рдс?поделитесь пожалуйста!

Re: Расчет частоты приема для RDA5807M

Пн авг 08, 2016 17:32:09

Если кому пригодится - Specification of the radio broadcast data system (RBDS).
rbds1998.pdf
(1.09 MiB) Скачиваний: 387
Если будете брать время из RDS - учтите, что у большинства станций часы не синхронизированы с реальным временем.
Так же, не все станции передают 0x0Ah в конце строки.

Re: Расчет частоты приема для RDA5807M

Пн авг 08, 2016 18:48:09

Novice user писал(а):есть ли у кого пример расшифровки рдс?поделитесь пожалуйста!

Вот моя реализация для RDA5807. Хотя, по большому счёту, не только для неё.

Со стороны драйвера тюнера - он вызывает функцию rdsSetBlocks, передавая указатель на массив из 8 байтов RDS данных (они же 4 16-битных слова в спецификации), при этом идёт расшифровка. Вот для RDA5807 эта часть.

Со стороны основного потока программы вызывается rdsGetText, возвращающая уже готовую для вывода строку.

Я всю спецификацию не реализовывал, расшифровываю только 8-символьный PS (номер программы), он же RDS group = 0. Хотя по спецификации станция должна передавать в этих полях фиксированную информацию (название станции), но у нас они обычно отходят от стандартов и часто туда выводят и другую информацию - рекламу, название песни. Мне достаточно.

В принципе, код несложно доработать и расшифровывать ещё и RDS text (RDS group = 2), там целых 64 символа могут передаваться по тому же принципу.

Ну и в RDS group = 4 можно и время получать, если его передают.

В выложенной Albert_V pdf-ке вся информация о том, как закодированы разные группы, есть.

Re: Расчет частоты приема для RDA5807M

Пн авг 08, 2016 19:23:32

спасибо,буду рыться

Re: Расчет частоты приема для RDA5807M

Вс авг 14, 2016 15:21:51

наверно никто не знает-вопрос удалил-решил сам проблему

Re: Расчет частоты приема для RDA5807M

Чт окт 13, 2016 19:20:59

рдс идет с ошибками...
примерно так-
читаю все регистры,если
bler = readbuf(4) mod 16
rda5807_rdss = 1 and rda5807_rdsr = 1 and bler = 0
то вычисляю rdsVersion,rdsGroup,если они ноль то
вычисляю знакоместо rdsIndex=rdsIndex*2
и вывожу на экран,но!
как определить что пора вывести на экран?а то у меня радио шансон 99,6 fm идет так
shanson
raanson
radison
radio n
radio
99dio
99.6o
99.6 f
99.6 fm
sh.6 fm
shan fm и т д

Re: Расчет частоты приема для RDA5807M

Чт окт 13, 2016 19:34:09

Да, наверное, никак.

Ибо по стандарту этот текст вообще должен быть фиксирован для конкретной станции и меняться не должен. Поэтому определить, к какому именно из нескольких передаваемых слов относится данная конкретная пара символов, вряд ли возможно.

Разве что придумать какой-нибудь хитрый алгоритм. Вроде как два буфера - один отображается, во второй идёт накопление данных. И только после последовательно принятых четырёх пар символов (начиная от пары 0 до пары 3), то сбрасывать в отображаемый буфер лишь после принятия пары 3. Но всё равно такой подход от ошибок не страхует, ибо какая-то из четырёх пар символов может быть передана некорректно.

Re: Расчет частоты приема для RDA5807M

Чт окт 13, 2016 19:50:31

ну должна же быть типа метка что слово передано и можно выводить на экран...
вроде нашел на каткат-"Когда указатель переходит на 0 данные выводятся для индикации"
такая же история,но когда вывожу после передачи указателя=3то боле-менее
так и оставлю пока...

но на других станциях почему-то тект идет как положено,может станция чудит-не знаю
Ответить