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

Re: FM приёмник RDA5807

Ср сен 29, 2021 14:19:11

У мну RDA5807 вовсе отказывается работать, ничего не читается из регистров. Отсюда вопрос - нужно проделывать какие-то манипуляции с чипом (подача определенных уровней на SDA, SCL или RST) после включения? Или он сразу готов к работе с управлением по I2C?

Несколько лет назад баловался с ним, помню только, что все нормально работало. Но исходники посеял, и забыл что и как делал при включении. Очень уж много разных DSP чипов через руки прошло, все смешалось в памяти.

P.S. Инфа пишется в регистры RDA только последовательно во все регистры, или есть произвольный доступ? Я вроде как установку частоты писал в один регистр, не переписывая все остальные.

Времени 600 ms для RDA мало?


Вот что из памяти не выветрилось - таймаут после подачи питания я ставил 1000 мс - 1 секунду.

Re: FM приёмник RDA5807

Ср сен 29, 2021 14:42:50

Сразу I²C работает. Есть и произвольный доступ (0x22 адрес), и последовательный (0x20), при котором начальный регистр всегда один и тот же (02h для записи и 0Ah для чтения)

Re: FM приёмник RDA5807

Ср сен 29, 2021 14:50:01

... аймаут после подачи питания я ставил 1000 мс - 1 секунду.

Да, именно так и сделал: выставил 1 секунду и несколько дней радио стартирует нормально, вопрос для себя считаю проясненным.
...Инфа пишется в регистры RDA только последовательно во все регистры, или есть произвольный доступ?

I2C адрес (7 bit): 0x10 (sequential), 0x11 (random), 0x60 (TEA5767 compatible).
Использую 0x11, с произвольным доступом.
...Или он сразу готов к работе с управлением по I2C?

Можно подключить I2C интерфейс (с подтягивающими резисторами к 3,3V) и запустить сканирование I2C шини. Чип ответит по каждому из трех адресов выше. И для работы: 1: инициализация, 2: новая частота, сканирование и т. д.

Re: FM приёмник RDA5807

Ср сен 29, 2021 19:59:44

Сразу I²C работает. Есть и произвольный доступ (0x22 адрес), и последовательный (0x20), при котором начальный регистр всегда один и тот же (02h для записи и 0Ah для чтения)

I2C адрес (7 bit): 0x10 (sequential), 0x11 (random), 0x60 (TEA5767 compatible)

Спасибо большое, выставил адрес 0x22 и все сразу заработало. Я, наверное, и раньше так делал, только запамятовал все. Пытался писать и читать регистры по отдельности по адресу 0x20 и, понятное дело, терпел неудачу.

И чтобы далеко не ходить, задам здесь еще один вопрос - нет ли такой же засады с адресами у Si4703? Нет ли у нее адреса, по которому возможен рандомный доступ к регистрам? А то я пытался писать в отдельные регистры Si4703 по адресу 0x20, ничего не происходит. И не читается оттуда ничего. Или только последовательная запись во все регистры у этого чипа?

И вот еще, где бы посмотреть описание регистров TEA5767? RDA5807 отзывается по адресу 0x60. Хочу попробовать ее в режиме TEA5767, но в даташите не нашел ничего про управляющие регистры. Program Manual для TEA5767 тоже не нашел, может плохо искал.

Re: FM приёмник RDA5807

Ср сен 29, 2021 20:34:58

На 1 странице этой темы архив " Rda5807 FM Stereo LOW-IF Digital Radio Module DIY For MP3MP4 Player I2C SPI NEW (OT275).pdf [1.3 MiB]"

Re: FM приёмник RDA5807

Чт сен 30, 2021 08:40:04

Asmodey писал(а):нет ли такой же засады с адресами у Si4703? Нет ли у нее адреса, по которому возможен рандомный доступ к регистрам?
У Si4703 по даташиту только последовательный доступ - по адресу 0x20 (он же 0x11 в семибитном "ардуиновском" формате, где RW бит не считается).
Asmodey писал(а):RDA5807 отзывается по адресу 0x60. Хочу попробовать ее в режиме TEA5767
Так себе идея, в родном режиме больше возможностей для управления. Регистры описаны в документе для TEA5767HN - должно легко гуглиться.
Можете ещё и по моему проекту полазить в каталоге тюнера - там более-менее должно быть понятно. Для каждого тюнера есть достаточно автономная и портируемя связка .c, .h и ._regs.h файлов

Re: FM приёмник RDA5807

Чт сен 30, 2021 11:24:45

У Si4703 по даташиту только последовательный доступ - по адресу 0x20

Печально... но не фатально. Ну что же, буду переписывать все регистры.

Re: FM приёмник RDA5807

Чт сен 30, 2021 13:14:20

...
... Ну что же, буду переписывать все регистры.

Не все.

WRITE: 0x02 .. 0x07
READ: 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00 .. 0x09
для RDS, RSSI, инфо для stereo indicator, read channel: READ: 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F

Re: FM приёмник RDA5807

Пт окт 01, 2021 12:49:45

Спасибо. Но чип Si7403 на моем модуле Arduino оказался неисправным. Вроде пишется что-то по адресу 0x20, но ничего не работает и с адреса 0x21 читаются только нули. Буду заказывать другие.

Re: FM приёмник RDA5807

Пт окт 01, 2021 13:20:32

Asmodey, как Вы узнали, что Si7403 не работает? Думаю с загрузки одного строка не можете легко протестировать чип, чтобы установить работает он или нет.

Перед написанием собственного кода проще протестировать свой чип на работоспособность с проектом из интернете, который, безусловно, работает.
---
(пишу для Ардуино, не знаю, с каким микроконтроллером пытаетесь).
1. Сканирайте I2C шины, Arduino с скетч: I2C Scanner. Si7403 будет ответит по адреса 0x10.

тестирование Si - прием на одной частоте:
1. вкл. входа Si RESET к высокого уровня
2. инициализировайте чип со значениями регистров
3. загрузите нужную частоту в порядке, описанном в документации и если все нормально с радиоприема, то чип рабочий.
---
Ниже: из начало моих експериментов: радиоприем на одной частоте 103,3 MHz, Si RESET к Arduino A3 (+ рез. делитель 5V->3,3V). (частично пользуюсь переводчиком БГ->РУ)
Вложения
si_03.zip
(685 байт) Скачиваний: 203

Re: FM приёмник RDA5807

Пт окт 01, 2021 14:25:22

Asmodey, как Вы узнали, что Si7403 не работает?

Сначала подключал ее к микроконтроллеру PIC16, пытался прочитать данные из регистра 0x00, где зашиты данные о модели чипа. Оттуда читались только нули. Пытался писать в регистры, включал питание и отключал mute. Даже щелчка не было в наушниках, какой обычно бывает при переходе из режима powerdown в powerup. При том я все делал как Program Manual для Si4703 рекомендует.

Решив, что делаю что-то не так, подключил модуль Si4703 к плате с ESP32 (та же Ардуино) и загрузил тестовый скетч PU2CLR_SI470X который сканирует весь диапазон и последовательно проигрывает все найденные радиостанции. Ни звука не услышал, в окне монитора COM-порта Arduino только начальная частота 87,5 МГц отобразилась. Логический анализатор показывает, что данные по шине I2C в чип записываются, а возвращаются при чтении только нули. Тот же анализатор показал, что переключение в режим I2C путем изменения уровней на линиях SDIO и Reset происходит при подаче питания происходит.

Ваш скетч попробую, но почти не сомневаюсь уже, что мне достался модуль с неработоспособной микросхемой.

Re: FM приёмник RDA5807

Пт окт 01, 2021 15:22:19

Дайте фото тестовой постановки, если можно.

Чип: к 3,3V? 5->3,3V конвертор есть по I2C? Или контролер на 3,3V?
При 5 вольтах, даже за ненадолго, я сжег одна Si. Нужно быть особенно осторожным.

