Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить

Расчет частоты приема для RDA5807M

Пт янв 30, 2015 09:55:34

Делаю часы на RGB индикаторах с FM приемником на RDA5807M . Сначала поставил модуль TEA5767. С ним проблем не было все работает , но не устроила чувствительность. Находил всего 3 станции. Поставил модуль RDA5807M. В автоматическом режиме находит около 12 станций. Хочу записывать в него принудительно частоту станции. Но не получается.

По даташиту такая формула Frequency = Channel Spacing (kHz) x CHAN+ 87.0 MHz. CHAN=0:9

Записывается частота в регистры 03H и 03L (6 и 7 бит ) . У меня частота сканирования Channel Spacing=100 кНz. допустим мне надо станцию на частоте 105,4мГц . Получаем 100*4+105 = 1054 в .Пишем в 03H 10000011 в 03L 11хххххх и нет результата. Пишу на ассемблере. Подскажите где я ошибся или что-то нужно еще модулю дослать в регистры ?

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 10:15:17

Как то вы странно считаете...
При сетке частот 100kHz и диапазоне 87–108 MHz (US/Europe):
Канал 0 - это 87.0MHz, 1 - 87.1MHz и т.д.
Частота 105,4MHz = канал 184d.
Согласны?

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 10:52:06

Наверно так. Я думал что номер канала может быть только от 0 до 9. Вот по этому затык был. А это получается 18 канал и 4 это дробная часть канала.

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 10:56:13

Всё проще:
Считать надо в одних величинах:
Nch = [Fприёма (в MHz) - 87(MHz)] / 0.1(сетка частот в MHz)

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 11:00:23

я уже так и понял что так надо считать 105-87=18 и в конце дробная часть. Спасибо за помощь.

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 11:04:08

Правильнее (105,4-87)/0,1=184 (номер канала).
Номер канала всегда 10бит и записывается по адресу 03H в биты с 15-го по 6-ой. 6-ой бит соответствует биту 0 в номере канала.
P.S.
А в программе проще считать, если частоты изначально умножены на 10 (точку на индикаторе поставить не сложно). К примеру, для вычисления номера канала: 1054-870=184 . Для вычисления частоты по номеру канала 184+870=1054 (частота приёма).

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 11:36:34

Сейчас на работе немного по другому пишу процедуру для вычисления канала по примеру (105-87)*10+дробь. т.к у меня целая и дробная часть содержаться в разных регистрах. Так мне кажется немного проще чем с 16 битными числами работать.

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 16:27:26

Да, пёс его знает, что кому проще...
Я хранил бы в памяти настроек станций номера каналов (один байт (два старших бита будете "доставлять нулями" для сетки частот 100kHz) + возможно, текстовое название канала), а при выводе частоты на индикатор пересчитывал бы канал>частота и "работал" бы с цифрами частот, умноженными на 10.
Если бы была "на борту" клавиатура для ввода частоты - десятичный ввод с клавиатуры с пересчётом в номер канала после подтверждения ввода. Т.Е., "основное число" - номер канала.
Но, это уже "как кому удобнее".
Лично я, ненавижу "лишние" операции умножение/деление когда можно обойтись без них.

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 23:42:00

Путем эксперементов выяснил , что в регистры 03L и 03H записывается частота с которой начинается поиск или вверх или вниз по диапазону. Если сигнал нормальный то включиться на записанном диапазоне, а если чуть слабее то нет и ведется поиск следующей станции. Не хочется возвращаться на TEA5767 из-за чувствительности. Т.к радио будет использоваться в качестве будильника в часах хотелось бы ,что бы включалась определенная станция. Какие есть FM микросхемы которые поддерживают прямую запись в них нужной станции ?

Re: Расчет частоты приема для RDA5807M

Пт янв 30, 2015 23:50:02

Скорее всего, в регистре 02H вы разрешаете поиск.
Проверьте.
P.S.
Поиск разрешён "по умолчанию".

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 08:35:56

да там включен поиск, но если его не включить то просто шипение и все.

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 08:39:27

