FM приёмник с RDS на RDA5807
Re: FM приёмник с RDS на RDA5807
Потому и копеечные, что и производитель ни какой поддержки не оказывает. У RDA присутствует разброс по чувствительности, возможно и у qn тоже самое.
Выше писали, что у qn чувствительность выше, а кто отвечает и как за высокую чувствительность QNxxxx? Если даже даташита нормального нет.
Что бы ощутить уровень поддержки и уровень ответственности производителя rdaxxxx и qnxxxx в сравнении с sixxxx предлагаю пройти хоть по этой ссылке.
Для rda и qn ничего подобного нет.
Выше писали, что у qn чувствительность выше, а кто отвечает и как за высокую чувствительность QNxxxx? Если даже даташита нормального нет.
Что бы ощутить уровень поддержки и уровень ответственности производителя rdaxxxx и qnxxxx в сравнении с sixxxx предлагаю пройти хоть по этой ссылке.
Для rda и qn ничего подобного нет.
- Реклама
Re: FM приёмник с RDS на RDA5807
[uquote="shonty",url="/forum/viewtopic.php?p=3630508#p3630508"]Выше писали, что у qn чувствительность выше[/uquote]
Чувствительность выше у RDA, это из собственного практического опыта. У QN8075 динамический диапазон больше. Там, где RDA5807захлебывается сильными сигналами и начинает принимать одну радиостанцию в нескольких "точках шкалы" с невозможностью принять слабые сигналы дальних станций, там QN8075 ведет себя намного лучше. Паразитных каналов приема не возникает, слабые иногородние станции не давятся. Сравнивал приемники на обеих микросхемах в 1 километре от вышки телерадиовещательного центра. Проверял прием на обрезок провода на расстоянии около 10 км от вышки, тут разные экземпляры RDA показали большую чувствительность чем несколько проверенных мс QN8075. Думаю, с QN8035 все обстоит точно так же, как со старшей моделью. Для нее, кстати. даже чувствительность не указана в даташите. В графе FM sensitivity стоит значение TDH, что вроде означает, что точные цифры пока неизвестны и будут опубликованы в следующих версиях даташита (которого уже не будет, по причине сворачивания работа над линейкой чипов).
В целом QN8075 мне понравилась больше. Хотя бы отсутствием долбаного неотключаемого софтмюта, который всю малину портит в случае с RDA5807.
Чувствительность выше у RDA, это из собственного практического опыта. У QN8075 динамический диапазон больше. Там, где RDA5807захлебывается сильными сигналами и начинает принимать одну радиостанцию в нескольких "точках шкалы" с невозможностью принять слабые сигналы дальних станций, там QN8075 ведет себя намного лучше. Паразитных каналов приема не возникает, слабые иногородние станции не давятся. Сравнивал приемники на обеих микросхемах в 1 километре от вышки телерадиовещательного центра. Проверял прием на обрезок провода на расстоянии около 10 км от вышки, тут разные экземпляры RDA показали большую чувствительность чем несколько проверенных мс QN8075. Думаю, с QN8035 все обстоит точно так же, как со старшей моделью. Для нее, кстати. даже чувствительность не указана в даташите. В графе FM sensitivity стоит значение TDH, что вроде означает, что точные цифры пока неизвестны и будут опубликованы в следующих версиях даташита (которого уже не будет, по причине сворачивания работа над линейкой чипов).
В целом QN8075 мне понравилась больше. Хотя бы отсутствием долбаного неотключаемого софтмюта, который всю малину портит в случае с RDA5807.
Астролябия-сама меряет, было бы что мерять!!!
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Так и не нашли описание регистров для QN8075? Я кое что наковырял.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Re: FM приёмник с RDS на RDA5807
[uquote="Oxford",url="/forum/viewtopic.php?p=3734817#p3734817"]Я кое что наковырял.[/uquote]
Любопытно было бы посмотреть.
Описания регистров так и не нашел. Лог. анализатором слушал I2C шину промышленного китайского приемника на QN8075, судя по логам там регистров значительно больше чем в QN8035, и совершенно непонятно за что отвечают "лишние" регистры.
Любопытно было бы посмотреть.
Описания регистров так и не нашел. Лог. анализатором слушал I2C шину промышленного китайского приемника на QN8075, судя по логам там регистров значительно больше чем в QN8035, и совершенно непонятно за что отвечают "лишние" регистры.
Астролябия-сама меряет, было бы что мерять!!!
-
aleksey_1184
- Нашел транзистор. Понюхал.
- Сообщения: 171
- Зарегистрирован: Сб сен 15, 2018 19:04:00
Re: FM приёмник с RDS на RDA5807
Как у QN8075 обстоят дела с RDS, лучше чем у Si4703 или хуже.
- Реклама
Re: FM приёмник с RDS на RDA5807
Да какое там RDS... Тут непонятно, как заставить ее с кварцевым резонатором работать. Внешнее тактирование получилось включить, а с резонатором никак. Методом тыка не удалось найти ответственные за это регистры.
Астролябия-сама меряет, было бы что мерять!!!
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
А как настраиваешь с внешним тактированием какие команды?
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Re: FM приёмник с RDS на RDA5807
Да я просто скопировал все, что МК "заводского" приемника засылает в QN8075 при включении, и все. Как было в заводском приемнике внешнее тактирование - прямоугольный сигнал от микроконтроллера 32768, так и осталась. Регистры настройки частоты нашел, еще какие-то обнаружил (громкость и т.д.), а регистры отвечающие за тактирование не получилось найти. Возможно я ошибаюсь, но у QN8075 вроде как более 80 управляющих регистров, значительно больше чем у QN8035, на которую есть полный даташит.
Астролябия-сама меряет, было бы что мерять!!!
- Oxford
- Опытный кот
- Сообщения: 819
- Зарегистрирован: Вт окт 23, 2012 13:17:25
- Откуда: Прокопьевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Ну приложи код который там отправляешь. нет там никаких 80 регистров они на одном ядре.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Шел второй день геморроя в попытках заставить работать rda5807m на attiny13. Ни сам я ничего вменяемого не написал, ни готовое не работает.
Модули рабочие точно, на arduino работают. Что либо сказать про attiny13, кроме того, что они прошиваются и мигалка на них работает, не могу.
Последнее что делал это на основе кода из этого видео https://www.youtube.com/watch?v=_a0Mnru ... 3481328773
Код
Питание пробовал 1) на 5807 подавал 3.3 вольта от батарейки, тини от 5 вольт 2) Все сразу от 3.3 вольт от линейного стабилизатора ams1117 3.3
И ничего, ни вдоха ни выдоха, ни какого либо самого малейшего шипения в динамике. Помогите
Модули рабочие точно, на arduino работают. Что либо сказать про attiny13, кроме того, что они прошиваются и мигалка на них работает, не могу.
Последнее что делал это на основе кода из этого видео https://www.youtube.com/watch?v=_a0Mnru ... 3481328773
Код
Код: Выделить всё
#include <tiny13a.h>
#include <delay.h>
// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <i2c.h>
unsigned char high_byte,low_byte,key,;
unsigned int data_radio1,data_radio2;
eeprom char canel;
eeprom char volume;
unsigned char test;
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
ADCSRA.6=1;
}
#define ADC_VREF_TYPE 0b01000001 // для ацп задействуем адс1
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
unsigned int adc_data;
adc_data=ADCW;
test=adc_data>>6;
}
void SET_LAMP(void){
PORTB.0=1;
delay_ms(100);
PORTB.0=0;
delay_ms(100);
}
void SET (char chislo){
char s;
for( s = chislo;s>0;s--){
SET_LAMP();
}
}
void RDA5807M_init (void) {
//отправка данных в модуль
i2c_start();
i2c_write(0x20); // адресный байт
i2c_write(0b11110000); // байт 02H
i2c_write(0b10001101); // байт 02L
i2c_write(0x00); // байт 03H
i2c_write(0x00); // байт O3L
i2c_write(0b00000010); // байт 04H
i2c_write(0b00000000); // 04L
i2c_write(0b00001000); // 05H
i2c_write( 0x80 | volume); // 05L(громкость) 0b10000101
i2c_write(0b00000000); // 06H
i2c_stop();
}
void I2C_write_vol (void) {
//отправка данных в модуль
i2c_start();
i2c_write(0x22); // адресный байт
i2c_write(0x05);
i2c_write(0b00001000); // 05H
i2c_write( 0x80 | volume); // 05L(громкость) 0b10000101
i2c_stop();
}
void SetFreq (int freq) {
data_radio1 = (freq - 870);
data_radio2 = data_radio1<<6; // сдвиг влево на 6 битов переменной data_radio1 с присвоением в переменную data_radio2
low_byte=data_radio2; //присвоение младшего байта переменной low_byte
data_radio2=data_radio2>>8;//сдвиг вправо на 8 битов переменной data_radio1 с присвоением в переменную data_radio2
high_byte=data_radio2; //присвоение старшего байта переменной high_byte
low_byte=low_byte+0b00010000;// возведение 4-го бита переменной low_byte в"1"
//отправка данных в модуль
i2c_start();
i2c_write(0x22); // адресный байт
i2c_write(0x03);
i2c_write(high_byte); // байт 03H
i2c_write(low_byte); // байт O3L
i2c_stop();
}
void key_buttons(void)
{
if (test>14){ //когда не нажата кнопку
key=0; //признак нажатия 0
}
if (test==0){ //если нажата первая кнопка
delay_ms(100);
if (test==0){ //проверяем еще раз что ее нажали
key=1; //и присваиваем признаку нажатия кнопки 1
}
}
if (test==7){ //то же для второй кнопки
key=2;
}
if (test==5){ //и для третьей
key=3;
}
}
void SetChannel(){
switch (canel) {
case 1:{ SetFreq (1008);SET(1); break;}
case 2:{ SetFreq (1034);SET(2); break;}
case 3:{ SetFreq (1063);SET(3); break;}
case 4:{ SetFreq (1012);SET(4); break;}
case 5:{ SetFreq (1045);SET(5); break;}
};
}
void main(void)
{
char ii = 1;
if(volume>15){
volume=15;
}
volume=15;
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB = 4;
DDRB=0x03;
TCCR0A=0x00;
TCCR0B=0x05;
TIMSK0=0x02;
ACSR=0x80;
DIDR0&=0x03;
DIDR0|=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x8E;
i2c_init();
delay_ms(500);
RDA5807M_init();
delay_ms(500);
SetFreq(1025);
delay_ms(500);
#asm("sei")
while (1)
{
key_buttons();
if(key==1) {
canel++;
ii=1;
//key = 0;
delay_ms(300);
if(canel>5)//{
canel=1;
}
if ((volume > 0) & (key==2)){
volume--;
delay_ms(100);
I2C_write_vol ();
}
if ((volume < 15) & (key==3)){
volume++;
delay_ms(100);
I2C_write_vol ();
}
if(ii==1){
ii=0;
SetChannel();
}
}
}
И ничего, ни вдоха ни выдоха, ни какого либо самого малейшего шипения в динамике. Помогите
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
А почему 02L байт при установке частоты пропущен? Или 02H - по этим "магическим" числам не до конца понятно, что Вы там пытаетесь запихнуть в регистры.
P.S. Хотя сейчас понял, по адресу 0x22 произвольный доступ к регистрам...
P.S. Хотя сейчас понял, по адресу 0x22 произвольный доступ к регистрам...
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Сам запутался уже ( и так и эдак да еще вот так пробовал. Но никак, вы могли бы что то с этим сделать? Почему оно не работает? Частоты в codevision и фьюзы контроллера совпадают, 9,6 МГц
-
aleksey_1184
- Нашел транзистор. Понюхал.
- Сообщения: 171
- Зарегистрирован: Сб сен 15, 2018 19:04:00
Re: FM приёмник с RDS на RDA5807
Вот тут какая то странность.
Хотя должно быть как то так.
Вот мой кусочек кода установки частоты
Ну и напоследок, если в 3 регистр вручную прописать частоту при инициализации, rda5807 начинает воспроизводить станцию.
Код: Выделить всё
low_byte=low_byte+0b00010000;// возведение 4-го бита переменной low_byte в"1"Код: Выделить всё
low_byte |=(1<<4);//Код: Выделить всё
//---Здесь преобразуем расчетную частоту в данные для отправки в RDA5807---------//
void preob_FREQ(void){ //
FREQ.HIG_FREQ = Frequency; // записываем расчетную частоту в старший байт данных частоты
FREQ.LOW_FREQ = 0; // обнуляем младший байт данных частоты
FREQ.FREQ = FREQ.FREQ >> 2; // сдвигаем данные частоты на два бита в право
FREQ.LOW_FREQ |= TUNE_En; // устанавливаем бита TUNE_En для разрешения работы приемника
REG_3H = FREQ.HIG_FREQ; // предаем данные частоты в регистры отправки
REG_3L = FREQ.LOW_FREQ; //
} //
//---Здесь производим ручную перестройку частоты--------------------------------//
void REGULYTOR_FREQ(unsigned char t){ //
if(t==0){Frequency++;if(Frequency==0xD3){Frequency = 0;}} // Проверяем в какую сторону будем менять частоту, если в положительную строну, прибавляем 1 к значению частоты, проверяем если дошли до 0xD3 обнуляем регистр частоты
else{Frequency--;if(Frequency==0){Frequency = 0xD2;}} // если в отрицательную сторону, вычитаем 1 из регистра частоты, проверяем если дошли до 0 устанавливаем значение регистра частоты = 0xD2
//
preob_FREQ(); // преобразовываем значение частоты в данные для отправки в RDA5807
INDIK_FREQ(); // показываем новое значение частоты
//
i2c_start(); // передаем новое значение частоты в RDA5807
i2c_write(WRITE_ADDR_REG); //
i2c_write(0x03); //
i2c_write(REG_3H); //
i2c_write(REG_3L); //
i2c_stop(); //
//
for(char g = 0;g<8;g++){ // Очищаем строку с названием станции
station_name[g] = ' '; //
} //
for(char g = 0;g<64;g++){ // Очищаем строку с радио текстом
radiotext[g] = ' '; //
} //
//
delay(5); // ждем 250 мСек (5*50 мСек)
} //- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Если не сложно, покажите весь код?
Сейчас решил попробовать весь код засунуть в один МК, взять проект уважаемого WiseLord и убрать все кроме модуля радио. Делаю проект часов на ГРИ с радио будильником ) Но думаю обсуждение всего проекта не в этой теме... Со всеми этими протоколами трудности.
Еще вопрос, входы SDA и SCL у rda5807m ведь толерантны к 5 вольтам? Я проверял модули на ардуино, питание 3.3 вольта, а sda scl кидал напрямую на входы выходы без согласования, все работало. Причем даже без подтяжки линий к питанию. Возможно в библиотеке включалась внутренняя подтяжка.
-----
WiseLord, подскажите, а библиотека из вашей программы на частоте мк 20 МГц будет работать? В атмел студии я не очень, никак не могу найти директиву F_CPU.
Сейчас решил попробовать весь код засунуть в один МК, взять проект уважаемого WiseLord и убрать все кроме модуля радио. Делаю проект часов на ГРИ с радио будильником ) Но думаю обсуждение всего проекта не в этой теме... Со всеми этими протоколами трудности.
Еще вопрос, входы SDA и SCL у rda5807m ведь толерантны к 5 вольтам? Я проверял модули на ардуино, питание 3.3 вольта, а sda scl кидал напрямую на входы выходы без согласования, все работало. Причем даже без подтяжки линий к питанию. Возможно в библиотеке включалась внутренняя подтяжка.
-----
WiseLord, подскажите, а библиотека из вашей программы на частоте мк 20 МГц будет работать? В атмел студии я не очень, никак не могу найти директиву F_CPU.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Я в atmel студии вообще никогда не работал.
Но библиотеке в принципе по барабану частота МК.
Но библиотеке в принципе по барабану частота МК.
-
aleksey_1184
- Нашел транзистор. Понюхал.
- Сообщения: 171
- Зарегистрирован: Сб сен 15, 2018 19:04:00
Re: FM приёмник с RDS на RDA5807
RDA5807 работает на 3 вольтах и от 5 вольт дохнет, надеюсь подтяжка i2c к питанию есть.
- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
WiseLord, я сам плохо разбираюсь, но код библиотеки предельно похож на студию ) За подсказку спасибо! Надеюсь заработает. Еще бы как нибудь на привычный мне codevision перетащить библиотеку...
Алексей, на ардуино я брал питание 3.3 вольта для самого модуля, а i2c линии шли без какого либо согласования на работающую от 5 вольт ардуино, все работало.
Может кто знает готовую библиотеку rda5807 для codevision? Когда то давно я ее находил, там в куче в архиве были библиотеки для AVR и STM32, сейчас повторно найти не могу (
Алексей, на ардуино я брал питание 3.3 вольта для самого модуля, а i2c линии шли без какого либо согласования на работающую от 5 вольт ардуино, все работало.
Может кто знает готовую библиотеку rda5807 для codevision? Когда то давно я ее находил, там в куче в архиве были библиотеки для AVR и STM32, сейчас повторно найти не могу (
-
aleksey_1184
- Нашел транзистор. Понюхал.
- Сообщения: 171
- Зарегистрирован: Сб сен 15, 2018 19:04:00
Re: FM приёмник с RDS на RDA5807
Я мало с авр работаю поэтому не подскажу, для начала надо бы убедился в работоспособности i2c проинициализировав rda5807 со всеми настройками. Настройки можно посмотреть здесь на форуме или вот мои
Частота при старте 101 мГц.
Код: Выделить всё
__EEPROM_DATA(0xC2,0x8D,0x23,0x10,0x00,0x00,0x88,0x83); //REG_2H,REG_2L,REG_3H,REG_3L,REG_4H,REG_4L,REG_5H,REG_5L- Kotto
- Опытный кот
- Сообщения: 795
- Зарегистрирован: Чт ноя 08, 2012 22:28:05
- Откуда: Ижевск
- Контактная информация:
Re: FM приёмник с RDS на RDA5807
Может у кого есть рабочий пример в среде codevision? Помню ведь находил архив с библиотеками под разные модули для stm32 и там же был архив codevision
---
https://radiokot.ru/forum/viewtopic.php ... 6&start=60
Нашел в этой теме, буду поглядеть...
---
https://radiokot.ru/forum/viewtopic.php ... 6&start=60
Нашел в этой теме, буду поглядеть...
Re: FM приёмник с RDS на RDA5807
Антенный вход включен? Там для этого ключ есть, управляемый регистром описания которого в даташите нет. В некоторых примерах упущен этот момент, так что даже ХЗ как RDA у них работала. Сам я с AVR делов почти не имел, если что. RDA5807 у меня успешно работала с PIC16.
Астролябия-сама меряет, было бы что мерять!!!


