Jump to content
    

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 мкс,  это явно не задержка обработки прерывания, да и для периодического сигнала она не должна влиять на величину периода.

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

Спасибо.

Edited by Алексей ВМ1

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Добрый день!

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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();
	}

.

Share this post


Link to post
Share on other sites

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

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

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

 

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

Edited by Алексей ВМ1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...