То есть, если я вас правильно понял, при выключенном поиске (Seek) вы не можете настроиться на станцию?

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 09:14:02

именно так.
вот код принудительной записи.
так находит но на станцию ниже
rcall IIC_Start
ldi temp,0b00100000 ;адрес FM модуля с битом записи
rcall IIC_Send
ldi temp,0b11010011 ;02H байт
rcall IIC_Send
ldi temp,0b00000101 ;02L байт
rcall IIC_Send
ldi temp,0b10100010 ;103,2 настраивается на 101.5
rcall IIC_Send
ldi temp,0b01000000 ;03L байт
rcall IIC_Send
rcall IIC_Stop

а так не настраивается:
rcall IIC_Start
ldi temp,0b00100000 ;адрес FM модуля с битом записи
rcall IIC_Send
ldi temp,0b11010010 ;02H байт
rcall IIC_Send
ldi temp,0b00000101 ;02L байт
rcall IIC_Send
ldi temp,0b10100010 ;
rcall IIC_Send
ldi temp,0b01000000 ;03L байт
rcall IIC_Send
rcall IIC_Stop

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 10:30:11

Мы смотрим один и тот же pdf?
Код:
ldi temp,0b10100010 ;103,2 настраивается на 101.5
rcall IIC_Send
ldi temp,0b01000000 ;03L байт
rcall IIC_Send

Почему номер канала 1010001001b = 649d???
Это частота приёма 151,9MHz
----------
P.S.
Понял :)))
Вы забыли, что номер канала не 8, а 10бит.
Младший бит номера канала отметил красным цветом.

Вложения
RDA5807M_datasheet_v1.pdf
(756.73 KiB) Скачиваний: 651
Последний раз редактировалось Albert_V Сб янв 31, 2015 15:48:49, всего редактировалось 1 раз.

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 15:48:20

PDF смотрим один и тот же. Я этот бит пробовал и в 0 устанавливал и в 1. Результата никакого.

PS: в pdf ошибка там нет регистров 04L и 06L если записывать конфигурацию кристала без этих регистров то приемник не работает. Приходится в них записывать нули.
Последний раз редактировалось SergSV Сб янв 31, 2015 22:34:12, всего редактировалось 1 раз.

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 16:12:42

Номер канала - 10-ти битовое число!!!!!!!!!
Изображение
На картинке, в таблице, номера битов.

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 17:05:21

на счет 0Ah бит1 ошибся . он равен 0 при настройке, так же ка и бит0. Данные с этих регистров вывожу в двоичном коде на светодиодную матрицу, и не стой стороны считал начало 0 бита.
Да и станцию записывал я не правильно. Допустим частота 107.9 надо было записывать как в 03H=00110100 03L=01 , а я записывал в 03H=11010001 03L=00. После записи установил бит точной настройки и сбросил бит настройки и все заработало.
Albert_V спасибо за терпение и помощь.

Re: Расчет частоты приема для RDA5807M

Сб янв 31, 2015 23:40:22

Код для радио дописал. Единственное звук в самый минимум не уходит. При записи в регистр 05L в бит 3:0 значения 0000 звук по мануалу должен выключиться , а на деле не выключается.
Все модули для будущих часов отлаживаю на Atmega8A. Кнопки для изменения диапазона подключены в порт в бит 4 и 5. I2C стандартные выводы Atmega8A.

Может кому пригодится код на ассемблере для RDA5807M. RDS пока не делал. файл во вложении
Вложения
RDA5807M.txt
код
(7.06 KiB) Скачиваний: 525

Re: Расчет частоты приема для RDA5807M

Вс фев 01, 2015 04:01:24

SergSV писал(а):....При записи в регистр 05L в бит 3:0 значения 0000 звук по мануалу должен выключиться , а на деле не выключается....

К выходам LOUT/ROUT RDA5807M у вас подключены наушники или усилитель?

Re: Расчет частоты приема для RDA5807M

Вс фев 01, 2015 14:02:14

подключен усилитель.
Ответить