ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
622718
Dingo (03.10.2015 11:37, просмотров: 1316)
Синхронизация таймеров на разных устройствах. ФАПЧ? Исходные: есть два одинаковых устройства, связанные линией связи, которая вносит фиксированную задержку + нtкая случайная величина, предельное значение которой известно (125 мксек). Внутри каждого тикают таймера с периодом 500 мксек (1/2000 кГц). Можно ли их синхронизировать точнее, чем разность частот кварцевых резонаторов? Конкретика: два STM32F4 на 28 МГц, задержка в линии ~620 мксек. На подопытных экземплярах частота уплывает на 1 период (500 мксек) за ~7 секунд. 500e-6 / 7 = дрейф в секунду. За один период уплывает на (500e-6) /7 / 2000 = 0,03571429 мксек за период. Таймер. У этих контроллеров 16-разрядные. Чем меньше делитель частоты перед таймером, тем точнее можно управлять частотой прерываний. Берём величину побольше так, чтобы оставался запас вниз, и вверх. При тактировании 28МГц и требуемой частоте 2 кГц это 28e6 / 2e3 = 14000 циклов тактовой. Влазит в один счётчик таймер, значит делитель можно использовать =1. Дискретность подстройки при этом 1/14000 периода, т.е 500e-6 / 14000 = 0,05371429. Собственно, почему величины совпадают? Реально было 6,35 сек на секндомере, но все равно - за 7 секунд уйдёт на целый период. Не хотелось бы. Как это решается обычно? Как я понимаю, всё время подстраивается частота (ФАПЧ) с довольно большой постоянной времени. Можно ли как то получить лучший результат? Конечная цель - при пропуске одной или нескольких синхопосылок не сбить синхронизацию. Точность можно увеличить, если один раз в N сработок таймера загружать не 14000, а 13999 или 14001. Дробные, как например 3/4 тоже можно, в приведённом случае 14000 +\- 3 один раз в 4 периода. Собственно, непонятно, как понять, какая точность требуется и как считать всё это на лету. Можно ссылками где почитать, чтобы устранить этот пробел в знаниях? Но лучше "на пальцах" - мне так быстрей и проще понять.