Jump to content
    

STM32 калибровка RTC

всем доброго времени суток. Есть непонятки как реализовать калибровку RTC, конкретно у меня за 1 час время уходит на 1-2 минуты.

в МК есть регистр RTC calibration register (RTC_CALR) где есть возможность добавить тиков или пропустить. В кубике на это счет даже есть функция HAL_RTCEx_SetCalibrationOutPut(...). Вопрос вот в чем - как понять сколько тиков надо добавить или пропустить? Нигде не могу найти соотв. exampe как всем этим механизмом пользоваться. 

Хочется иметь возможность подстраивать RTC без внешнего участия и подключений частотомеров.

MK семейства F4 и L4

Edited by Halfback

Share this post


Link to post
Share on other sites

2 часа назад, Halfback сказал:

всем доброго времени суток. Есть непонятки как реализовать калибровку RTC, конкретно у меня за 1 час время уходит на 1-2 минуты.

...

Хочется иметь возможность подстраивать RTC без внешнего участия и подключений частотомеров.

Подстраивать от чего? Источник эталонного сигнала?

И почему у вас такой большой уход RTC? От чего его тактируете?

Share this post


Link to post
Share on other sites

В 08.09.2023 в 15:57, jcxz сказал:

И почему у вас такой большой уход RTC? От чего его тактируете?

тактирую от внешнего кварцевого резонатора на 32768 https://www.chipdip.ru/product0/8001797043

у него 20ppm, мой уход больше этой цифры.

Частотомера хорошего у меня нет но осцилл RIGOL показал с предварительно настроенного выхода MCO импульсы частотой 32765...32771 Гц (в течение часа).

В 08.09.2023 в 15:57, jcxz сказал:

Подстраивать от чего? Источник эталонного сигнала?

STM пишет в том ключе, что мол подавая более высокую частоту аля HSE и считая кол-во импульсов LSE за определенную длительность в секундах, можно понять смещение LSE от нужной 32768. Ну о потом это смещение в регистре RTC_CALR учесть. Но до конца в этот процесс не смог вникнуть.

Edited by Halfback

Share this post


Link to post
Share on other sites

По частотометру особо не выстроите, поскольку нужно подстраивать с точностью до нескольких долей на миллион. Например, среднестатистический уход в 15 сек за месяц вызывается отклонением частоты на 6 ppm (0,0006%). Поэтому подстройка выполняется по замеру ухода часов на некоторый интервал времени, например 1 день.

А если у вас получилась столь высокая погрешность (около 2%), то проверьте правильность настройки коэфф.делителей и правильность выбора источника частоты (точно ли выбран LSE).

Частота генерации кварца может изменяться, когда вы в него тыкаете щупы осциллографа. 
Так же, надеюсь, вы установили нагрузочные конденсаторы для кварца? И правильно ли выполнили разводку платы в части подключения кварца и этих конденс., правильно ли подвели "землю" к ним?

Share this post


Link to post
Share on other sites

40 минут назад, Halfback сказал:

тактирую от внешнего кварцевого резонатора на 32768 https://www.chipdip.ru/product0/8001797043

у него 20ppm, мой уход больше этой цифры.

У вас вообще какой-то нереально конский уход. Надо искать что не так с кварцем или с его подключением. А не ваять костыли (калибровку).

Уход 2/60 = 3.33% это слишком много даже для RC-генератора.

Share this post


Link to post
Share on other sites

Советую очень тщательно подойти к выбору конденсаторов кварца и для начала установить правильную емкость.

Share this post


Link to post
Share on other sites

3 hours ago, Halfback said:

STM пишет в том ключе, что мол подавая более высокую частоту аля HSE и считая кол-во импульсов LSE за определенную длительность в секундах, можно понять смещение LSE от нужной 32768.

Для этого у Вас на HSE должен стоять кварц с точностью в пару ppm 🙂

Share this post


Link to post
Share on other sites

У меня аналогичная проблема на STM32F427ZI. RTC тактируется от внешнего осциллятора Q-0,032768-MMTF32-6-10 32,768 кГц, frequency tolerance at 25 °C ± 5 °C ±: 10 ppm / ±20 ppm (указано тут).