Можете проверить генерацию кварца с помощью осциллографа.
Но Вы тоже должны позаботиться об этом (+ транслейт).
Запись в регистр 0x07:
reg[0x07] = 0x8100; // AN230, page 12: set the XOSCEN bit to power up the crystal

...пытался прочитать данные из регистра 0x00

чтение: читаем все регистры вместе, точно в определенном порядке!
READ: START -> 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00 .. 0x09 -> END
Не по произвольному доступу.

Целом велика вероятность неправильного соблюдения стартовой последовательности DATA к Si регистров. Отсюда невозможность загрузить частоту приема. Разбейте шаги на элементарные, проверьте возможные отклонения, прежде чем делать общий вывод: работает микросхема или нет. (+ транслейт).

PS: O Si4702/03 пишем offtopic, чувствую, нужно писать в соответствующей теме :).

Re: FM приёмник RDA5807

Пт окт 01, 2021 17:55:45

Дайте фото тестовой постановки, если можно.

Чип: к 3,3V? 5->3,3V конвертор есть по I2C? Или контролер на 3,3V?
PIC микроконтроллер и Si4703 питались от 3,3 V. Arduino ESP32 тоже питается напряжением 3,3 вольта после стабилизатора прямо на плате шилда. Этим же напряжением я питал модуль Si. Нет, с напряжениями все в порядке, проверяю все по несколько раз перед включением.

Можете проверить генерацию кварца с помощью осциллографа.
Но Вы тоже должны позаботиться об этом (+ транслейт).
Запись в регистр 0x07:
reg[0x07] = 0x8100; // AN230, page 12: set the XOSCEN bit to power up the crystal

...пытался прочитать данные из регистра 0x00

чтение: читаем все регистры вместе, точно в определенном порядке!
READ: START -> 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00 .. 0x09 -> END
Не по произвольному доступу.
Регистр 0x00 я так и читал: Start-Adress-Read Hight Byte 0x00-Read Low Byte 0x00-Stop. Использованный мною для теста скетч Ардуино все это учитывает. По отзывам пользователей скетч работает правильно. С этим скетчем многие испытывали обсуждаемый модуль. Причина, вероятно, в неисправной Si4703...

Re: FM приёмник RDA5807

Пт окт 01, 2021 19:50:04

Код:
Причина, вероятно, в неисправной Si4703...

Лично сомневаюсь в неработоспособности модуля. Они выдерживают всевозможные "злоупотребления" конструкцией и кодом ( :) ) и из такого количества заказов я не встречал бракованного. Включаю и на Ардуино, и на PIC. Но без публикации Вашего кода, фото, деталей конструкции или хотя бы точные ссылки на то, что Вы пробовали, больше не могу гадать. А вероятная причина неработоспособностю мне интересна сама по себе.
---
Из любопытства я попробовал PU2CLR/SI470X/examples/si470x_01_serial_monitor -> si470x_00_CIRCUIT_TEST и si470x_01_RDS с Arduino UNO 5V, без внешних подтягивающих резисторов, с рез. делитель к RESET. Радио работает. Ток Si без кода: 0,13 mA, с загруженным кодом 14 mA в 3,3V шине. Проверьте хоть потребляемый ток чипа и напишите у Вас сколько. (+ транслейт)

https://github.com/pu2clr/SI470X

Serial monitor:
You are tuned on 10330 MHz | RSSI: 043 dbUv | Vol: 06 | Stereo: Yes

Re: FM приёмник RDA5807

Пт окт 01, 2021 22:53:17

veso74, ни в коем случае не хотел загружать вас своими проблемами. Но с данным экземпляром микросхемы Si4703 определенно что-то не так. Я в нее уже что только не загружал, строго следуя инструкциям из даташита и руководства по программированию. И свое, и чужое. Результат стабильно отрицательный, звука нет, нет даже шипения. Микросхема установлена на модуле для Arduino вместе с микросхемой УНЧ, подтягивающими и ограничительными резисторами, кварцевым резонатором и всеми необходимыми конденсаторами https://aliexpress.ru/item/32416541374. ... vkQAvD_BwE Монтаж на беспаечной макетной плате. Там монтировать нечего, две платы и несколько проводков.

