PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Radio (http://pccar.ru/forumdisplay.php?f=193)
-   -   Еще один вариант FM радио. (http://pccar.ru/showthread.php?t=20819)

Astravod 30.05.2015 11:53

Доброго времени суток! А кто нибудь пробовал подключать к Radxa fm модуль на si4731 через I2C?

Astravod 30.05.2015 12:02

Почему нельзя сразу не подключить к I2C к плате, не используя ардуино?

nikopol70 05.10.2015 13:46

Мп1905 в наших краях купить не удалось
Купил теа5767.
Подключил по мануалу к про микро (леонардо), залил тестовый скетч (взят с сайта ардуины в разделе данного модуля, настроен на одну частоту)... тишина... ни щелков ни треска ни шипения.

Сижу и туплю, или что то не дописано в мануале или теа5767 не рабочая.

На форуме ардуино посоветовали залить скетч i2c сканера и посмотреть видется модуль подключеный к ардуине. Залил, потестил, да видется, адрес устройства показывает.

Что и как делать дальше не понимаю, где искать косяк...

dreamwait 13.10.2017 17:02

Есть сейчас аналоговое радио SONY (TYX-??). Все вроде отлично работает - но нет РДС... По сравнению с ней si4703 будет сильно отличаться? Приемники массовые - сравнивал кто? Интересует вариант не в городе, а при удалении - при слабом сигнале.

Kisel39 31.10.2017 02:26

Цитата:

Сообщение от s.m. (Сообщение 326868)
есть успехи? особенно интересует работа rds

А какие проблемы с RDS ? До боли все примитивно, чип у меня si4709, я не использую библиотек так как они урезаные и немного не правильные, проще мануал глянуть по чипу и RDS, все встанет на свои места.
https://www.silabs.com/documents/pub...otes/AN243.pdf
Читаю 8 значное поле группа 0A и 64 значное поле группа 2A.
Вот старое видео https://yadi.sk/i/OdWArynw3PFJvE, сейчас все глаже.

Kisel39 12.11.2017 18:45

Ну что после прочтения менуала разбрались с RDS ?
Если нет, могу скинуть функцию по чтению RDS. Только придется немного доработать под себя. Я регисты читаю по 8 бит, а не перевожу их в 16 как в библиотеке.
На ардуино и на stm все читает на ура.
Кстати можно еще время читать и статус привязки станции.
Прокатит на всех чипах пхожих

Kisel39 12.11.2017 19:11

так как чтение регистров из чипа начинается с 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.

Kisel39 12.11.2017 19:24

http://pccar.ru/picture.php?albumid=222&pictureid=2290
как то так


Часовой пояс GMT +4, время: 12:24.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot