STM32F103CB апаратный ШИМ на все 16 каналов от 0,017гц до 36мгц с некоторыми функциями
Добавлено: 27 дек 2025, 09:53
Продвинутый ШИМ блок для стм.
------------------------------------------------------------------------ -- добавлены все ремапы
-- добавлена инверсия каналов
------------------------------------------------------------------------
-- добавлены варианты синхронизаций таймеров по Reset mode
------------------------------------------------------------------------
-- добавлена настройка повышенной точности синхронизации
------------------------------------------------------------------------
Имеем 16 каналов ШИМ: частота от 0,017 Гц (примерно 58 сек период) до 36 МГц.
Все 22 пинов для переназначения разбитые по ремапам.
Максимальная регулировка до 24 МГц (конечная частота больше зависит от нагрузки, ёмкостной может просаживаться).
Предельная частота до 36 МГц, но там как вкл/выкл и в виде синусоиды.
Функции:
-- Центральное выравнивание ШИМ.
-- Инверсия любого канала ШИМ.
-- Синхронизация таймеров по Reset mode.
-- Повышенная точность синхронизации.
Заложена автоадаптация предделителя частоты.
Она позволяет выставлять, получать частоту с высокой точностью от выбранной.
К примеру, на обычном делителе получалось получить для 0,5Гц = 0,504Гц, то теперь частота выставляется в примерно 0,499995Гц.
Синхронизация таймеров.
Частоты у синхронизированых таймеров выставить одинаковые.
Если включим режим Мастера, то остальные выбраные слейвы будут ровняться на фронт этого таймера.
Мастера может быть два и к каждому свой слейв подключен.
Либо Мастер один и к нему подключены любое количество слейвов.
Если включить режим Слейв - Reset mode, то получим ровный старт, привязанный к фронту мастера.
Синхронизация выполняется в каждом периоде Мастера.
Повышенная точность синхронизации.
Вероятно требует отдельно включения из за накладных ресурсов в аппаратной части для высокой синхронизации, возможно и по другой причине.
На разных слейвах можно включать выборочно.
В общем если нужна высокая точность то вкл если нет то нетрогаем.
Инверсия канала ШИМ — меняет полярность выходного сигнала таймера. Вместо стандартного активного HIGH уровня (сигнал HIGH при заполнении) выход переключается в активный LOW уровень (сигнал LOW при заполнении).
Для работы:
N-канальные MOSFET (требуют active high)
P-канальные MOSFET (требуют active low):
Светодиод с общим катодом
Светодиод с общим анодом
И прочие драйверы со своей логикой
Так же можно включить центрально-выровненное ШИМ, для уменьшения гармоник применяемый для моторов.
Для обычных светодиодов, нагревателей и вентиляторов не нужен, а вот для управления моторами, мостовыми схемами и возможно борьба с ЭМП.
Выглядит на 4 канала это вот так, собственно, как и ожидалось из названия:
(в обычном режиме все фронты каналов одного таймера выровнены и стартуют синхронно)
Ограничение таймера: одна частота на таймер.
Все 4 канала таймера работают на этой одной частоте.
Для генерации двух разных частот необходимо использовать два отдельных ШИМ-таймера.
Здесь нету привычных и условно бесполезных рамок в виде битности на скважность (1023, 4095).
Здесь всё вычисляется автоматически под максимум скважности до 65535 (попытка использовать возможности МК по максимум), от чего открываются возможности широкого масштабирования и точности позиционирования.
Перед работой нужно только узнать диапазон скважности на выходе PWM_info (у каждой частоты он посути разный):
— либо загружается проверочный код для считывания показаний, и далее это число применяется в масштабировании;
— либо, ещё проще, на него вешается переменная или клемма, и на блок масштабирования ко входу как максимальное значение масштабирования.
Больше ничего не требуется.
выбор шима все 16 каналов:
Таймер-1:
Канал 1 (CH1): PA8
Канал 2 (CH2): PA9
Канал 3 (CH3): PA10
Канал 4 (CH4): PA11 - отключается усб (пока так)
Таймер-2: Без переназначения
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение наоборот
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-2: Полное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-3: Без переназначения
Канал 1 (CH1): PA6
Канал 2 (CH2): PA7
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-3: Частичное переназначение
Канал 1 (CH1): PB4 - отключает джетег
Канал 2 (CH2): PB5
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-4:
Канал 1 (CH1): PB6
Канал 2 (CH2): PB7
Канал 3 (CH3): PB8
Канал 4 (CH4): PB9
------------------------------------------------------------------------ -- добавлены все ремапы
-- добавлена инверсия каналов
------------------------------------------------------------------------
-- добавлены варианты синхронизаций таймеров по Reset mode
------------------------------------------------------------------------
-- добавлена настройка повышенной точности синхронизации
------------------------------------------------------------------------
Имеем 16 каналов ШИМ: частота от 0,017 Гц (примерно 58 сек период) до 36 МГц.
Все 22 пинов для переназначения разбитые по ремапам.
Максимальная регулировка до 24 МГц (конечная частота больше зависит от нагрузки, ёмкостной может просаживаться).
Предельная частота до 36 МГц, но там как вкл/выкл и в виде синусоиды.
Функции:
-- Центральное выравнивание ШИМ.
-- Инверсия любого канала ШИМ.
-- Синхронизация таймеров по Reset mode.
-- Повышенная точность синхронизации.
Заложена автоадаптация предделителя частоты.
Она позволяет выставлять, получать частоту с высокой точностью от выбранной.
К примеру, на обычном делителе получалось получить для 0,5Гц = 0,504Гц, то теперь частота выставляется в примерно 0,499995Гц.
Синхронизация таймеров.
Частоты у синхронизированых таймеров выставить одинаковые.
Если включим режим Мастера, то остальные выбраные слейвы будут ровняться на фронт этого таймера.
Мастера может быть два и к каждому свой слейв подключен.
Либо Мастер один и к нему подключены любое количество слейвов.
Если включить режим Слейв - Reset mode, то получим ровный старт, привязанный к фронту мастера.
Синхронизация выполняется в каждом периоде Мастера.
Повышенная точность синхронизации.
Вероятно требует отдельно включения из за накладных ресурсов в аппаратной части для высокой синхронизации, возможно и по другой причине.
На разных слейвах можно включать выборочно.
В общем если нужна высокая точность то вкл если нет то нетрогаем.
Инверсия канала ШИМ — меняет полярность выходного сигнала таймера. Вместо стандартного активного HIGH уровня (сигнал HIGH при заполнении) выход переключается в активный LOW уровень (сигнал LOW при заполнении).
Для работы:
N-канальные MOSFET (требуют active high)
P-канальные MOSFET (требуют active low):
Светодиод с общим катодом
Светодиод с общим анодом
И прочие драйверы со своей логикой
Так же можно включить центрально-выровненное ШИМ, для уменьшения гармоник применяемый для моторов.
Для обычных светодиодов, нагревателей и вентиляторов не нужен, а вот для управления моторами, мостовыми схемами и возможно борьба с ЭМП.
Выглядит на 4 канала это вот так, собственно, как и ожидалось из названия:
(в обычном режиме все фронты каналов одного таймера выровнены и стартуют синхронно)
Ограничение таймера: одна частота на таймер.
Все 4 канала таймера работают на этой одной частоте.
Для генерации двух разных частот необходимо использовать два отдельных ШИМ-таймера.
Здесь нету привычных и условно бесполезных рамок в виде битности на скважность (1023, 4095).
Здесь всё вычисляется автоматически под максимум скважности до 65535 (попытка использовать возможности МК по максимум), от чего открываются возможности широкого масштабирования и точности позиционирования.
Перед работой нужно только узнать диапазон скважности на выходе PWM_info (у каждой частоты он посути разный):
— либо загружается проверочный код для считывания показаний, и далее это число применяется в масштабировании;
— либо, ещё проще, на него вешается переменная или клемма, и на блок масштабирования ко входу как максимальное значение масштабирования.
Больше ничего не требуется.
выбор шима все 16 каналов:
Таймер-1:
Канал 1 (CH1): PA8
Канал 2 (CH2): PA9
Канал 3 (CH3): PA10
Канал 4 (CH4): PA11 - отключается усб (пока так)
Таймер-2: Без переназначения
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PA2
Канал 4 (CH4): PA3
Таймер-2: Частичное переназначение наоборот
Канал 1 (CH1): PA0
Канал 2 (CH2): PA1
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-2: Полное переназначение
Канал 1 (CH1): PA15 - отключает джетег
Канал 2 (CH2): PВ3 - отключает джетег
Канал 3 (CH3): PВ10
Канал 4 (CH4): PВ11
Таймер-3: Без переназначения
Канал 1 (CH1): PA6
Канал 2 (CH2): PA7
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-3: Частичное переназначение
Канал 1 (CH1): PB4 - отключает джетег
Канал 2 (CH2): PB5
Канал 3 (CH3): PB0
Канал 4 (CH4): PB1
Таймер-4:
Канал 1 (CH1): PB6
Канал 2 (CH2): PB7
Канал 3 (CH3): PB8
Канал 4 (CH4): PB9