Pull to refresh
296
-10.7

Программист микроконтроллеров

Send message

Пока DLL держит фазу кода, на графике I/Q будет круг (или два пятна, если фаза несущей тоже верна). Круга нет, или он пропал больше чем на секунду - все, фаза кода потеряна, классический E-P-L трекинг ее уже не поймает.
Без трекинга фазы кода (DLL) PLL действительно не имеет смысла.

" В своем проекте я произвожу сканирование диапазона частот [-7000..+7000 Гц] с шагом 500 Гц."

А при чем тут однобитная арифметика?
После корреляторов значения E-P-L - обычные 16-битные значения (только что комплексные - I/Q).
"Задачей этого регулятора является удержание амплитуды канала I максимальной, а Q - минимальной."

Я не могу точно сказать, коэффициенты я подбирал.

Из Википедии: "The outputs of these low-pass filters are inputs to another phase detector"
Это та часть, что вычисляет текущую фазу сигнала.
В статье я писал, что это atan(Q/I)
https://github.com/iliasam/STM32F4_SDR_GPS/blob/f0fa35a44281cc0fcc4c7165a107bfe6f10ea4cc/Firmware/project_main/GPS/tracking.c#L181
Единственно, там действительно неверное название переменной carr_phase_err_rad - она не в радианах.

"В каком функции с исходником реализован Costas Loop? Внутри gps_tracking_pll?"
Да.

"Откуда взялись значения констант для коэффициентов Откуда взялись значения констант для коэффициентов".
Они подобраны.

"В блок-схеме Costas Loop нет дифференциирующих звеньев. "
https://github.com/iliasam/STM32F4_SDR_GPS/blob/develop/Firmware/project_main/GPS/tracking.c#L214
Вот эта часть:

 int16_t oldIP = channel->tracking_data.fll_old_i;
  int16_t oldQP = channel->tracking_data.fll_old_q;
  
  /* FLL discriminator */
  float f1 = (IP == 0) ? (M_PI / 2) : atanf((float)QP / (float)IP);
  float f2 = (oldIP == 0) ? (M_PI / 2) : atanf((float)oldQP / (float)oldIP);
  float freq_diff_rad = f1 - f2;

Это взято из https://github.com/iliasam/GNSS-SDRLIB/blob/ac16855961b558cda1aaba1ae45095a600985b58/src/sdrtrk.c#L122

Так в Википедии (ссылка в цитате) все написано: " The outputs of these low-pass filters are inputs to another phase detector, the output of which passes through a noise-reduction filter before being used to control the voltage-controlled oscillator. "

Да, это опечатка, постараюсь поправить, как смогу.

Записать реально, я же уже давал вам ссылку - https://github.com/taroz/GNSS-SDRLIB/blob/master/test/testdata_download_link.txt
Только RTL-SDR, как и большинство других SDR приемников, выдает результаты в формате I/Q.

Xircom REX 6000 имел толщину 5мм. Если делать девайс тоньше в два разы, выйдет 2.5мм.
В такую толщину сложно EINK засунуть, и обеспечить ему нормальную защиту от механических воздействий.
Есть такой проект - https://paulschow.com/2016/08/epaper-business-card.html

Декодировать реально - https://myriadrf.org/news/lora-modem-limesdr/
Насколько сложно - не знаю.

Что-то механика станка мне непонятна. Станок сам себе винт одной из осей не перепилит (тот, что вертикальный на 1 фотографии)? Или тут стол для крепления заготовки не установлен?

Да, если считать, что данные записываются так: 0bMSB.....LSB

У меня алгоритм стабильней работал в таком варианте.
Замечу, что этот участок кода работает только в acquisition.

Я специально написал в статье рядом с аналогичной картинкой:
"а вот частота здесь подписана неверно, в действительности значения - не Hz, это просто значение индекса среди N перебираемых частот. "
В этой программе acquisition вообще странновато работает, иногда он может давать немного разные результаты с одним и тем же файлом данных.

Я этой таблицы вообще не понимаю.
Первый бит, который примет SPI, будет помещен в LSB (D0), последующие биты будет помещаться "слева", шестнадцатый бит будет помещён в MSB (D15).
0bMSB.....LSB

Да, выглядит верно.

Данные идут непрерывно.
Первый байт после декодирования - 0x9E = 0b10011110.

Соответственно, семплы, которые приходили c АЦП в хронологическом порядке - 0,1,1,1,1,0,0,1.

1
23 ...

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity