Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: ivan_fd  
Форум Picbasic.ru » Программирование МК » PicBasicPro » FM радиоприемник на модуле RDA5807M (PIC16F84A + RDA5807M)
FM радиоприемник на модуле RDA5807M
Unicorn Дата: Вт, 01.10.2019, 14:32  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 25
Репутация: 6   ±
Замечания:   ±
На сайте с 27.10.2014

Статус: Offline

Приветствую всех.
Пытаюсь разобраться как запустить и управлять модулем. Настроиться на радиостанции не получается, только шум в наушниках. Описание регистров модуля у китайцев весьма скудное, но более или менее понятное. Может кто уже пробывал управлять модулем на бэйсике ?
ЯНДЕКС Дата: 01.10.2019
ivan_fd Дата: Вт, 01.10.2019, 15:01  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Покажите схему и ваш код. Так сложно понять, что у вас не получается.
anatol Дата: Ср, 02.10.2019, 11:30  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

вот здесь даташит
Unicorn Дата: Ср, 02.10.2019, 14:35  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 25
Репутация: 6   ±
Замечания:   ±
На сайте с 27.10.2014

Статус: Offline

Регистры модуля 16 разрядные, передается сначала старший разряд, потом младший. Режим записи регистров задается кодом $20 последовательная запись во все регистры или $22 непосредственная запись в каждый регистр.
Настройки регистров.
Регистр 02: поиск станций вкл., поиск снизу в верх, повтор поиска при достижении границы диапазона, модуль вкл., кварц 32768, RDS выкл.
Регистр 03: стартовая частота 92.4 МГц, настройка на станцию вкл., диапазон 87-108 МГц, шаг настройки 100 кГц
Регистр 04: по умолчанию 0
Регистр 05: антенный вход вкл., громкость максимум
Регистр 06: по умолчанию 0

@ device xt_osc, wdt_on, protect_off, pwrt_off 
DEFINE OSC 4

SCL var PORTB.4 'шина I2C, такт SCL
SDA var PORTB.5 'шина I2C, данные SDA

TRISB = %00000000
PORTB = %00000000
TRISA = %00000000
PORTA = %00000000

RG02H var byte 'регистр 02, старший разряд
RG02L var byte 'регистр 02, младший разряд
RG03H var byte
RG03L var byte
RG04H var byte
RG04L var byte
RG05H var byte
RG05L var byte
RG06H var byte
RG06L var byte
RG07H var byte
RG07L var byte
RG08H var byte
RG08L var byte

RG02H = %11000001
RG02L = %00000001
RG03H = %00001101
RG03L = %10010000 
RG04H = %00000000
RG04L = %00000000
RG05H = %10001000
RG05L = %10001111
RG06H = %00000000
RG06L = %00000000
'RG07H = %01000000 
'RG07L = %00000001
'RG08H = %00000000
'RG08L = %10101001

Pause 2000

'--- вариант 1 последовательная запись в регистры ---
I2CWRITE SDA,SCL,$20,[RG02H,RG02L,RG03H,RG03L,RG04H,RG04L,RG05H,RG05L,RG06H,RG06L]
'--------------------------------------------------------

'--- вариант 2 непосредственная запись в каждый регистр ---
'I2CWRITE SDA,SCL,$22,$02,[RG02H,RG02L]
'I2CWRITE SDA,SCL,$22,$03,[RG03H,RG03L]
'I2CWRITE SDA,SCL,$22,$04,[RG04H,RG04L]     
'I2CWRITE SDA,SCL,$22,$05,[RG05H,RG05L]
'I2CWRITE SDA,SCL,$22,$06,[RG06H,RG06L]
''I2CWRITE SDA,SCL,$22,$07,[RG07H,RG07L]
''I2CWRITE SDA,SCL,$22,$08,[RG08H,RG08L]
'-------------------------------------

end

После подачи питания в наушнике слышен тихий писк, потом громкий щелчек и шум (шуршание), как будто бы приемник настроился между радиостанциями. Пробовал задавать другие стартовые частоты, результата нет, хотя на обычный радиоприемник эти станции уверенно ловятся. Вариант 1 и 2 по результату одно и тоже, только слышен шум. Задаю минимальную громкость но в наушнике уровень шума не меняется.
Насколько я понял китайскую документацию, то при таких настройках регистров модуль должен включится, автоматически начать поиск до ближайшей радиостанции, захватить ее частоту и настроится. В наушнике должен появится звук, а поиск другой станции прекратиться до момента пока не изменится бит в регистре отвечающий за поиск станций.

Прикрепления: 1506836.jpg (24.0 Kb)
ivan_fd Дата: Ср, 02.10.2019, 16:30  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Если у Вас есть Лог. анализатор, то посмотрите шлет ли PIC нормально команды.
Или попробуйте так:

Пошлите чипу такие команды:

Код
RG02H = %11010010;
RG02L = %10001101;
RG03H =  Тут посчитайте свою частоту, точно на какой у вас идет вещание 
RG03L =              и поставьте бит TUNE = Enable
RG04H = %00000010;
RG04L = %00000000;
RG05H = %00001000;
RG05L = %10001111;

Pause 2000

'--- вариант 1 последовательная запись в регистры ---
I2CWRITE SDA,SCL,$20,[RG02H,RG02L,RG03H,RG03L,RG04H,RG04L,RG05H,RG05L]
'--------------------------------------------------------


Пример расчета частоты:
102.4
Frq = 1024 - 870 = 154

Или:

Frq = (102.4 - 87) * 1000 / 100 = 154

