Да лучше бы исходниками если не жалко Хочу на тиньке сделать или на чем нибудь таком мелком, купил ребенку конструктор электронный, там блок с FM радио простейший с кнопками туда/сюда и разумеется станцию он не помнит если питание снять, искать станцию вслепую в москве можно упариться, есть мысль туда запихнуть rda- модуль с тинькой, можно без индикации даже.
_________________ "Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл / "Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Здесь проще - число 0 соответствует минимальной частоте (например, 87.5МГц), числа 1, 2, 3 и т.д. - это шаги, например, по 50кГц. И минимум-максимум (диапазон приёма), и величина этого шага задаются в других регистрах.
The I²C interface has a fixed start register address (0x02h for write transfer and 0x0Ah for read transfer), and an internal incremental address counter. If register address meets the end of register file, 0x3Ah, register address will wrap back to 0x00h.)
И так далее по даташиту, п 2.5.
То есть, адрес начала передачи не задаётся. Любая новая запись всегда начинается с адреса 02H (нумерация по таблице в даташите), любое новое чтение - с адреса 0AH. Можно передать не все, а только несколько байт, остальные регистры сохранят своё значение.
Дождался модулей,но до железа пока не дошёл.Возник вопрос по отправке данных в модуль (уменя RDA 5807 M) для настройки частоты приёма. За это отвечает регистр 03H/L. С байтом 03Н вроде всё понятно:отправить эти 8 битов и всё,а вот как быть с байтом 03L??? Ведь за настройку частоты здесь отвечают только два старших бита:7й и 6й, и как я понял,эти 2 бита в процессе настройки должны изменяться,а остальные с 5го по 0й должны быть постоянными.Подскажите пожалуйста,как это сделать на Си? Спасибо...
Вся будущая посылка лежит в массиве wrBuf[8]. Функция rda5807Init() вызывается один раз на старте, забивая нужные регистры нужными данными. Функция rda5807SetFreq() собственно устанавливает частоту, меняя только нужные биты в этом массиве, не трогая остальные. Потом в её конце уже идёт посылка уже всех 8 байтов.
Код:
wrBuf[2] = chan >> 2; // в chan 10 бит, в wrBuf[2] посылаем старшие 8 бит wrBuf[3] &= 0x3F; // старшие 2 бита wrBuf[3] сначала обнуляем wrBuf[3] |= RDA5807_TUNE | ((chan & 0x03) << 6); // а потом записываем младшие 3 бита chan в них
Помогите, пожалуйста, понять, в МК я слаб) Собираю радио на основе китайской платы, там Atmega16 + 1602 + модуль на TEA5767. Т.к. мне нужно от 50 МГц, а TEA не позволяет, поменял модуль на RDA5807M.
Подключил для отладки модуль на RDA5807M к Raspberry PI по i2c, запустил i2cdetect -y 1 - и он показал, что RDA у меня сидит на 0x60, т.е. как и TEA5767. Посылая команды туда, настраиваюсь на станции, т.к. всё ОК. А почему же по адресам, специфичным для 5807M, не видно её? Читаю в инете вот что:
Цитата:
Интерфейс с адресами 0x20/0x21 - это интерфейс rda5800, а НЕ rda5807! Для того, чтобы не мучиться с последовательными чтением/записью регистров, надо использовать другой интерфейс, с адресами 0x22/0x23 - он специально для rda5807 был добавлен! Всего в RDA5807 три интерфейса: a) Address 0x60<<1 (TEA5767 compatible mode) b) Address 0x10<<1 (sequential access / RDA5800 mode) c) Address 0x11<<1 (random access / RDA5807 mode)
В начале вроде про 0x22/0x23 говорится, а в пункте c) - про 0x11. Всё запуталось у меня(
В пункте c) говорится как раз про 0x22 (0x11 << 1).
Некоторое разночтение возникает из-за того, что это можно представить в виде: Запись: шлём в шину 0x11 и потом шлём бит 0 (функия вроде write(addr); Чтение: шлём в шину 0x11 и потом шлём бит 1 (функция вроде read(addr); а можно в виде: Запись: пишем в шину 0x22 (функция вроде send(addr): Чтение: пишем в шину 0x23 (функция вроде send(addr + 1). Второй вариант адресации чаще применяется в случае "чистого C", первый почему-то приняли ардуинщики.
не подскажете ли, почему на моей шине i2c она по адресу 0x60 определяется, а не по этому же 0x22? Ведь если я ей, сидящей на 0x60, пошлю байт на 0x22, она же не ответит, видимо...
Я у себя использовал адрес 0х20, это родной для RDA5807M, именно он описан в даташите. Также она работает с 0xC0 - в режиме TEA5767. Откуда Вы взяли 0x22 - без понятия.
Я у себя использовал адрес 0х20, это родной для RDA5807M, именно он описан в даташите. Также она работает с 0xC0 - в режиме TEA5767. Откуда Вы взяли 0x22 - без понятия.
Так из цитаты в первом вопросе, из варианта c) там же "address 0x11" (а Вы объяснили, что это аналогично 0x22) вот я и понимаю, что 0x22 это адрес (address) на шине i2c, в который нужно посылать данные. В отличие от 0x60, по которому сейчас у меня RDA5807M работает в режиме совместимости.
Из цитаты - это понятно. Вопрос в происхождении цитаты.
Коль скоро у Вас работает по 0x60 адресу, значит, Вы используете в "ардуиновское" представление адресации, в котором бит чтения/записи не входит в сам адрес. Это тот же 0xC0 адрес в нормальном представлении.
Вы бы лучше выдержки из кода привели, как у Вас работает, а как нет. Там ведь мало поменять адрес, там и данные совершенно другие посылать надо.
Из цитаты - это понятно. Вопрос в происхождении цитаты.
Коль скоро у Вас работает по 0x60 адресу, значит, Вы используете в "ардуиновское" представление адресации, в котором бит чтения/записи не входит в сам адрес. Это тот же 0xC0 адрес в нормальном представлении.
Вы бы лучше выдержки из кода привели, как у Вас работает, а как нет. Там ведь мало поменять адрес, там и данные совершенно другие посылать надо.
Куска кода у меня пока нет, я пытаюсь переделать программу, написанную для Atmega16 для TEA5767 в поставке платы из Китая. http://ru.aliexpress.com/item/ATmega16-ATmeg-a32-TEA5767-TDA1308-ISP-5V-FM-Radio-AVR-Development-Board-MCU/2038551914.html Готового кода для связки RDA+1602+Mega16 пока не удалось найти. А адрес 0x60 у меня всплыл потому, что я подключил модуль к Raspberry Pi, и хотел увидеть, что плата найдётся не только по 0x60, но и по 0x20 (или 0x22) - т.е. что в программе ic2detect я увижу все 3 её интерфейса. Но, скорее всего,что-то не понимаю и делаю не так.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения