TinyPocketRadio - ЧМ стерео радиоприемник на основе ATtiny13A и RDA5807MP

ATtiny13A RDA5807MP

TinyPocketRadio – это простой ЧМ стерео радиоприемник, сделанный на основе микросхем ATtiny13A и RDA5807MP. Он питается от батарейки CR2032 таблеточного типа и может работать непосредственно на 32-омные наушники, подключаемые аудио разъемом 3.5 мм. Размеры печатной платы составляют 38 × 23 мм. На плате имеются выключатель питания и три кнопки: «Канал+», «Громкость–» и «Громкость+».

Держим старые цены на MEAN WELL весь июль!

TinyPocketRadio - ЧМ стерео радиоприемник на основе ATtiny13A

Аппаратная часть

Схема тюнера изображена на Рисунке 1. Все файлы проекта можно загрузить из источника [1].

Схема тюнера TinyPocketRadio.
Рисунок 1. Схема тюнера TinyPocketRadio.

Недорогой однокристальный ЧМ стерео тюнер RDA5807MP, предназначенный для приема радиовещательных станций, отличается хорошей избирательностью по ПЧ и содержит в себе полностью интегрированный синтезатор, декодер RDS/RBDS и декодер MPX. Тюнер выполнен по КМОП технологии, поддерживает несколько интерфейсов и требует минимального количества внешних компонентов. Все это делает его очень подходящим для портативных устройств.

Программная часть

Реализация протокола I2C

Исходный код программы доступен по ссылке [2]. Протокол I2C реализован методом программной эмуляции. Алгоритм специально разрабатывался под ограниченные ресурсы ATtiny10 и ATtiny13, но должен работать и на некоторых других контроллерах AVR. Благодаря низкой тактовой частоте процессора для правильного отсчета времени не требуется никаких задержек. В целях экономии ресурсов реализованы только основные функциональные возможности, необходимые для этого приложения.

Управление тюнером RDA5807

Микросхема ЧМ тюнера RDA5807MP управляется микроконтроллером ATtiny по шине I2C. Тюнер имеет шесть 16-разрядных регистров записи (адреса 0x02 – 0x07) и шесть 16-разрядных регистров чтения (адреса 0x0A – 0x0F). Поскольку считывать какие-либо данные с устройства для этого приложения не требуется, используются только регистры, доступные для записи. Доступ к регистрам RDA5807 для записи может осуществляться двумя методами: последовательным, при котором запись всегда происходит, начиная с адреса 0x02, и индексным, при котором сначала передается адрес регистра, а затем содержимое. Оба метода определяются разными адресами I2C. При передаче содержимого 16-разрядного регистра первым посылается старший бит. RDA5807 управляется установкой или очисткой определенных битов в соответствующих регистрах. Подробную информацию о значениях битов каждого регистра можно найти в техническом описании. Текущее содержимое регистров сохраняется в массиве RDA_regs.

Главная функция

Для экономии энергии в коде используется функция снижения потребляемой мощности в спящем режиме. При каждом нажатии кнопки процессор пробуждается прерыванием по изменению состояния входа, передает соответствующую команду через I2C на RDA5807 и снова засыпает.

Компиляция и загрузка

Ввиду отсутствия на плате разъема внутрисхемного программирования (ICSP), запрограммировать ATtiny нужно либо перед запайкой, используя адаптер для корпусов SOIC-8, либо после пайки с помощью зажима для EEPROM. В этом может помочь AVR Programmer Adapter.

При использовании Arduino IDE

  • Удостоверьтесь, что ядро MicroCore [3] установлено.
  • Пройдите Tools -> Board -> MicroCore и выберите ATtiny13.
  • Откройте Tools и выберите следующие опции платы:
    • Clock: 1.2 MHz internal osc.
    • BOD: BOD disabled
    • Timing: Micros disabled
  • Подключите программатор к ПК и ATtiny.
  • Перейдите к Tools -> Programmer и выберите свой внутрисхемный программатор (то есть, USBAsp).
  • Перейдите к Tools -> Burn Bootloader для записи фьюзов.
  • Откройте скетч TinyPocketRadio и кликните Upload.

При использовании предварительно скомпилированного hex-файла

  • Удостоверьтесь, что консольная программа AVRDude [4] установлена.
  • Подключите программатор к ПК и ATtiny.
  • Откройте терминальную программу.
  • Перейдите в папку с hex-файлом.
  • Выполните следующую команду (при необходимости замените «usbasp» на имя того программатора, который используете вы):

avrdude -c usbasp -p t13 -U lfuse:w:0x2a:m -U hfuse:w:0xff:m -U flash:w:main.hex

Ссылки

  1. Файлы проекта TinyPocketRadio
  2. Исходный код программы TinyPocketRadio
  3. Комплект MicroCore
  4. Консольная программа AVRDude

Материалы по теме

  1. Datasheet Microchip ATtiny13
  2. Datasheet RDA Microelectronics RDA5807

github.com

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: TinyPocketRadio - FM Stereo Radio based on ATtiny13A and RDA5807MP

Изготовление 1-4 слойных печатных плат за $2

37 предложений от 27 поставщиков
ATtiny13A - низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny13 достигает производительности 1 MIPS...
ЗУМ-СМД
Россия
ATTINY13A-SSUR
Atmel
30 ₽
T-electron
Россия и страны СНГ
ATTINY13A-SU
Atmel
32 ₽
DM Electronics
Россия
ATTINY13A-SSU
Microchip
7 334 ₽
ATTINY13A_10
Atmel
по запросу
Запись онлайн-семинара Создание малошумящих импульсных источников питания. Практические рекомендации от Analog Devices
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя