Аппаратный энкодер STM32f103CB
Добавлено: 12 дек 2025, 10:50
-----------------------------------------------------------------------------------------------------------------------------------------------------
__ Добавлен ДИР
-----------------------------------------------------------------------------------------------------------------------------------------------------
Используем таймер-2.
Пины по умолчанию PA0, PA1.
Работает в квадратурном режиме измерения. (максимальная точность)
Переход с ...-3,-2,-1,0,1,2,3... происходит без проблем.
На выходе сырые данные, а именно чтение фронтов:
Передний фронт канала A,
Задний фронт канала A,
Передний фронт канала B,
Задний фронт канала B.
Для полный импульс энкодера надо делить на 4.
Буфер по умолчанию имеет диапазон: от -2147483648 до +2147483647.
Энкодер читается на аппаратном уровне без нагрузки на ЦПУ и без прерываний.
Вывод данных зависит от всего кода в целом, а именно от длины цикла, на подсчёт импульсов он не влияет.
Встроенный аппаратный фильтр помех и дребезга контактов имеет 3 уровня делителя, плюс у каждого по 16 вариантов доп. фильтров с предделителями, итого 48 комбинаций.
Можно было и на каждый канал сделать, тогда комбинаций фильтров было бы 768.
Есть переназначение пинов на альтернативные с PA0 и PA1 на PA15 и PB3.
RESET обнуляет таймер.
Step выход сырых данных, если не кратно 4 то есть помехи либо дребезг контактов. (либо скорость энкодера превышает скорость цыкла)
DIR направление вращения
При РА0, РА1 на оставшихся каналах РА3, РА4 ШИМ не работает (можно использовать как вход выход).
При РА15, РВ3 на оставшихся каналах PB10, PB11 ШИМ не работает (можно использовать как вход выход).