Калькулятор параметров таймера STM32
На данной странице можно выполнить расчет таймера STM32 для выбора подходящих значений регистров ARR и PSC для программирования генерации прерываний на основе микроконтроллера. Чтобы рассчитать конфигурацию таймера требуется указать интервал прерывания таймера, рабочую тактовую частоту микроконтроллера и ширину регистра.
Как рассчитать таймер STM32?
Для расчета значений ARR (Auto-Reload Register) и PSC (Prescaler) таймера STM32 используется базовая формула периода прерывания:
T = [(PSC + 1) × (ARR + 1)] / F
- T - период прерывания;
- PSC - коэффициент предварительного делителя частоты;
- ARR - значение периода счетчика (регистра автоперезагрузки);
- F - тактовая частота микроконтроллера.
Т.е. каждое увеличение счетчика на «1» происходит за время «(PSC + 1)/F». Прерывание возникает, когда счетчик достигает значения «ARR».
Из-за того, что у нас две неизвестные переменные, дальнейший расчет обычно сводится к перебору значения предделителя «PSC», а формула преобразуется для решения относительно «ARR»:
ARR = (T × F) / (PSC + 1) - 1
Для перебора подходящих значений «PSC», необходимо еще раз перекомпоновать начальную формулу до вида:
(PSC + 1) × (ARR + 1) = T × F
Чтобы можно было найти значения, которые либо кратны частоте, либо частота кратна им.
Далее необходимо вычислить общее количество тактов за один полный период прерывания. Это можно описать формулой:
N = T × F
После нужно найти целые числа «PSC» и «ARR» такие, что:
(PSC + 1) × (ARR + 1) = N
при ограничениях:
- 0 ≤ PSC ≤ 65535
- 0 ≤ ARR ≤ ARRmax
- ARRmax = 2ⁿ - 1 (n = 16 или 32 бита)
Следующий шаг связан с подбором делителей. Для этого значение «N» нужно разложить на два множителя, два целых числа «D₁» и «D₂» таких, что:
D₁ × D₂ = N
- D₁ = PSC + 1
- D₂ = ARR + 1
В идеальном случае, для минимальной ошибки округления и максимальной точности, получить ситуацию:
D₁ ≈ D₂ ≈ √N
Решение существует если:
- N ≤ 65536 × (ARRmax + 1)
- N ≥ 1
Если решение найдено:
PSC = D₁ - 1
Обычно «PSC» выбирают таким образом, чтобы «ARR» было как можно больше для максимальной точности.
После этого значение «PSC» подставляют в формулу:
ARR = (T × F) / (PSC + 1) - 1
Для проверки вычисляется фактический период:
Tф = [(PSC + 1) × (ARR + 1)] / F
И сравнивается с требуемым периодом «T».