Потому и копеечные, что и производитель ни какой поддержки не оказывает. У RDA присутствует разброс по чувствительности, возможно и у qn тоже самое. Выше писали, что у qn чувствительность выше, а кто отвечает и как за высокую чувствительность QNxxxx? Если даже даташита нормального нет. Что бы ощутить уровень поддержки и уровень ответственности производителя rdaxxxx и qnxxxx в сравнении с sixxxx предлагаю пройти хоть по этой ссылке. Для rda и qn ничего подобного нет.
Чувствительность выше у RDA, это из собственного практического опыта. У QN8075 динамический диапазон больше. Там, где RDA5807захлебывается сильными сигналами и начинает принимать одну радиостанцию в нескольких "точках шкалы" с невозможностью принять слабые сигналы дальних станций, там QN8075 ведет себя намного лучше. Паразитных каналов приема не возникает, слабые иногородние станции не давятся. Сравнивал приемники на обеих микросхемах в 1 километре от вышки телерадиовещательного центра. Проверял прием на обрезок провода на расстоянии около 10 км от вышки, тут разные экземпляры RDA показали большую чувствительность чем несколько проверенных мс QN8075. Думаю, с QN8035 все обстоит точно так же, как со старшей моделью. Для нее, кстати. даже чувствительность не указана в даташите. В графе FM sensitivity стоит значение TDH, что вроде означает, что точные цифры пока неизвестны и будут опубликованы в следующих версиях даташита (которого уже не будет, по причине сворачивания работа над линейкой чипов).
В целом QN8075 мне понравилась больше. Хотя бы отсутствием долбаного неотключаемого софтмюта, который всю малину портит в случае с RDA5807.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Описания регистров так и не нашел. Лог. анализатором слушал I2C шину промышленного китайского приемника на QN8075, судя по логам там регистров значительно больше чем в QN8035, и совершенно непонятно за что отвечают "лишние" регистры.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Да какое там RDS... Тут непонятно, как заставить ее с кварцевым резонатором работать. Внешнее тактирование получилось включить, а с резонатором никак. Методом тыка не удалось найти ответственные за это регистры.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Да я просто скопировал все, что МК "заводского" приемника засылает в QN8075 при включении, и все. Как было в заводском приемнике внешнее тактирование - прямоугольный сигнал от микроконтроллера 32768, так и осталась. Регистры настройки частоты нашел, еще какие-то обнаружил (громкость и т.д.), а регистры отвечающие за тактирование не получилось найти. Возможно я ошибаюсь, но у QN8075 вроде как более 80 управляющих регистров, значительно больше чем у QN8035, на которую есть полный даташит.
_________________ Астролябия-сама меряет, было бы что мерять!!!
//отправка данных в модуль 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;} }; }
А почему 02L байт при установке частоты пропущен? Или 02H - по этим "магическим" числам не до конца понятно, что Вы там пытаетесь запихнуть в регистры.
P.S. Хотя сейчас понял, по адресу 0x22 произвольный доступ к регистрам...
Сам запутался уже ( и так и эдак да еще вот так пробовал. Но никак, вы могли бы что то с этим сделать? Почему оно не работает? Частоты в codevision и фьюзы контроллера совпадают, 9,6 МГц
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 мСек) } //
Ну и напоследок, если в 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.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения