Потому и копеечные, что и производитель ни какой поддержки не оказывает. У RDA присутствует разброс по чувствительности, возможно и у qn тоже самое.
Выше писали, что у qn чувствительность выше, а кто отвечает и как за высокую чувствительность QNxxxx? Если даже даташита нормального нет.
Что бы ощутить уровень поддержки и уровень ответственности производителя rdaxxxx и qnxxxx в сравнении с sixxxx предлагаю пройти хоть по этой ссылке.
Для rda и qn ничего подобного нет.
[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.
[uquote="Oxford",url="/forum/viewtopic.php?p=3734817#p3734817"]Я кое что наковырял.[/uquote]
Любопытно было бы посмотреть.
Описания регистров так и не нашел. Лог. анализатором слушал I2C шину промышленного китайского приемника на QN8075, судя по логам там регистров значительно больше чем в QN8035, и совершенно непонятно за что отвечают "лишние" регистры.
Да какое там RDS... Тут непонятно, как заставить ее с кварцевым резонатором работать. Внешнее тактирование получилось включить, а с резонатором никак. Методом тыка не удалось найти ответственные за это регистры.
Да я просто скопировал все, что МК "заводского" приемника засылает в QN8075 при включении, и все. Как было в заводском приемнике внешнее тактирование - прямоугольный сигнал от микроконтроллера 32768, так и осталась. Регистры настройки частоты нашел, еще какие-то обнаружил (громкость и т.д.), а регистры отвечающие за тактирование не получилось найти. Возможно я ошибаюсь, но у QN8075 вроде как более 80 управляющих регистров, значительно больше чем у QN8035, на которую есть полный даташит.
А почему 02L байт при установке частоты пропущен? Или 02H - по этим "магическим" числам не до конца понятно, что Вы там пытаетесь запихнуть в регистры.
P.S. Хотя сейчас понял, по адресу 0x22 произвольный доступ к регистрам...
Сам запутался уже ( и так и эдак да еще вот так пробовал. Но никак, вы могли бы что то с этим сделать? Почему оно не работает? Частоты в codevision и фьюзы контроллера совпадают, 9,6 МГц
//---Здесь преобразуем расчетную частоту в данные для отправки в 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 мСек)
} //
Ну и напоследок, если в 3 регистр вручную прописать частоту при инициализации, rda5807 начинает воспроизводить станцию.
Сейчас решил попробовать весь код засунуть в один МК, взять проект уважаемого WiseLord и убрать все кроме модуля радио. Делаю проект часов на ГРИ с радио будильником ) Но думаю обсуждение всего проекта не в этой теме... Со всеми этими протоколами трудности.
Еще вопрос, входы SDA и SCL у rda5807m ведь толерантны к 5 вольтам? Я проверял модули на ардуино, питание 3.3 вольта, а sda scl кидал напрямую на входы выходы без согласования, все работало. Причем даже без подтяжки линий к питанию. Возможно в библиотеке включалась внутренняя подтяжка.
-----
WiseLord, подскажите, а библиотека из вашей программы на частоте мк 20 МГц будет работать? В атмел студии я не очень, никак не могу найти директиву F_CPU.
WiseLord, я сам плохо разбираюсь, но код библиотеки предельно похож на студию ) За подсказку спасибо! Надеюсь заработает. Еще бы как нибудь на привычный мне codevision перетащить библиотеку...
Алексей, на ардуино я брал питание 3.3 вольта для самого модуля, а i2c линии шли без какого либо согласования на работающую от 5 вольт ардуино, все работало.
Может кто знает готовую библиотеку rda5807 для codevision? Когда то давно я ее находил, там в куче в архиве были библиотеки для AVR и STM32, сейчас повторно найти не могу (
Я мало с авр работаю поэтому не подскажу, для начала надо бы убедился в работоспособности i2c проинициализировав rda5807 со всеми настройками. Настройки можно посмотреть здесь на форуме или вот мои
Может у кого есть рабочий пример в среде codevision? Помню ведь находил архив с библиотеками под разные модули для stm32 и там же был архив codevision
---
Антенный вход включен? Там для этого ключ есть, управляемый регистром описания которого в даташите нет. В некоторых примерах упущен этот момент, так что даже ХЗ как RDA у них работала. Сам я с AVR делов почти не имел, если что. RDA5807 у меня успешно работала с PIC16.