Проверил работу кварцевого генератора с вашим скетчем немного переделанным под контроллер ESP32 . Генератор запускается после загрузки скетча, значит скетч правильно загружает значения в регистры Si4703, иначе бы генерации не было. Но звука нет.

Потребляемый модулем ток 1,5 mA как со скетчем, так и без него, в том числе и режиме Reset. Однозначно мертвый чип мне достался.

Re: FM приёмник RDA5807

Сб окт 02, 2021 06:00:56

Сброс шины I²C тюнера делали? Он требует определённых манипуляций с сигналами SDA, SCL и RST перед началом обычной работы по шине.

https://github.com/WiseLord/ampcontrol- ... pins.c#L42

https://github.com/WiseLord/ampcontrol/ ... main.c#L28

В даташите про это написано.

Если по коду непонятно, то суть в том, что перед использованием шины надо сделать сброс, так, чтобы при выходе из сброса (в момент, когда RST переходит из 0 в 1) на SDA был активный лог.0, а на SCL - лог.1. И уже после этого перевести SDA/SCL в режим входов и инициализировать аппаратный I²C.

Re: FM приёмник RDA5807

Сб окт 02, 2021 13:20:59

Сброс шины I²C тюнера делали? Он требует определённых манипуляций с сигналами SDA, SCL и RST перед началом обычной работы по шине.

Да, на это я сразу же обратил внимание, поскольку Si4702/03 умеют работать как с I2C так и со SPI интерфейсом. Все как на картинке (и как рекомендует документация) - сначала сброс установкой низкого уровня на RST, затем высокий уровень RST при низком уровне на SDA. Затем устанавливается высокий уровень на SDA, чтобы не было неоднозначностей при включении I2C интерфейса.


Интерфейс в режим I2C переключается, мне удалось наконец посредством Arduino прочитать идентификационные регистры Si4703. Два регистра - четыре байта, в которых записано 0x12, 0x42 и 0x12, 0x00. Первые два байта (регистр 0x00) это Part Number и Manufacturer ID, вторые два (регистр 0x01) идентификатор чипа Si4703C19 в состоянии ENABLE = 0.



Так что I2C работает. И в регистры все пишется, скетч который предоставил veso74 нужные значения в регистры пишет, они потом оттуда читаются. Но, модуль ни звука не издает. И потребления нет практически, 1,5 мА всего потребляет модуль от источника питания. При том, что там еще микросхема УНЧ установлена, которая, похоже, почти все эти 1,5 миллиампера и кушает. Кварцевый генератор при этом работает.
Вложения
Read.JPG
(37.21 KiB) Скачиваний: 235

Re: FM приёмник RDA5807

Сб окт 02, 2021 15:33:00

Корпус Si чипа: 20-pin QFN package. Была проблема с таким корпусом (64 QFN): I2C вообще не отвечала - один/несколько пинов не припаивались. Хороший флюс и паяльник устранили проблему. Прежде чем выбросить модуль, если возможно, то попробуйте опять припоять чип. Или слегка с термовоздушная паяльная станция. (+ транслейт)

Re: FM приёмник RDA5807

Сб окт 02, 2021 19:45:50

Флюса добавил, грел феном пока корпус не "поплыл". Зубочисткой пошевелил, погрел еще немного. Флюс смыл, модуль в макетную плату вставил, наушники подключил, питание подал, скетч загрузил и... ничего. Даже не мяукнула :(

Модуль выбрасывать не буду. Закажу чипы Si4702, поставлю на плату модуля вместо дохлого 4703.

Re: FM приёмник RDA5807

Сб окт 16, 2021 03:09:48

Большое спасибо всем кто мне помогал. Получил чипы Si4702, поставил один вместо Si4703 на модуль с Алиэкспресс. Заработало с полпинка с девбордой ESP32, в том числе с немного подправленным под мои нужды скетчем от veso74 :) Микросхема была дефектная.

Радиокот лучший, с днюхой его :beer:
Ответить