Yamazaki Опубликовано 22 Марта, 2016 в 16:37 Жалоба Поделиться Опубликовано 22 Марта, 2016 в 16:37 (изменено) Попал в руки вот такой любопытный модуль: Я как раз начал осваивать микроконтроллеры, и решил в порядке эксперимента раскочегарить эту фитюльку. Это оказалось не так просто, но в конце концов модуль порадовал уверенной работой. Чтобы полезная информация не пропала, поделюсь ею с вами. Во-первых у микросхемы, именно у 5807P явные проблемы с документацией. Есть на варианты с другой буквой, но они заметно отличаются функционально и у них несколько другие управляющие регистры. А для варианта с буковой P есть только бессодержательный даташит и аппликуха на китайском. Как же в ней разобраться? Оказалось, что RDA5807* являются клонами различных (офигенных!) микросхем из семейства SI470* от Silabs, что не может не радовать, но мало прибавляет ясности. Все-таки по управлению они похожи, но тоже не совпадают полностью. На радиокоте и cqham некоторые товарищи все-таки разобрались с регистрами и даже нашли недокументированные возможности (например, прямой ввод частоты) , но не опубликовали результаты свои изысканий. Возможно, если с ними связаться, они поделятся ими. Также существуют готовые библиотеки для управления модулем, но они либо на C, либо под Arduino, язык которого в свою очередь, похож на C. Проблема в том, что я не знаю этот птичий язык и все делаю в mikroPascal. В общем, меня ожидало плавание в море дерьма, причем без весел. Наконец, хорошая новость: модуль совместим по цоколевке и управлению с TEA5767. Некоторый функционал в режиме совместимости теряется, зато документирован он несравнимо лучше. На все том же радиокоте нашел хоть и чрезмерно усложненный, но более или менее рабочий пример на паскале, и отталкивался уже от него. Изменено 22 Марта, 2016 в 18:30 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 22 Марта, 2016 в 17:39 Автор Жалоба Поделиться Опубликовано 22 Марта, 2016 в 17:39 (изменено) Используется аппаратный TWI(I2C) Атмеги8 Нога 28 SCL Нога 27 SDA В микропаскале есть библиотека для работы с ним, так и называется TWI. Её не нужно указывать в uses, достаточно включить соответствую галочку в library manager. Так выглядит загрузка конфига в микросхему в режиме эмуляции TEA5767 : Register1:=%00101011;Register2:=%00000110; Register3:=%00011000; Register4:=%00010000; Register5:=%00000000; SREG_I_bit:=0; //запрет прерываний TWI_Init(10000); // инициализация TWI TWI_Start(); TWI_Write(%11000000); // адрес TEA5767 TWI_Write(Register1); TWI_Write(Register2); TWI_Write(Register3); TWI_Write(Register4); TWI_Write(Register5); TWI_Stop(); TWI_Close(); SREG_I_bit:=1; //разрешение прерываний Как видите, все просто. Сначала грузится адрес, потом пять конфигурационных байт друг за другом. Только так и никак иначе. Загрузка конфига инициализирует микросхему. Для сравнения: в обычном режиме регистров больше, они шестнадцатибитные, и загрузка почему-то начинается со второго регистра. Но и возможностей конфигурирования больше. Например, можно регулировать громкость, можно усилить бас, можно много чего ещё, что на самом деле не нужно. Первый подводный камень: Циферки, выделенные в листинге жирным - код, задающий частоту настройки. Для его вычисления дается формула. Вместо 100 подставляете частоту в мегагерцах, получается число. Переводим его в двоичный вид, получаются искомые нолики и единички. В макете, однако, частота приема была на 0.45 кГц больше, чем запрограммированная. Все дело в том, что там на самом деле две формулы. Одна для режима high side injection, другая для low side injection Насколько я понял, разница между ними в том, что частота гетеродина или выше, или ниже частоты настройки на величину промежуточной частоты, которая в данном случае равна 225кГц. Поправьте, если кто лучше в этом разбирается. Ошибка в знаке дает погрешность в 2*225=450 кГц. Тип injection задается битом 4 в третьем регистре, он тоже отмечен жирным шрифтом. Кстати, неизвестно, на самом деле там меняется эта фигня, или это сделано только ради совместимости с TEA5767. Изменено 22 Марта, 2016 в 20:19 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
erbol Опубликовано 22 Марта, 2016 в 17:47 Жалоба Поделиться Опубликовано 22 Марта, 2016 в 17:47 Большая работа проделана. Спасибо, Сергей, за полезную информацию! :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 22 Марта, 2016 в 17:57 Автор Жалоба Поделиться Опубликовано 22 Марта, 2016 в 17:57 (изменено) Прикол номер два: Загружаем при инициализации некоторую частоту, допустим, 101.7, а потом кнопками прибавляем или убавляем по одной десятой. Хотя цифра на дисплее обновляется при каждом нажатии, фактически частота сменяется только на каждом втором шаге настройки. И такая шарманка во всем диапазоне! 101.7, 101.9, 102,1, 102,3... Если же залить первоначально четную частоту, будет 101.8, 102,0, 102,2, 102,4. Т.е. сдвиг настройки на одну десятую не вызывает фактического изменения настройки, нужно изменить хотя-бы на две-три десятых мегагерца, чтобы микросхема очухалась и наконец соизволила настроиться на требуемую частоту. Подозреваю, что дело в наличии ФАПЧ, которая держится за пойманную частоту, покуда разница не слишком велика. Однако первоначальная установка частоты всегда работает четко. Решение простое: при каждом изменении частоты делаем две заливки. Сначала заливаем настройку вне FM диапазона, например, 80МГц, затем ту, которая нужна. Маленьких шагов перестройки нет, нет проблемы. Прикол номер три, точнее уже чисто мой тупняк: долго не мог понять, почему TWI не грузит настройки в чип. В даташите написано, что адрес 1100000b На эту букву b сначала вообще внимания не обратил, оказывается, за ней кроется ещё один бит. Если открываем интерфейс на чтение, там единица, если на запись, то ноль. Окончательный вид 11000000 запись 11000001 чтение Изменено 22 Марта, 2016 в 18:04 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 22 Марта, 2016 в 18:51 Автор Жалоба Поделиться Опубликовано 22 Марта, 2016 в 18:51 (изменено) Прикол номер 4, не только для этого модуля, но и вообще для аналоговых устройств, чувствительных к помехам: Если на ходу выдернуть МК из панельки, модуль продолжает работать, причем ловит качественнее. Видимо, работа МК и динамическая индикация производят какие-то широкополосные помехи. В интернете советуют бороться с этим с помощью тотального экранирования. Мухи (модуль) отдельно, котлеты (МК) отдельно. На самом деле можно решить эту проблему и без экранирования, чисто программно: МК можно переводить в спящий режим после секунды простоя и выводить из спячки по нажатию кнопки. Естественно, в таком режиме невозможно поддерживать динамическую индикацию, но тут есть варианты. Можно сделать статическую на сдвиговых регистрах, можно сделать динамическую, но на отдельном контроллере с ограничением скорости нарастания напряжения (следовательно, с гораздо меньшей полосой помех), например MAX7221. Насчет вариантов с LCD не уверен, контроллер дисплея сам по себе может фонить. Изменено 22 Марта, 2016 в 19:11 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 22 Марта, 2016 в 20:03 Автор Жалоба Поделиться Опубликовано 22 Марта, 2016 в 20:03 (изменено) Пару слов следует сказать о руководстве по программированию. Rda5807 Prog Manual.rar Оно хоть и на китайском языке, но для нас не бесполезное. Если вы используете автопоиск, следует строго соблюдать алгоритм работы с ним, иначе приемник не сможет точно настроиться на частоту передатчика. Алгоритмы и для обычного режима, и для режима совместимости все-таки приведены во вполне понятном графическом виде, ими можно пользоваться. Описания регистров (не всех!) там тоже есть, причем на английском. После тех семи идут еще два, в которые можно записать частоту непосредственно. К сожалению, у меня по этой теме нет более конкретной информации, но люди копались и чего-то такое находили. Возможно вам помогут даташиты на микросхемы с другой буквой или даташиты Silabs. Если хотите ручную настройку, проще использовать режим совместимости с TEA5767, там эта функция предусмотрена изначально. Изменено 22 Марта, 2016 в 20:09 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 23 Марта, 2016 в 04:24 Автор Жалоба Поделиться Опубликовано 23 Марта, 2016 в 04:24 (изменено) а программно нет возможности сделать: "нажал кнопку - ФАПЧ отключилась на 2 - 3 сек. ?Все, что я сказал о ФАПЧ - только гипотеза, не более того. Может быть кто-то, кто в теме, подскажет, как оно на самом деле работает?Даже если и можно было бы отключить... любое изменение в работе делается перезаливкой конфигурационных байт в чип. Отключить что-то - перезаливка. Включить что-то - тоже перезаливка. Ничего не выигрываем, у нас и так было две заливки. В общем, это конечно костыль, но он работает без особых проблем. Замечено, что изменение чувствительности автопоиска меняет работу этого глюка. Можно сделать чтобы он удерживал частоту даже при перестройке на 0.2 или 0.3МГц. Это странно, автопоиск-то ведь не используется... надо ещё поэкспериментировать с этой настройкой, может чего веселенькое обнаружится Изменено 23 Марта, 2016 в 04:30 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Allroy Опубликовано 23 Марта, 2016 в 06:16 Жалоба Поделиться Опубликовано 23 Марта, 2016 в 06:16 Вот так повезло! Недавно заказал модули Tea5767, но что с ними делать, я так и не разобрался. Точней я их запустил под ардуино, но как то оно все не правильно работало! Сергей, а не могли ли вы приложить прошивку и схему подключения? Был бы очень признателен! Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 23 Марта, 2016 в 07:09 Автор Жалоба Поделиться Опубликовано 23 Марта, 2016 в 07:09 (изменено) Пожалуйста. Описание регистров управления на русском Ербол недавно выкладывал https://forum.datagor...5767-avtopoisk/ Схема включения (на самом деле абсолютно стандартная): Проект в mikroPascal и симуляция в протеусе: Display.rar Питание общее 3.3В. для красного индикатора этого вполне достаточно, другие цвета требуют большего напряжения. Кстати, RDA как и TEA допускает питание до 5В, но интерфейс TWI все равно трехвольтовый. Поэтому все на 3.3В, чтобы не париться с согласованием уровней. Изменено 23 Марта, 2016 в 07:30 пользователем yamazaki Ссылка на комментарий Поделиться на другие сайты Поделиться
Allroy Опубликовано 23 Марта, 2016 в 07:19 Жалоба Поделиться Опубликовано 23 Марта, 2016 в 07:19 Отлично, на днях проверю! Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 23 Марта, 2016 в 07:24 Автор Жалоба Поделиться Опубликовано 23 Марта, 2016 в 07:24 По всей видимости даже при отключенном автопоиске, опция "чувствительность автопоиска" активна. О, интересная инфа. Стоит ли мне в условиях слабого приема вкрутить эту настройку на максимум чувствительности? Ссылка на комментарий Поделиться на другие сайты Поделиться
Yamazaki Опубликовано 23 Марта, 2016 в 07:37 Автор Жалоба Поделиться Опубликовано 23 Марта, 2016 в 07:37 И сам отвечаю на свой вопрос: да, каким-то непонятным образом влияет и без автопоиска. Ставим единички в соответствующие биты и слабые радиостанции лучше слышны. Чудеса, да и только. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти