STM32 зал + таймер энкодера синхронизации

Я использую два таймера tim3 и tim4 для подсчета показаний датчика двигателя (tim3) и обработки входов датчика Холла (tim4. Входы ch1, ch2 и ch3 XORed в TI1 модуля TIM4, работающего в режиме интерфейса холла). Теперь я хотел бы синхронизировать два таймера, чтобы при переключении по залу таймер энкодера сбрасывался. Однако кажется, что нет способа объединить режим кодера (в регистре SMS) с режимом сброса, так что счетчик tim3 сбрасывается при переключении tim4 TRGO. Кажется, что я могу выбрать только один режим или другой, но не комбинацию обоих.

Может быть, я неправильно понимаю, как можно объединить два таймера для оценки положения ротора? Каков наилучший способ объединить и синхронизировать показания датчика Холла с показаниями энкодера на stm32 без использования ISR для сброса счетчика вручную? (Предпочтительно, я хочу сделать это автоматически на аппаратном уровне. У меня есть работающее решение вручную, но я не доволен им на 100%).

Чип является stm32f103.

1 ответ

В CR2 каждый таймер имеет выходной сигнал (MMS). В SMCR каждый таймер имеет режимы входного сигнала (SMS).

Когда вы устанавливаете таймер Холла для сравнения импульсов, а таймер энкодера в режим сброса, я думаю, что таймер энкодера будет сбрасывать каждый раз при захвате входа на CH1 таймера Холла.

Если это возможно в вашей микросхеме, зависит от межсоединений между таймерами. См. TIMX Внутреннее соединение триггера (ITR).
Биты SMS уже находятся в режиме кодировщика. Вы не можете иметь как сброс, так и режим кодирования.

Вы можете запустить операцию DMA из памяти в TIMx-> EGR: UG.
TIM3_CH1 может запускать память из полуслов для периферийной работы на канале 6 DMA1 с данными от 0x0001 до TIM4->EGR.
Это заставит TIM4 повторно инициализировать счетчик.

Другие вопросы по тегам