RG03H = Frq >> 2
RG03L = (Frq<<6) | %00010000
Unicorn Дата: Ср, 02.10.2019, 17:11  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 25
Репутация: 6   ±
Замечания:   ±
На сайте с 27.10.2014

Статус: Offline

Попробовал Ваш код в регистрах.
Частоту 92.4 МГц, а потом и 103.9 МГц, рассчитал так
924 - 870 = 54 или 110110 в регистр пишу 0000110110
1039 - 870 = 169 или 10101001 в регистр пишу 0010101001
бит TUNE = 1 всегда
Результат - стало хуже, в наушниках шум ощущается как более высокочастотный и тихий по сравнению с моим вариантом. Пробовал непосредственно указывать частоту через регистры 07 и 08 с запретом на поиск - результат тот же, только шум.
(лог. анализатора нет, но этот же пик работает с DS1307 по I2C без проблем, преобразователь логических уровней на полевых транзисторах весьма популярное схемное решение и вроде сомневаться в нем не стоит)

Сообщение отредактировал Unicorn - Ср, 02.10.2019, 17:13
vsky Дата: Ср, 02.10.2019, 17:20  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 50
Репутация: 0   ±
Замечания:   ±
На сайте с 23.09.2008

Статус: Offline

Добрый день!
Когда-то делал приёмник на RDA/
Свой код глянуть пока не могу.
У Вас не вижу задержки 200...500ms после  включения, перед загрузкой регистров RDA.
Unicorn Дата: Ср, 02.10.2019, 18:00  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 25
Репутация: 6   ±
Замечания:   ±
На сайте с 27.10.2014

Статус: Offline

Цитата vsky ()
У Вас не вижу задержки 200...500ms после  включения, перед загрузкой регистров RDA.

А как сделать эту задержку если модуль включается только после того как в регистре 02 в нулевом бите окажется 1 ? Или я не так что то понял ?
vsky Дата: Ср, 02.10.2019, 18:18  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 50
Репутация: 0   ±
Замечания:   ±
На сайте с 23.09.2008

Статус: Offline

1)подаётся питание RDA , 2) задержка, 3) пишите в регистры

Добавлено (02.10.2019, 18:20)
---------------------------------------------
pauseus 500

Unicorn Дата: Чт, 03.10.2019, 00:04  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 25
Репутация: 6   ±
Замечания:   ±
На сайте с 27.10.2014

Статус: Offline

Цитата vsky ()
1)подаётся питание RDA , 2) задержка, 3) пишите в регистры

Понял. В программе, перед записью в регистры, есть пауза в 2 сек. Но с ней или без нее результат один и тот же.
vsky Дата: Чт, 03.10.2019, 10:07  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 50
Репутация: 0   ±
Замечания:   ±
На сайте с 23.09.2008

Статус: Offline

попробуйте вот это (регистры RDA и две подпрограммы)


Добавлено (03.10.2019, 10:09)
---------------------------------------------
RDA02h=%11100000

RDA02l=%00000101

RDA03h=%00100100

RDA03l=%01010000

RDA04h=%00000010

RDA04l=%00000000

RDA05h=%10001000

RDA05l=%10001111

RDA06h=%00000000

RDA06l=%00000000

RDA07h=%01000000

RDA07l=%00000010

''****************************************************************   

STATION2FREQ:

   lookup2 station,[1035,880,1030,904], freq

   freq=freq-870

   RDA03h=freq>>2

   RDA03l=freq<<6

   RDA03l=RDA03l|%00010000

   return

''****************************************************************

LOAD_TUNER:

   i2Cwrite SDA,SCL,$20,[RDA02h,RDA02l,RDA03h,RDA03l,RDA04h,RDA04l,RDA05h,RDA05l,RDA06h,RDA06l,RDA07h,RDA07l]

   return

'****************************************************************

ЯНДЕКС Дата: 03.10.2019
ivan_fd Дата: Чт, 03.10.2019, 10:13  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Я забыл вас спросить, а зачем вам в битах конфигурации сторожевой таймер?
Может он сбрасывает контроллер постоянно?

P.S: picbasicpro у меня нету, и я не знаю, может там програмно он сбрасывается??
vsky Дата: Чт, 03.10.2019, 10:14  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 50
Репутация: 0   ±
Замечания:   ±
На сайте с 23.09.2008

Статус: Offline

по номеру станции берётся частота из списка 103.5MHz, 88.0MHz,103.0MHz,90.4MHz
ivan_fd Дата: Чт, 03.10.2019, 13:40  |                                                                                                                Сообщение # 14
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Unicorn,  по моему у меня есть такой модуль, где то дома. Посмотрю вечером, если есть попробую завтра.
Unicorn Дата: Чт, 03.10.2019, 16:08  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 25
Репутация: 6   ±
Замечания:   ±
На сайте с 27.10.2014

Статус: Offline

Цитата vsky ()
попробуйте вот это (регистры RDA и две подпрограммы)

С Вашей конфигурацией регистров - шум, просто шум хорошо слышимый. С подпрограммами - на некоторых частотах шум пропадает вообще, на некоторых уровень шума не меняется.

Добавлено (03.10.2019, 16:12)
---------------------------------------------
ivan_fd
Сторожевой таймер вкл. это затесалось от другого проекта настройка, его состояние на ситуацию не влияет, настройки чипа все равно задаю в программаторе. Если модуль найдется и несложно будет его попробовать то было бы неплохо, спасибо. Толи я не правильно делаю инициализацию модуля, толи модуль может быть бракованный. А новые, чтобы попробовать, приедут только к концу года.

Форум Picbasic.ru » Программирование МК » PicBasicPro » FM радиоприемник на модуле RDA5807M (PIC16F84A + RDA5807M)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: