Приобрел я на пробу радио-модуль на базе микросхемы TEA5767.
Модуль представляет собой практически законченный приемник. Сам по себе модуль ничего ловить не будет, если только совершенно случайно настройки модуля по умолчанию будут соответствовать какой-нибудь местной станции, но это вряд ли.
Так вот, для того что бы модуль что-то начал ловить, нужно всего-ничего: подключить модуль в соответствии с распиновкой к усилителю и микроконтроллеру и написать прошивку управления модулем.
Во как, раньше приемники паяли, а теперь пишем!
Содержание статьи / Table Of Contents
↑ Типы и распиновка модулей на TEA5767
Я встречался с двумя типами модулей.↑ 1. Наиболее удобный модуль с полной обвязкой:
Этот модуль имеет полукруглые контактные площадки с торцов платы: 5+5 = 10 шт., шаг 2 мм. Я реализовывал управление по I2C шине. Для этого вывод «BUSMODE» подключаем к «земле», вывод «WR» можно не подключать.
↑ 2. Обрезанный модуль tt-502x — TEA5767 без кварца:
Часто нерадивые китайцы высылают этот вариант, вместо описанного выше. Вы сразу поймёте, что вас надули, распаковав бандерольку: на платах нет кварцевого резонатора. Радует то, что эти модули вполне рабочие, хоть и потребуют дополнительных телодвижений. Смотрите расширившуюся схему подключения, прикидывайте дополнительные элементы: часовой кварц, резисторы, конденсаторы. Этот модуль также имеет полукруглые контактные площадки с торцов платы: 4+6 = 10 шт., шаг 2 мм.
Я с таким модулем не работал, но чипы одинаковые, так что моя библиотека должна подойти.
↑ Схема демо-платы для TEA5767
Наверное, это первое моё устройство и программа, которые создавались ради изучения. Поэтому схема очень простая, предназначенная только для того, чтобы запустить модуль FM-приёмника. Учебный проект!Основные компоненты схемы:
• управляющий микроконтроллер ATmega16
• индикатор знакосинтезирующий 1602 на базе HD44780
• управление на энкодере с кнопкой
↑ Фото моей демо-платы в сборе
↑ Управление TEA5767 по I2C шине. Описание регистров на русском
Когда-то я уже пытался работать с этим модулем, но написать что-то сам я был ещё не в силах, а найти что-то готовое оказалось достаточно сложно.Вот я и решил, набравшись опыта в C, восполнить этот пробел и написал собственную библиотеку для работы с модулем.
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
Описание регистров, смысл которых я не понял, оставил без перевода. Так что, уважаемые коллеги, если кто-то более компетентен — пишите, вместе статью допилим.
↑ Функции датагорской библиотеки для TEA5767
Теперь пора рассказать про функции библиотеки, их всего пять.1) tea5767_write (); — функция записи параметров структуры TEA5767WriteRegister в модуль.
2) tea5767_read (); — функция чтения параметров из модуля в структуру TEA5767ReadRegister.
3) tea5767_calc_write_PLL (uint16_t Value); — функция вычисления значения PLL при частоте кварца 32768 Гц, входной параметр — частота в МГц * 100, пример: tea5767_calc_write_PLL (10300) — вычисление значения PLL для частоты 103,00 МГц.
4) tea5767_init (); — начальная инициализация модуля. Можно и не инициализировать, но так как-то user-frendly, подаёшь питание, а там что-то уже играет. Я записываю следующие стартовые параметры:
tea5767_calc_write_PLL ( 10300 );
TEA5767WriteRegister.XTAL = 1; //выбор опорной частоты 32768 Гц
TEA5767WriteRegister.SNC = 1; //шумоподавитель ВКЛ
5) (uint16_t)tea5767_calc_read_PLL (); — вычисляет значение частоты из регистров PLL для чтения.
В библиотеке значения регистров для записи и чтения хранятся в двух структурах, которые определены в заголовочном файле библиотеки.
Структура данных для записи — TEA5767WriteRegister
Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.
Структура данных для чтения — TEA5767ReadRegister
Структуры имеют битовые поля. Сделано это для удобства пользования библиотекой, мне не требуется применять операции сдвига или какие либо маски для установки/сброса конкретного бита. Например, включение режима «MUTE» осуществляется следующим образом: TEA5767WriteRegister.MUTE = 1.
После того, как необходимые параметры установлены, нужно вызвать функцию tea5767_write (), которая запишет всю структуру в модуль.
Также легко можно считать уровень сигнала из модуля: вызываем функцию tea5767_read (), SignalLevel = TEA5767ReadRegister.LEV
Таким же образом доступны почти все параметры.
Исключение составляют значение PLL, которые занимают больше одного байта в структуре. Но нам и не нужно что-либо записывать или считывать из них вручную. Для управления модулем проще будет задавать частоту. Для этого в библиотеке есть специальная функция, которая вычисляет значение PLL для заданной частоты. Также есть функция, которая производит обратное вычисление частоты из значения PLL, считанного из модуля.
Функции для вычисления PLL используют опорную частоту 32768Гц, такой кварц стоит на модуле. Других я не встречал, поэтому в библиотеке я не предусматривал возможности использования другого кварца.
К небольшому сожалению, я не смог реализовать автопоиск станций — не вкурил, как. Поэтому функция автопоиска в библиотеке пока отсутствует. Сожаление небольшое потому, что я живу в зоне неуверенного приема, и даже промышленные образцы приемников не могут поймать все станции, которые у нас вещают. Приходится настраивать вручную.
↑ Видео
Демо-плата под управлением описанного софта в работе↑ Файлы
Библиотеки soft-i2c и TEA5767🎁libs.7z 3.14 Kb ⇣ 153
Даташит TEA5767.pdf - стерео FM приёмник с МК управлением
↑ Итого
В качестве транспорта я использовал стороннюю библиотеку I2C шины. Шина реализована программным образом, мне это удобно потому, что можно подключаться на любые выходы микроконтроллера.Вот и всё, что я хотел рассказать про мою TEA5767-библиотеку. Думаю, перечисленных функций вполне достаточно для управления FM-модулем. Приглашаю желающих повторить наш учебный проект.
Спасибо за внимание!
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.