FM радиоприемник на модуле RDA5807M
|
|
Unicorn |
Дата: Вт, 01.10.2019, 14:32 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 27.10.2014
Статус:
Offline
|
Приветствую всех. Пытаюсь разобраться как запустить и управлять модулем. Настроиться на радиостанции не получается, только шум в наушниках. Описание регистров модуля у китайцев весьма скудное, но более или менее понятное. Может кто уже пробывал управлять модулем на бэйсике ?
|
|
|
|
ivan_fd |
Дата: Вт, 01.10.2019, 15:01 | Сообщение # 2 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Покажите схему и ваш код. Так сложно понять, что у вас не получается.
|
|
|
|
anatol |
Дата: Ср, 02.10.2019, 11:30 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
вот здесь даташит
|
|
|
|
Unicorn |
Дата: Ср, 02.10.2019, 14:35 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 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 по результату одно и тоже, только слышен шум. Задаю минимальную громкость но в наушнике уровень шума не меняется. Насколько я понял китайскую документацию, то при таких настройках регистров модуль должен включится, автоматически начать поиск до ближайшей радиостанции, захватить ее частоту и настроится. В наушнике должен появится звук, а поиск другой станции прекратиться до момента пока не изменится бит в регистре отвечающий за поиск станций.
|
|
|
|
ivan_fd |
Дата: Ср, 02.10.2019, 16:30 | Сообщение # 5 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 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
Замечания:
±
На сайте с 23.09.2008
Статус:
Offline
|
Добрый день! Когда-то делал приёмник на RDA/ Свой код глянуть пока не могу. У Вас не вижу задержки 200...500ms после включения, перед загрузкой регистров RDA.
|
|
|
|
Unicorn |
Дата: Ср, 02.10.2019, 18:00 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 27.10.2014
Статус:
Offline
|
Цитата vsky ( ) У Вас не вижу задержки 200...500ms после включения, перед загрузкой регистров RDA. А как сделать эту задержку если модуль включается только после того как в регистре 02 в нулевом бите окажется 1 ? Или я не так что то понял ?
|
|
|
|
vsky |
Дата: Ср, 02.10.2019, 18:18 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
50
Замечания:
±
На сайте с 23.09.2008
Статус:
Offline
|
1)подаётся питание RDA , 2) задержка, 3) пишите в регистры Добавлено (02.10.2019, 18:20) --------------------------------------------- pauseus 500
|
|
|
|
Unicorn |
Дата: Чт, 03.10.2019, 00:04 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 27.10.2014
Статус:
Offline
|
Цитата vsky ( ) 1)подаётся питание RDA , 2) задержка, 3) пишите в регистры Понял. В программе, перед записью в регистры, есть пауза в 2 сек. Но с ней или без нее результат один и тот же.
|
|
|
|
vsky |
Дата: Чт, 03.10.2019, 10:07 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
50
Замечания:
±
На сайте с 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
'****************************************************************
|
|
|
|
ivan_fd |
Дата: Чт, 03.10.2019, 10:13 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Я забыл вас спросить, а зачем вам в битах конфигурации сторожевой таймер? Может он сбрасывает контроллер постоянно?
P.S: picbasicpro у меня нету, и я не знаю, может там програмно он сбрасывается??
|
|
|
|
vsky |
Дата: Чт, 03.10.2019, 10:14 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
50
Замечания:
±
На сайте с 23.09.2008
Статус:
Offline
|
по номеру станции берётся частота из списка 103.5MHz, 88.0MHz,103.0MHz,90.4MHz
|
|
|
|
ivan_fd |
Дата: Чт, 03.10.2019, 13:40 | Сообщение # 14 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Unicorn, по моему у меня есть такой модуль, где то дома. Посмотрю вечером, если есть попробую завтра.
|
|
|
|
Unicorn |
Дата: Чт, 03.10.2019, 16:08 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
25
Замечания:
±
На сайте с 27.10.2014
Статус:
Offline
|
Цитата vsky ( ) попробуйте вот это (регистры RDA и две подпрограммы) С Вашей конфигурацией регистров - шум, просто шум хорошо слышимый. С подпрограммами - на некоторых частотах шум пропадает вообще, на некоторых уровень шума не меняется.Добавлено (03.10.2019, 16:12) --------------------------------------------- ivan_fd Сторожевой таймер вкл. это затесалось от другого проекта настройка, его состояние на ситуацию не влияет, настройки чипа все равно задаю в программаторе. Если модуль найдется и несложно будет его попробовать то было бы неплохо, спасибо. Толи я не правильно делаю инициализацию модуля, толи модуль может быть бракованный. А новые, чтобы попробовать, приедут только к концу года.
|
|
|
|