Ага , я специально погуглил, в подобных наушниках использовался чипсет TA2061AF + TA2056F. Несущая частота - 2.3/2.8Мгц для левого/правого канала. Модуляция - частотная.
Если хочется с передачей данных в цифровом виде поэкспериментировать, то лучше IRDA использовать.
Изменение частоты имитируется через смену фазы. Ниже я показал пример изменения фазы в процессе формирования данных несущей частоты. Можно видеть, что в результате такого изменения одна выборка как бы пропускается, если сравнивать данные до/после:
В функцию gps_shift_to_zero_freq() передается значение частоты, на основе которого она вычисляет, как часто нужно манипулировать фазой.
Интересно, как предполагается жестко удерживать все 5 спутников на заданном расстоянии друг от друга? Это же интерферометр, точность нужна очень высокая.
В книге [3] фазовым дискриминатором называют ту логику, что поддерживает слежение за фазой несущей. E-P-L там называют "delay lock loop discriminator".
Вы читали часть статьи "Перемножение и суммирование"? Она идет явно раньше, чем описание трекинга.
Ваша картинка мне кажется перегруженной, MCU все-таки не ПЛИС, он делает вычисления последовательно. Так что вычисление E-P-L - это просто вызов одной и той же функции трижды с разными аргументами.
Если я не ошибаюсь, в случае свертки одна из функций зеркально отражается: https://ru.wikipedia.org/wiki/Свёртка_(математический_анализ) "Операцию свёртки можно интерпретировать как «схожесть» одной функции с отражённой и сдвинутой копией другой."
Из картинки видно, что прямого управления значением фазы у меня нет, есть управление частотой NCO, которое влияет на фазу. https://ru.wikipedia.org/wiki/Фазовая_автоподстройка_частоты После того, как Carrier NCO отработал, значение аккумулятора фазы нужно сохранить, а потом загрузить его вновь в Carrier NCO перед началом следующего вычисления. И да, изначально при старте трекинга фаза неизвестна, на IQ диаграмме при этом будет круг.
Не забывайте, что каждый спутник содержит 4 штуки атомных часов (подозреваю, их параметры можно подстраивать с земли), более сложную электронику для передачи P(Y)-кода, целую гору оборудования для загрузки данных на борт. И все это, скорее всего, дублировано. Плюс, современные спутники данные еще и на разных частотах передают, и протоколы там разные.
По ubx можно очень много что посмотреть, но вот свой приемник заставить выдать значения эфемерид я не смог. Там есть сообщение "UBX-RXM-SFRBX", это сырые навигационные данные, из них можно легко выделить эфемериды.
Я про такое не слышал. Возможно, у каких-то производителей приемников моно включить выдачу специализированных сообщений, но стандартно даже информация - есть/нет эфемериды для определенного спутника не передается.
Ага , я специально погуглил, в подобных наушниках использовался чипсет TA2061AF + TA2056F.
Несущая частота - 2.3/2.8Мгц для левого/правого канала. Модуляция - частотная.
Если хочется с передачей данных в цифровом виде поэкспериментировать, то лучше IRDA использовать.
Изменение частоты имитируется через смену фазы.
Ниже я показал пример изменения фазы в процессе формирования данных несущей частоты.
Можно видеть, что в результате такого изменения одна выборка как бы пропускается, если сравнивать данные до/после:
В функцию gps_shift_to_zero_freq() передается значение частоты, на основе которого она вычисляет, как часто нужно манипулировать фазой.
Интересно, как предполагается жестко удерживать все 5 спутников на заданном расстоянии друг от друга?
Это же интерферометр, точность нужна очень высокая.
У DDS генераторов есть аккумулятор фазы, и случае готовых микросхем часто его стартовое значение можно задавать.
Есть и двухканальные DDS.
В книге [3] фазовым дискриминатором называют ту логику, что поддерживает слежение за фазой несущей.
E-P-L там называют "delay lock loop discriminator".
Вы читали часть статьи "Перемножение и суммирование"?
Она идет явно раньше, чем описание трекинга.
Ваша картинка мне кажется перегруженной, MCU все-таки не ПЛИС, он делает вычисления последовательно.
Так что вычисление E-P-L - это просто вызов одной и той же функции трижды с разными аргументами.
Если я не ошибаюсь, в случае свертки одна из функций зеркально отражается:
https://ru.wikipedia.org/wiki/Свёртка_(математический_анализ)
"Операцию свёртки можно интерпретировать как «схожесть» одной функции с отражённой и сдвинутой копией другой."
Да, Killdozer как-то больше впечатления производит. И на практике себя проявил...
А еще были кинетические шагающие скульптуры Тео Янсена.
Что-то я не понял вопроса.
Могу только это порекомендовать - https://en.wikipedia.org/wiki/Gold_code
Опять же, в статье есть ссылка - https://www.wasyresearch.com/generating-gps-l1-c-a-pseudo-random-noise-prn-code-with-matlab-and-c-c/
Замечу, что в процитированной части теста речь идет только про процесс формирования данных несущей частоты.
Код: https://github.com/iliasam/STM32F4_SDR_GPS/blob/develop/Firmware/project_single_sat/GPS/gps_misc.c#L325
Можно видеть, что внутри функции значение фазы берется из значения аккумулятора фазы.
https://ru.wikipedia.org/wiki/Цифровой_вычислительный_синтезатор
В коде приемника для одного спутника я оставил тестовый код, который просто заполняет бинарными данными sin/cos массив, это тот самый Carrier NCO:
https://github.com/iliasam/STM32F4_SDR_GPS/blob/develop/Firmware/project_single_sat/GPS/gps_misc.c#L482
Из картинки видно, что прямого управления значением фазы у меня нет, есть управление частотой NCO, которое влияет на фазу.
https://ru.wikipedia.org/wiki/Фазовая_автоподстройка_частоты
После того, как Carrier NCO отработал, значение аккумулятора фазы нужно сохранить, а потом загрузить его вновь в Carrier NCO перед началом следующего вычисления.
И да, изначально при старте трекинга фаза неизвестна, на IQ диаграмме при этом будет круг.
Это в каком "рядовом" STM32 есть CANFD?
"Протокол SPI — это синхронный серийный интерфейс"
Так протокол или интерфейс? ))
IDC - прямо подумал, что пропустил что-то, а речь про I²C.
За год у автора 180 статей и 30 комментариев))
У меня SPI настроен на прием в режиме LSB-first, 0x33 = 0b00110011, так что минуса перед sin/cos не нужны.
""0" заменяем на "-1" а "1" на что заменяется?"
Если в тексте не указано, что нужна замена, значит она не нужна...
SPI+DMA работают действительно так.
Только DMA передает 16-битные слова,
так что счетчик DMA считает: 0 -> 1023 -> 2046 -> 0
"Вся обработка по вычислению координат укладывается в 1ms?"
В статье я все описал - начиная с заголовка "Определение координат на микроконтроллере"
Пишут, 25.6 Вт - http://gpsinformation.net/main/gpspower.htm
Не забывайте, что каждый спутник содержит 4 штуки атомных часов (подозреваю, их параметры можно подстраивать с земли), более сложную электронику для передачи P(Y)-кода, целую гору оборудования для загрузки данных на борт. И все это, скорее всего, дублировано.
Плюс, современные спутники данные еще и на разных частотах передают, и протоколы там разные.
По ubx можно очень много что посмотреть, но вот свой приемник заставить выдать значения эфемерид я не смог. Там есть сообщение "UBX-RXM-SFRBX", это сырые навигационные данные, из них можно легко выделить эфемериды.
Я про такое не слышал. Возможно, у каких-то производителей приемников моно включить выдачу специализированных сообщений, но стандартно даже информация - есть/нет эфемериды для определенного спутника не передается.
iotSDR стоит более 1000$.
nut4nt сделана на куда более наворочанном NT1065.