STM32F302 PWM Input Настройки CubeMX

Я пытаюсь настроить вход ШИМ на STM32F302R8 для расчета частоты и рабочего цикла. В справочном руководстве STM32F302x8 говорится, что нам нужно отобразить IC1 в TI1 (CC1S = 01) и отобразить IC2 в TI1.

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

Чтобы соответствовать тому, что предлагает справочное руководство STM32F302x8, мне нужно, чтобы IC Selection был Direct для канала 1 и Indirect для канала 2. Я жестко запрограммировал настройки, и входы PWM работали.

Я хотел настроить это в CubeMX, но он позволяет только IC Selection = Direct. И наличие для обоих каналов значения Direct не работает, потому что счетчик канала IC 1 всегда возвращает 0.

введите здесь описание изображения

введите здесь описание изображения

Что я здесь делаю не так? Я не уверен, как правильно настроить вход ШИМ в STM32CubeMX.


person Ken Lin    schedule 02.02.2020    source источник


Ответы (2)


У меня почти нет опыта работы с CubeMX, но, похоже, вам нужно выбрать его из раскрывающегося меню Channel2 в окне Mode.

 введите описание изображения здесь

person Tagli    schedule 02.02.2020
comment
Вау, похоже, это так. Я действительно запутался в пользовательском интерфейсе CubeMX. Вы также знаете разницу между прямым использованием на обоих каналах и прямым на одном канале и непрямым на другом? Я видел примеры с обеими конфигурациями. - person Ken Lin; 02.02.2020
comment
В этом случае IC2 подключается к физическому выводу TIMx_CH2. Я предполагаю, что в этой конфигурации все еще можно измерить сигнал ШИМ, но вам нужно подключить один и тот же сигнал к 2 физическим контактам (и это не имеет большого смысла). Конечно, эта конфигурация может быть полезна для обнаружения периодов (но не рабочих циклов) двух отдельных сигналов. - person Tagli; 02.02.2020
comment
Вы про конфигурацию, в которой оба канала прямые? - person Ken Lin; 02.02.2020
comment
Например, если оба IC1 и IC2 являются прямыми, это означает, что IC1 подключен к выводу TIMx_CH1, а IC2 подключен к выводу TIMx_CH2. - person Tagli; 02.02.2020
comment
Замечательно, я думаю, что теперь это имеет для меня больше смысла. Однако, когда я сопоставляю IC1 и IC2 с TI1, что это на самом деле делает? Означает ли это, что я подключаю TIMx_CH1 как к IC1, так и к IC2? Что представляет собой TI1? - person Ken Lin; 02.02.2020
comment
Точно. Два канала IC смотрят один и тот же сигнал. Но один из них ищет нарастающие фронты, а другой - падающие. Конечно, они получают 2 разных значения. Это позволяет определить как период, так и рабочий цикл. Я полагаю, что T1 представляет собой физический вход TIMx_CH1. Он используется, чтобы отличить его от OC1 (выход), который также может быть подключен к TIMx_CH1. - person Tagli; 02.02.2020

Если вы оставите что-либо в конфигурации TIM по умолчанию, вы можете выбрать объединенные каналы в режим ввода PWM, который автоматически настроит все. однако это то же самое, что показано на скриншоте @ Tagli.

person Crazy_Dave    schedule 30.07.2020
comment
Итак, Crazy_Dave, это устранило проблему? Я немного запутался в последней части вашего ответа. - person Neil; 30.07.2020
comment
Я имею в виду, что если вы выберете режим ввода ШИМ на канале 1 в меню комбинированных каналов, автоматически настроенные параметры будут такими же, как показано на скриншоте Тагли. Такая конфигурация отлично решает мою проблему. После того, как CubeMX сгенерирует базовый код, вам просто нужно активировать прерывания на обоих каналах с помощью функции HAL_TIM_OC_Start_IT в main () и прочитать CCR1 / 2 с помощью HAL_TIM_ReadCapturedValue в HAL_TIM_IC_CaptureCallback. Затем можно легко рассчитать частоту и рабочий цикл. Кстати, вам не нужно добавлять 1 к значению чтения CCR или обеспечивать CCR1! = 0 с помощью HAL_TIM_ReadCapturedValue - person Crazy_Dave; 03.08.2020
comment
Кроме того, вы должны установить флажок захвата сравнения прерываний в настройках NVIC - person Crazy_Dave; 03.08.2020