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

    

Точность внутрених клоков в STM32L4

Товаришь попросил спросить, он тут не зарегистрирован, поэтому копи-паст с другого форума (там ему толком не ответили).

Quote

Проц STM32L462.

Вывожу через MCO с делителем 1:1 наружу сигнал с внутренних генераторов:


HSI = 8MHz, получаю 7.75, это -3.2%

MCI = 16MHz, получаю 14.2, это -12.6%

Где обещанный 1%? (к тому-же, ST в показаниях путаются - в одном месте пишут 1%, в другом 4%, а в третьем вообще 0.5%).

Еще: как понимать их заявления о Factory Calibrated?

В PIC я помню - на заводе калибровали внутренний генератор и записывали калибьровочную константу в последнеею ячейку флеша.
При старте она переписывалась в OCSCAL. А как в STM я пока не въехал - на автоматически (аппаратно) в регистр калибровки пападает, или ее надо самому туа писать?
Если самому, то куда писать понятно, а вот откуда ее считывать - я пока не нашел.

 

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


Ссылка на сообщение
Поделиться на другие сайты
Calibration
RC oscillator frequencies can vary from one chip to another due to manufacturing process
variations, this is why each device is factory calibrated by ST for 1 % accuracy at TA=25°C.
After reset, the factory calibration value is loaded in the HSICAL[7:0] bits in the Internal
clock sources calibration register (RCC_ICSCR).
If the application is subject to voltage or temperature variations this may affect the RC
oscillator speed. You can trim the HSI16 frequency in the application using the
HSITRIM[6:0] bits in the Internal clock sources calibration register (RCC_ICSCR).
For more details on how to measure the HSI16 frequency variation, refer to Section 6.2.17:
Internal/external clock measurement with TIM15/TIM16.
The HSIRDY flag in the Clock control register (RCC_CR) indicates if the HSI16 RC is stable
or not. At startup, the HSI16 RC output clock is not released until this bit is set by hardware.
The HSI16 RC can be switched on and off using the HSION bit in the Clock control register
(RCC_CR).

STM32L4 Reference Manual (RM0394 Rev 4), стр. 182

 

В частности:

After reset, the factory calibration value is loaded in the HSICAL[7:0] bits in the Internal
clock sources calibration register (RCC_ICSCR).

 

Товарищу передайте, чтобы не путал Datasheet и Reference Manual, у ST они имею разное назначение и ... размер :)

 

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


Ссылка на сообщение
Поделиться на другие сайты
Только что, Allregia сказал:

Товаришь попросил спросить, он тут не зарегистрирован, поэтому копи-паст с другого форума (там ему толком не ответили).

Открыл даташит на камень. Вижу, что HSI там на 16МГц, а не на 8, как Вы представили.

А второй не MCI, а MSI - он?

Да даже если так, очень странно, что такие измерения получили... Чем частоту меряли? Поверенным прибором или китайским осциллографом с алиэкспресс? МК - китай-подделка, или оригинал? Ведь, судя по даташиту, производитель гарантирует уровень характеристик в указанном диапазоне температур...

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


Ссылка на сообщение
Поделиться на другие сайты
4 hours ago, Arlleex said:

Открыл даташит на камень. Вижу, что HSI там на 16МГц, а не на 8, как Вы представили.

А второй не MCI, а MSI - он?

Он наверное когда писал, местами перепутал HSI и MSI.

Но это не суть важно, важно что ему надо реально получить 8Мгц на MCO и в 1% уложиться, хоть с того, хоть с того источника.

 

 

 

4 hours ago, Arlleex said:

Да даже если так, очень странно, что такие измерения получили... Чем частоту меряли? Поверенным прибором или китайским осциллографом с алиэкспресс? МК - китай-подделка, или оригинал?

Да какой нафиг алиэкспресс,  товаришь же не радиолюбитель, на али детали покупать.

Спросил - мерял он даже несколькими приборами, флюковским мультиметром и кейсайтовским осциллографом. Измеренное совпададет.

 

4 hours ago, Forger said:

Товарищу передайте, чтобы не путал Datasheet и Reference Manual, у ST они имею разное назначение и ... размер :)

Это как бы известно :) Он для краткости так написал,  но видимо в этом пункт до конца не въехал.

Т.е. получаается что калибровочная константа загружается автоматически при сбросе/старте, и самому ничего делать не надо?

4 hours ago, Arlleex said:

? Ведь, судя по даташиту, производитель гарантирует уровень характеристик в указанном диапазоне температур... 

Пока что он "на столе" получить точную частоту не может, не говоря уже о всем температурном диапазоне.

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

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


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

У меня STM23L476 c часовым кварцем и потому MSI по нему подстраивается.

Но вот STM32F030 есть несколько применений без кварца. Причем работает UART. Там бы такие отклонения внутреннего генератора не позволяли бы иметь нормальную связь.

 

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


Ссылка на сообщение
Поделиться на другие сайты
3 hours ago, serglg said:

Там бы такие отклонения внутреннего генератора не позволяли бы иметь нормальную связь.

UART 5% допускает.

У меня когда-то было на другом семействе  - при комнатной температуре UART работал, а когда горяче или холодно - нет.

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, Allregia сказал:

Т.е. получаается что калибровочная константа загружается автоматически при сбросе/старте, и самому ничего делать не надо?

Достаточно ее случайно не затереть там, куда она загрузилась. Мне однажды по невнимательности это удалось. Симптомы были похожие.

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


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

Смотрим еррату!

Option byte loading can fail if MSI frequency is greater than 8 MHz Description The option byte loading operation can fail if the MSI clock is ON with a frequency equal or greater than 8 MHz before performing an option byte loading by setting OBL_LAUNCH bit in the FLASH _CR register. Some options and engineering bytes values can be corrupted. Workaround If MSI is ON at a frequency equal or higher than 8MHz, It is mandatory to reduce MSI frequency to 4 MHz or less before launching the Option Byte loading operation by setting the OBL_LAUNCH bit in the FLASH_CR register.

Ну и т.д. :)

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти