![]() |
Цитата:
|
Дроссель нужен для развязки по ВЧ. Антенну к С5(предварительно оторвать от разъема и дросселя), а дроссель можно выкинуть и поставить перемычку или оставить. Работать будет в любом случае.
|
Цитата:
|
Подскажите: Si4703, RDA5807M, TEA5767 - какой из них больше всего подходит для carpc? Сам пока играюсь с модулем на RDA типа такого, и этой библиотеки, так он дома, на кусок провода длинной 20 мм принимает треть фм станций в моем городе, значит в машине будут сплошные помехи? Или экранировка (например металлический корпус) спасет?
|
На деле они все для бытового применения. Залог уверенного приема НОРМАЛЬНАЯ антенна, а не кусок провода.
Для теста возьмите любую магнитолу и проведите этот же тест дома на этот же огрызок провода. Разница, думаю, будет не существенная. |
Цитата:
|
Цитата:
|
Цитата:
а автопоиск нормально ловит? |
Цитата:
з.ы. 5V=>3.3V получаю с помощью LP2950ACZ-3.3G з.ы. №2: в RDA5807M как раз i2c, откуда rx/tx? o_O |
Цитата:
|
Доброго времени суток! А кто нибудь пробовал подключать к Radxa fm модуль на si4731 через I2C?
|
Почему нельзя сразу не подключить к I2C к плате, не используя ардуино?
|
Мп1905 в наших краях купить не удалось
Купил теа5767. Подключил по мануалу к про микро (леонардо), залил тестовый скетч (взят с сайта ардуины в разделе данного модуля, настроен на одну частоту)... тишина... ни щелков ни треска ни шипения. Сижу и туплю, или что то не дописано в мануале или теа5767 не рабочая. На форуме ардуино посоветовали залить скетч i2c сканера и посмотреть видется модуль подключеный к ардуине. Залил, потестил, да видется, адрес устройства показывает. Что и как делать дальше не понимаю, где искать косяк... |
Есть сейчас аналоговое радио SONY (TYX-??). Все вроде отлично работает - но нет РДС... По сравнению с ней si4703 будет сильно отличаться? Приемники массовые - сравнивал кто? Интересует вариант не в городе, а при удалении - при слабом сигнале.
|
Цитата:
https://www.silabs.com/documents/pub...otes/AN243.pdf Читаю 8 значное поле группа 0A и 64 значное поле группа 2A. Вот старое видео https://yadi.sk/i/OdWArynw3PFJvE, сейчас все глаже. |
Ну что после прочтения менуала разбрались с RDS ?
Если нет, могу скинуть функцию по чтению RDS. Только придется немного доработать под себя. Я регисты читаю по 8 бит, а не перевожу их в 16 как в библиотеке. На ардуино и на stm все читает на ура. Кстати можно еще время читать и статус привязки станции. Прокатит на всех чипах пхожих |
так как чтение регистров из чипа начинается с 0x0A и далее инкримент, читаю по 8 бит без сдвига для создания 16 битных регистров, читать все смысла нет, нужны только с 0x0A по 0x0F, то есть 6 по 16 бит или 12 по 8 бит.
бит RDSR не использую, так как читаю по прерыванию. uint8_t Si4709_read[12]; #define RDSR Si4709_read[0x00] & 0x80 // 0x0A #define RDS_0A Si4709_read[0x06] >> 3 == 0 // 0x0D #define RDS_2A Si4709_read[0x06] >> 3 == 4 // 0x0D #define RDS_0A_ID Si4709_read[0x07] & 0x03 // 0x0D #define RDS_2A_ID Si4709_read[0x07] & 0x0F // 0x0D #define RDS_C_h Si4709_read[0x08] // 0x0E #define RDS_C_l Si4709_read[0x09] // 0x0E #define RDS_D_h Si4709_read[0x0A] // 0x0F #define RDS_D_l Si4709_read[0x0B] // 0x0F uint8_t Si4709_write[8] = {0x40, 0x01, 0x00, 0x00, 0x98, 0x04, 0x00, 0x1D}; // начальная конфигурация uint8_t rdsBuffer[9]; uint8_t rdsBuffer2[65]; uint8_t completed, flag, flag2, razmer; uint16_t completed2; void RDS(void) { rdsBuffer[0] = 0x01; rdsBuffer2[0] = 0x02; READ_4709(); if (RDS_0A) { if (rdsBuffer[(RDS_0A_ID) * 2 + 1] != RDS_D_h || rdsBuffer[(RDS_0A_ID) * 2 + 2] != RDS_D_l) { rdsBuffer[(RDS_0A_ID) * 2 + 1] = RDS_D_h; rdsBuffer[(RDS_0A_ID) * 2 + 2] = RDS_D_l; completed = 0; flag = 1; } completed |= 1 << (RDS_0A_ID); if (completed == 0x0F && flag) { CDC_Transmit_FS(rdsBuffer, 9); flag = 0; } } if (RDS_2A) { if (rdsBuffer2[(RDS_2A_ID) * 4 + 1] != RDS_C_h || rdsBuffer2[(RDS_2A_ID) * 4 + 2] != RDS_C_l || rdsBuffer2[(RDS_2A_ID) * 4 + 3] != RDS_D_h || rdsBuffer2[(RDS_2A_ID) * 4 + 4] != RDS_D_l) { rdsBuffer2[(RDS_2A_ID) * 4 + 1] = RDS_C_h; rdsBuffer2[(RDS_2A_ID) * 4 + 2] = RDS_C_l; rdsBuffer2[(RDS_2A_ID) * 4 + 3] = RDS_D_h; rdsBuffer2[(RDS_2A_ID) * 4 + 4] = RDS_D_l; completed2 = 0; flag2 = 1; } completed2 |= 1 << (RDS_2A_ID); if (completed2 == 0xFFFF && flag2) { for (int i = 64; i > 0; i--) { // сокращаем размер пакета, убирая прбелы с конца if (rdsBuffer2[i] != 0x20) { razmer = i + 1; break; } } CDC_Transmit_FS(rdsBuffer2, razmer); flag2 = 0; } } HAL_Delay(40); } Все написаное только для чтения RDS. |
|
Часовой пояс GMT +4, время: 13:13. |
Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot