У мну RDA5807 вовсе отказывается работать, ничего не читается из регистров. Отсюда вопрос - нужно проделывать какие-то манипуляции с чипом (подача определенных уровней на SDA, SCL или RST) после включения? Или он сразу готов к работе с управлением по I2C?
Несколько лет назад баловался с ним, помню только, что все нормально работало. Но исходники посеял, и забыл что и как делал при включении. Очень уж много разных DSP чипов через руки прошло, все смешалось в памяти.
P.S. Инфа пишется в регистры RDA только последовательно во все регистры, или есть произвольный доступ? Я вроде как установку частоты писал в один регистр, не переписывая все остальные.
Сразу I²C работает. Есть и произвольный доступ (0x22 адрес), и последовательный (0x20), при котором начальный регистр всегда один и тот же (02h для записи и 0Ah для чтения)
...Или он сразу готов к работе с управлением по I2C?
Можно подключить I2C интерфейс (с подтягивающими резисторами к 3,3V) и запустить сканирование I2C шини. Чип ответит по каждому из трех адресов выше. И для работы: 1: инициализация, 2: новая частота, сканирование и т. д.
Сразу I²C работает. Есть и произвольный доступ (0x22 адрес), и последовательный (0x20), при котором начальный регистр всегда один и тот же (02h для записи и 0Ah для чтения)
Спасибо большое, выставил адрес 0x22 и все сразу заработало. Я, наверное, и раньше так делал, только запамятовал все. Пытался писать и читать регистры по отдельности по адресу 0x20 и, понятное дело, терпел неудачу.
И чтобы далеко не ходить, задам здесь еще один вопрос - нет ли такой же засады с адресами у Si4703? Нет ли у нее адреса, по которому возможен рандомный доступ к регистрам? А то я пытался писать в отдельные регистры Si4703 по адресу 0x20, ничего не происходит. И не читается оттуда ничего. Или только последовательная запись во все регистры у этого чипа?
И вот еще, где бы посмотреть описание регистров TEA5767? RDA5807 отзывается по адресу 0x60. Хочу попробовать ее в режиме TEA5767, но в даташите не нашел ничего про управляющие регистры. Program Manual для TEA5767 тоже не нашел, может плохо искал.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
нет ли такой же засады с адресами у Si4703? Нет ли у нее адреса, по которому возможен рандомный доступ к регистрам?
У Si4703 по даташиту только последовательный доступ - по адресу 0x20 (он же 0x11 в семибитном "ардуиновском" формате, где RW бит не считается).
Asmodey писал(а):
RDA5807 отзывается по адресу 0x60. Хочу попробовать ее в режиме TEA5767
Так себе идея, в родном режиме больше возможностей для управления. Регистры описаны в документе для TEA5767HN - должно легко гуглиться. Можете ещё и по моему проекту полазить в каталоге тюнера - там более-менее должно быть понятно. Для каждого тюнера есть достаточно автономная и портируемя связка .c, .h и ._regs.h файлов
Спасибо. Но чип Si7403 на моем модуле Arduino оказался неисправным. Вроде пишется что-то по адресу 0x20, но ничего не работает и с адреса 0x21 читаются только нули. Буду заказывать другие.
_________________ Астролябия-сама меряет, было бы что мерять!!!
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). (частично пользуюсь переводчиком БГ->РУ)
Сначала подключал ее к микроконтроллеру PIC16, пытался прочитать данные из регистра 0x00, где зашиты данные о модели чипа. Оттуда читались только нули. Пытался писать в регистры, включал питание и отключал mute. Даже щелчка не было в наушниках, какой обычно бывает при переходе из режима powerdown в powerup. При том я все делал как Program Manual для Si4703 рекомендует.
Решив, что делаю что-то не так, подключил модуль Si4703 к плате с ESP32 (та же Ардуино) и загрузил тестовый скетч PU2CLR_SI470X который сканирует весь диапазон и последовательно проигрывает все найденные радиостанции. Ни звука не услышал, в окне монитора COM-порта Arduino только начальная частота 87,5 МГц отобразилась. Логический анализатор показывает, что данные по шине I2C в чип записываются, а возвращаются при чтении только нули. Тот же анализатор показал, что переключение в режим I2C путем изменения уровней на линиях SDIO и Reset происходит при подаче питания происходит.
Ваш скетч попробую, но почти не сомневаюсь уже, что мне достался модуль с неработоспособной микросхемой.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Чип: к 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, чувствую, нужно писать в соответствующей теме .
Чип: к 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...
_________________ Астролябия-сама меряет, было бы что мерять!!!
Лично сомневаюсь в неработоспособности модуля. Они выдерживают всевозможные "злоупотребления" конструкцией и кодом ( ) и из такого количества заказов я не встречал бракованного. Включаю и на Ардуино, и на 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 шине. Проверьте хоть потребляемый ток чипа и напишите у Вас сколько. (+ транслейт)
veso74, ни в коем случае не хотел загружать вас своими проблемами. Но с данным экземпляром микросхемы Si4703 определенно что-то не так. Я в нее уже что только не загружал, строго следуя инструкциям из даташита и руководства по программированию. И свое, и чужое. Результат стабильно отрицательный, звука нет, нет даже шипения. Микросхема установлена на модуле для Arduino вместе с микросхемой УНЧ, подтягивающими и ограничительными резисторами, кварцевым резонатором и всеми необходимыми конденсаторами https://aliexpress.ru/item/32416541374. ... vkQAvD_BwE Монтаж на беспаечной макетной плате. Там монтировать нечего, две платы и несколько проводков.
Проверил работу кварцевого генератора с вашим скетчем немного переделанным под контроллер ESP32 . Генератор запускается после загрузки скетча, значит скетч правильно загружает значения в регистры Si4703, иначе бы генерации не было. Но звука нет.
Потребляемый модулем ток 1,5 mA как со скетчем, так и без него, в том числе и режиме Reset. Однозначно мертвый чип мне достался.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Если по коду непонятно, то суть в том, что перед использованием шины надо сделать сброс, так, чтобы при выходе из сброса (в момент, когда RST переходит из 0 в 1) на SDA был активный лог.0, а на SCL - лог.1. И уже после этого перевести SDA/SCL в режим входов и инициализировать аппаратный I²C.
Сброс шины 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 миллиампера и кушает. Кварцевый генератор при этом работает.
Корпус Si чипа: 20-pin QFN package. Была проблема с таким корпусом (64 QFN): I2C вообще не отвечала - один/несколько пинов не припаивались. Хороший флюс и паяльник устранили проблему. Прежде чем выбросить модуль, если возможно, то попробуйте опять припоять чип. Или слегка с термовоздушная паяльная станция. (+ транслейт)
Флюса добавил, грел феном пока корпус не "поплыл". Зубочисткой пошевелил, погрел еще немного. Флюс смыл, модуль в макетную плату вставил, наушники подключил, питание подал, скетч загрузил и... ничего. Даже не мяукнула
Модуль выбрасывать не буду. Закажу чипы Si4702, поставлю на плату модуля вместо дохлого 4703.
_________________ Астролябия-сама меряет, было бы что мерять!!!
Большое спасибо всем кто мне помогал. Получил чипы Si4702, поставил один вместо Si4703 на модуль с Алиэкспресс. Заработало с полпинка с девбордой ESP32, в том числе с немного подправленным под мои нужды скетчем от veso74 Микросхема была дефектная.
Радиокот лучший, с днюхой его
_________________ Астролябия-сама меряет, было бы что мерять!!!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения