Перейти к содержанию
    

Serhiy_UA

Свой
  • Постов

    863
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Serhiy_UA стал победителем дня 4 августа 2022

Serhiy_UA имел наиболее популярный контент!

Репутация

1 Обычный

1 Подписчик

Информация о Serhiy_UA

  • Звание
    Знающий
    Знающий

Контакты

  • ICQ
    Array

Посетители профиля

5 432 просмотра профиля
  1. HardEgor, согласен, придется идти и таким путем.
  2. В одних Datasheet указывают соединить Exposed Pad с земляным полигоном, а в других таких указаний нет, в то же время пины для подключения GND у всех чипов имеются. Еще, есть указание на низко-эмпидансное подключение к GND. Это как-то сввязано с диаметром переходных отверстий на этих площадках (рабочая частота где-то 500 МГц)
  3. Планирую разводку в Altium_Designer 4-х слойной платы смешанных сигналов, где 1-й и 4-й слои сигнальные, а 2-й и 3-й преимущественно под полигоны GND и питания. На плате будет до 15 чипов QFN с числом выводов от 16 до 56. Под каждым из этих QFN-чипов теплоотводящая квадратная площадка для пайки с аналогичной площадкой в 1-ом слое платы, от которой идут сквозные металлизированніе отверстия на противоположный 4-й слой. Полагаю, что на противоположном слое тоже должна быть подобная площадка. Так нормально? Еще, можно ли эти теплоотводящие площадки соединять с GND?
  4. Буду пробовать искать что-то из SDR на одноплатниках.
  5. Спасибо за советы, но пока внешний компьютер исключается, как и внешний анализатор. Все должно быть портативным и встраиваемым. В приборе есть высокостабильный генератор 406 МГц, может он чем-то помочь?
  6. Стоит задача измерить частоту передатчика 406 МГц, с допустимым разбросом в пределах плюс/минус 1200 Гц. Передатчик излучает OQPSK-сигналы с длиной пакета в 1с и фазовой модуляцией около 80кГц. Излучение идет пакетами с нерегулярными задержками между ними от 2 до 10 с, а сам передатчик расположен в спасательном буе. Буду признателен за советы, ссылки на статьи, сайты и книги, или готовые для этого ИМС.
  7. Большое спасибо за быстрые ответы. Сразу помогла рекомендация от x893. В main.c для переменной Tic5ms доопределил volatile как рекомендовано, теперь все работает нормально: volatile char Tic5ms;
  8. Работаю с платой STM32F407VET6 в среде STM32CubeIDE версии 1.12.1, в которой не получалось запустить программу, работающую нормально в среде IAR версии 7.70. В программах таймер 3, вызывает прерывание каждые 5 мс, и в нем для глобальной переменной выполняется Tic5ms = 1. Для IAR в main.c организован бесконечный цикл входа каждые 5мс в функциональный блок, внутри которого уже Tic5ms = 0. Выглядит цикл так: /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { if(Tic5ms){ MyLedBlink(150); MyUart1_Compil(); Tic5ms = 0; } /* USER CODE END WHILE */ } Для IAR все работает как задумано, действия повторяются каждые 5 мс. Но для CubeIDE этот функциональный блок не работает, в него нет захода без дополнительного оператора HAL_GPIO, что установлен перед if(Tic5ms). В CubeIDE в этом месте программа такая: /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET); if(Tic5ms) { MyLedBlink(150); MyUart1_Compil(); Tic5ms = 0; } /* USER CODE END WHILE */ } То есть, без дополнительного обращения выводу С7 перед if(Tic5ms), вход в блок почему-то в CubeIDE не выполняется. Вместо С7 можно вставить другой вывод, лишь бы был такой дополнительный оператор. Прерывание же для обеих сред выглядит одинаково: void TIM3_IRQHandler(void) { /* USER CODE BEGIN TIM3_IRQn 0 */ extern char Tic5ms; Tic5ms = 1; /* USER CODE END TIM3_IRQn 0 */ HAL_TIM_IRQHandler(&htim3); /* USER CODE BEGIN TIM3_IRQn 1 */ /* USER CODE END TIM3_IRQn 1 */ } В принципе можно работать и с дополнительным оператором, хоть и пришлось помучаться чтобы найти это решение. Но все же вопрос остался, почему так происходит. Других отклонений не находил, программы из обеих сред работают нормально, а выбор в пользу CubeIDE имеет некое преимущество в силу бесплатности и легальности.
  9. Макет для приема данных из QPSK сделан и работает. В основе EP4CE6E22C8 с частотой 25МГц, загрузка чуть более 15 процентов. Задействовано два PLL, три ROM и один RAM, а также полтора десятка fsm. Входная частота пока 390кГц, в схеме реализована автоматическая подстройка к ней. Разборки мои в этом топике конечно дилетантские, но обсуждение было полезным, многое пришлось переосмыслить, но главное результат.
  10. Spirit_1, спасибо за понимание, для меня эта тема была нова. На гитхаб загляну. С помощью подсказок «из зала» мне стало понятней как принимать данные из QPSK, для этого: 1.Определить период тактовой частоты ПТЧ (время между двумя прохождениями на подъемах Q или I через ноль) 2.Найти момент равенства положительных кодов I и Q (соответствует углу 45 градусов), по которому занести в вычитающий счетчик код ПТЧ и вычитать единицу по Clk до достижения нуля. 3.В момент равенства счетчика нулю принять следующую пару кодов I, Q и сравнить между собой. Если разница модулей большая, то просуммировать фазовое приращение\уменьшение с кодом ПТЧ, чтобы уменьшить отклонению в кодах I, Q, чем подстраиваем фазу. Суммарное значение записать в счетчик, продолжив его вычитание по Clk. Далее постоянно выполнять пункт 3. 4.Текущую фазу 45, 135, 225 и 315 градусов и соответствующие им символы 00, 10, 11 и 01 можно определять по знакам кодов I, Q, то есть без вычисления фазы в CORDIC. 5.Символьную синхронизацию (изменение фазы) можно получить с помощью автокорреляции на пол периода. Здесь так же вычисляется между символьный период, а внутри каждого их эти периодов один и тот же символ вычисляется по несколько раз. 6.В задании есть скремблирование каждого символа псевдослучайной М-последовательностью из 255 бит. Для определения момента кадровой синхронизации решено использовать четыре цифровых согласованных фильтра на логических схемах. С помощью этих фильтров также определять какой из символов реально находится в первом квадранте. Если что-то попутал, то поправьте. Работы еще по QPSK много.
  11. _4afc_, не совсем понял Вашу идею. Если оцифровывать входной сигнал в 406 МГц с УВХ менее 2.5 нс, и с АЦП с частотой дискретизацией 10-60 МГц, то как это согласовывается с теоремой Котельникова-Найквиста. Потом, будет ли все же сохранена фаза и её сдвиги на 90, 180 и 360 градусов. Мне не понятен этот метод. Spirit_1, мне показалось, что Вы предложили автокорреляцию выполнять не с задержанным периодом, а с его половиной. Я промоделировал это на своей С++ программе. Результат приятно удивил, получается, что объем вычислений сократился вдвое и этот метод можно использовать. Демодулятор с автокорреляционным (АК) методом выделения момента изменения фазы я нашел в прилагаемой статье на рис.3. Но там предлагалось вычислять АК со сдвигом на период. 02-Kokhanov.pdf
  12. spirit_1, Вы пишите, "Я бы сделал немного по другому" Мои познания в высокочастотной аналоговой технике слабоваты, если можно, приводите принципиальную схему на ИМС, мне станет понятнее, или ссылку на источник (хотя, настаивать не могу). Цель - обсудить несколько методов разграничения битовых последовательностей и выделить лучший. Данные о проекте мною приведены выше, вопросов ещё много, и пока такой. Можно ли сделать две ступени преобразования, например с 406 МГц на 10.7 МГц, а потом где-то на 200 кГц, для дальнейшей цифровой обработки (почему 10.7 МГц - мне сказали, что можно легко купить уже готовый фильтр). Не повлияют ли эти ступени на достоверность фаз, и как лучше в этом случае поступить.
  13. EdgeAlignet, если можно, утоните о каких микросхемах декодеров PSK идет речь. Я столкнулся с тем, что многие ИМС очень скудно описаны, например, AD9361. Предполагаю выделять информацию на ПЧ до 1 МГц.
  14. Провел небольшое моделирование на С++ для отработки алгоритма определения момента изменения фазы путем вычисления автокорреляционной функции с задержкой на период. Здесь три группы графиков с изменением фазы на 90, 180 и 270 градусов. В каждой исходная синусоида, она же сдвинутая на период и значение автокорреляционной функции, вычисленной скользящей сверткой. Думаю, что можно было бы это применить.
×
×
  • Создать...