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

STM32MP157 input capture неправильно измеряет период

Добрый день,

Пытаюсь измерить период GPS PPS сигнала. Используется ядро М4 в режиме стандалоне. Тактовая частота М4 209 МГц. Сигнал формируется GPS модулем с точностью не хуже 100 нс. Для измерения использую модуль захвата таймера TIM5. Борда тактируется генератором TXO с точностью 2.5ррм. TIM5 CCR1 выдает значение 208877646 +- несколько единиц вместо 209000000. Причем, если загрузить значение 208877646 в таймер TIM2, который тоже одноразово сбрасывается от GPS PPS сигнала, то видно, что на каждое прерывание TIM5 по захвату значение счетчика TIM2 смещается на величину  примерно 122000.

Разность между периодом GPS PPS сигнала и измеряемым около 122000 тиков, что соответствует примерно 580 мкс,  это явно не задержка обработки прерывания, да и для периодического сигнала она не должна влиять на величину периода.

Может кто-нибудь сталкивался с подобной проблемой, куда копать?

Спасибо.

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго утра. С STM32MP не работал, но указанные вами числа наводят на простую мысль. Вы не могли настроить input capture так, что ловите обе полярности фронта? 0.5 мс, как по мне, вполне похожа на длительность PPS-сигнала. Тогда вы будет получать у себя при захвате не период, а период за вычетом длительность импульса. Правда, не знаю, куда тогда теряется второе измерение захвата, которое должно показать малую величину, равную длительности импульса.

Ну и если проблема не в этом - вы проверяли, что ваша частота тактирования правильная? Маловероятно, но всё же - или PLL не так настроен, или частота переключается во время работы. Я бы сделал с какого-нибудь таймера PWM с периодом в 1 с, смотрел бы осциллографом PPS-сигнал и выхлоп PWM, вручную подогнал бы фазу PWM через отладчик и посмотрел бы, не разбегаются ли сигналы на ваши 0.06%.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

1 час назад, engel65536 сказал:

Вы не могли настроить input capture так, что ловите обе полярности фронта?

Пробовал все настройки фронтов. Если ловить оба фронта, то сумма длительностей опять магическое число 208877646.

1 час назад, engel65536 сказал:

Ну и если проблема не в этом - вы проверяли, что ваша частота тактирования правильная? Маловероятно, но всё же - или PLL не так настроен, или частота переключается во время работы.

Остается только эта причина, если это не аппаратный косяк. Больше ничего в голову не приходит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Arlleex сказал:

Предделители N - 1 вместо N в регистрах? Обычно такого рода ошибки примерно тут.

Для измеряющего таймера задан период, в два раза больший чем секундный интервал в клоках таймера. Остальные предделители нулевые

	htim_measure_pps.Instance = TIM5;
	htim_measure_pps.Init.Prescaler = 0;
	htim_measure_pps.Init.CounterMode = TIM_COUNTERMODE_UP;
	htim_measure_pps.Init.Period = TIM_PPS_WINDOW - 1;
	htim_measure_pps.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
	htim_measure_pps.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;

	if (HAL_TIM_Base_Init(&htim_measure_pps) != HAL_OK)
	{
		Error_Handler();
	}

	sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
	sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
	sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
	sConfigIC.ICFilter = 0x00; 

	if (HAL_TIM_IC_ConfigChannel(&htim_measure_pps, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
	{
		Error_Handler();
	}

.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На буржуйском форуме ответили:

in starter package, the clock TIM5 is defined as 208877930Hz

Скорей всего, в этом причина, хотя у меня М4 в режиме стандалоне.

 

Но все равно непонятно. Я измерил PPS в клоках таймера, потом записываю это число в другой таймер, который сидит на этой же частоте, и ШИМ, сгенеренный этим таймером (тоже PPS) не совпадает с измеряемым сигналом.

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...