alex_m, формат - 16ти битные отсчеты, частота семплирования 122.880 МГц. Именно так Cusdr будет понимать эти данные.
alex_m, формат - 16ти битные отсчеты, частота семплирования 122.880 МГц. Именно так Cusdr будет понимать эти данные.
alex_m, можете скинуть видео туториал, тоже хочу попробовать прикрутить свисток к cusdr )
ссылку на описание протокола выше @rolin приводил. Там вобщемто все описано, за исключением 4 эндпоинта, для него структура не указана. Для простоты я байты CC в пакетах от сервера клиенту всегда устанавливаю 00,1e,00,00,1a
готового транслятора пока нету, есть только симулятор, который рандомным шумом приемник имитирует.
Для того чтобы rtl прикрутить нужно ресамплер написать, который будет ресэмплинг потока.
Нужно на выходе 4 варианта частот:
- 48 кГц,
- 96 кГц,
- 192 кГц,
- 384 кГц.
На входе наверно удобно выбрать частоту 1152000 Гц.
Она кратно делится на все вышеуказанные частоты.
Последний раз редактировалось alex_m; 10.08.2017 в 19:52.
alex_m, структура есть, могу глянуть позже, но лучше ставить перед собой реальные цели.
Например сделать пул из 5 свистков, сигнал каждого из которых будет видеться в Cusdr как отдельный приемник. Тогда и скиммео можно будет завести на всем этом.
Прикрутил librtlsdr, стал разбираться что к чему, вылезли странные косяки со звуком.
Вначале обратил внимание что cuSDR присылает около 12200 сэмплов/сек вместо необходимых 48000.
В формате пакета для 2-го эндпоинта указан такой формат:
Поробовал ради интереса поменять на такой:Код:<L1><L0><R1><R0><I1><I0><Q1><Q0>
т.е. только один канал, но 4 сэмпла вместо одного. И как ни странно вроде заработало, даже голос слышу.Код:<L1><L0>
Но чтото все-равно не так:
1) почему-то cuSDR присылает аудио 51300 сэмплов в секунду, вместо необходимых 48000.
Может пакеты для второго эндпоинта нужно как-то иначе интерпретировать?
Непонятно - почему формат данных отличается от документации...
2) какой-то странный спектр. Левая часть спектра просто отзеркаливает правую. Хотя я в cuSDR отправляю IQ поток.
3) почему-то полоса фильтра в cuSDR не соответствует тому что я указываю. Например ставишь 2.9к, а реально около 200 Гц. Мышкой растянул полосу примерно до 3 кГц, но как видно на скриншоте, cuSDR почему-то думает что это 12.2 кГц...
Может кто-то подскажет в чем может быть дело?
с частотой аудио вроде разобрался, как оказалось просто неправильно частота IQ потока была установлена, она у меня захардкожена на 96 кГц, а cuSDR был настроен на 384 кГц.
Вроде неплохо работает, звук вполне нормальный.
Правда судя по отладочным сообщениям, присутствует небольшой рассинхрон.
Теперь надо разобраться, почему на спектре левая часть - это зеркальное отображение правой.
Вроде-ж IQ поток передаю, в нем полный спектр должен быть...
alex_m,
CuSDR = True;
Alex_m = False;
И искать ошибки. Раз отзеркалено абсолютно симметрично по уровням, значит вы передайте I =Q
да, действительно - во время преобразования из 8 бит во float по ошибке брал только I компоненту.
Ура, работает
Пока правда децимация без фильтра - просто отбрасываются лишние сэмплы Но неплохо работает
Посоветуйте как лучше децимацию сделать?
Для источника выбрал частоту 1536000 Гц.
С ней получаются такие делители:
48000 = x32
96000 = x16
192000 = x8
384000 = x4
alex_m, Децимация элементарная. Сначала фильтруете поток до нужной полосы, потом отбрасывает лишние семплы. И наверное нормализация по уровню.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)