Отставание составляет от 1,7 сек до 3,0 сек в сутки. Тестировал на 5 экземплярах одного и того же устройства. Устройство несколько лет находится в производстве и схемотехнические изменения вносить в него запрещено.

Необходимо откалибровать RTC устройства.

 

Как я понимаю ситуацию: на каждом устройстве, в процессе его работы, необходимо периодически калибровать RTC. Т.е.:

1 измерить частоту RTC_CALIB

1.1 RTC_CALIB, которая в идеале должна быть 512 Гц, находится на висящем в воздухе PC13

1.2 Не понятно - как измерить частоту? Физически соединить PC13 с какой либо ножкой микроконтроллера нельзя, т.к. схемотехнические изменения вносить запрещено

2 выполнить калибровку. С этим всё понятно - в сети масса примеров

 

Временное решение было таким: основываясь на 10 экземплярах устройства, был вычислен калибровочный коэффициент. Его гвоздями прибили в прошивке. Но это плохо, т.к. завтра параметры каких то элементов схемы немного изменятся, и часы начнут опять брехать. Необходимо сделать адекватную калибровку.

Подскажите в какую сторону копать?

Share this post


Link to post
Share on other sites

В 08.09.2023 в 16:40, Halfback сказал:

подавая более высокую частоту аля HSE и считая кол-во импульсов LSE за определенную длительность в секундах, можно понять смещение LSE от нужной 32768.

Думаю это единственный выход. Так ли это?

Share this post


Link to post
Share on other sites

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

1.2 Не понятно - как измерить частоту? Физически соединить PC13 с какой либо ножкой микроконтроллера нельзя, т.к. схемотехнические изменения вносить запрещено

Поставить щуп на ножку PC13 и измерить.

А если у вас реально производство, то делается оснастка для контактирования, никаких проблем.

Share this post


Link to post
Share on other sites

22 минуты назад, HardEgor сказал:

Поставить щуп на ножку PC13 и измерить.

Устройства, в процессе своей работы, находятся в разных концах страны. Щуп ставить или использовать оснастку в таких условиях некому. Поэтому устройства должны сами себя калибровать в процессе работы

Edited by RDutch

Share this post


Link to post
Share on other sites

2 часа назад, RDutch сказал:

.2 Не понятно - как измерить частоту? Физически соединить PC13 с какой либо ножкой микроконтроллера нельзя, т.к. схемотехнические изменения вносить запрещено

Включите EXTI на этой ножке. На более других STM32 этот сигнал часов уже заведен на один из входов какого-либо таймера. Тут такого, увы, нет.

Share this post


Link to post
Share on other sites

У меня 407. Выпускается долго. Конденсаторы и кварц вполне бытовые. Уход незначителен. При запуске партии видно, что зависит от партии кварцев.. То есть никаких подводных камней не встречал.
Если кварц SMD, то надо по доку на него посмотреть какой кондёр ставить. Бывает 15, 22, 7 - поэтому смотреть. Кварцы ставим  Jauch. Китайские не применяем.

Для того, чтобы устр-во калибровало само себя, у вас должен быть источник опорного сигнала. То есть либо образцовая частота, либо точное время. По-моему это понятно даже необразованному... ))

Share this post


Link to post
Share on other sites

29 минут назад, SapegoAL сказал:

надо по доку на него посмотреть какой кондёр ставить

Было принято решение решать проблему программным путём и не зависеть от партии тех или иных элементов.

29 минут назад, SapegoAL сказал:

у вас должен быть источник опорного сигнала

К MCU подключен кварц на 25 МГц

33 минуты назад, Сергей Борщ сказал:

Включите EXTI на этой ножке. На более других STM32 этот сигнал часов уже заведен на один из входов какого-либо таймера. Тут такого, увы, нет.

На PC13 включил GPIO_EXTI13 - теперь если на этот пин подать сигнал, то его можно обработать.

Но у меня задач иная: На PC13 включить RTC_AF1 - теперь на этом пине будет генерироваться RTC_CALIB. Мне необходимо измерить его частоту

20240111 1417 Альтернативные функции PC13.png

Edited by RDutch

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...