Перейти к содержанию
    

STM32 COMP Компаратор

Здравствуйте!

Вопрос по использованию аналогового компаратора. Микроконтроллер STM32L476, периферия COMP2. В компараторе задействован Input+ соответственно на него подается аналоговый сигнал, Input- на нем установлено ¾ Internal VRef и включен External Output, в моем случае это 57 нога контроллера на нее выводится сигнал полученный с компаратора. Инициализация MX_COMP2_Init(); проходит нормально. Столкнулся с тем, что при старте компаратора HAL_COMP_Start(&hcomp2); он кратковременно срабатывает на время 40 мкс., выдает высокий потенциал. Это происходит только один раз при старте, дальше он работает абсолютно корректно, но если его остановить HAL_COMP_Stop(&hcomp2); и запустить заново, то при старте он опять сработает. Время всегда одинаковое 40 мкс. При работе использую библиотеку HAL, с помощью отладчика нашел место, где переключается порт:

/* Enable the selected comparator */

SET_BIT(hcomp->Instance->CSR, COMP_CSR_EN);

Это установка бита EN, им можно управлять напрямую без HAL результат тот же, при установке EN компаратор разово срабатывает. Может, кто подскажет, как запустить компаратор, что бы не было этого импульса, иначе в программу приходится вставлять кучу костылей, которые проверяют, что появившийся импульс пришел не от запуска компаратора.

Заранее спасибо.

Comp.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очевидно, нужно сначала 1) COMP_CSR_EN, затем 2) задержка на переходные процессы, затем 3) сконфигурировать 57 ногу как Alternate Function.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, scifi сказал:

Очевидно, нужно сначала 1) COMP_CSR_EN, затем 2) задержка на переходные процессы, затем 3) сконфигурировать 57 ногу как Alternate Function.

Да 57 нога так и настроена. А на счет задержки, хотелось бы как то по другому сделать, т.к. у меня используется прерывание от компаратора в котором запускается АЦП и таймеры. Получается так, что компаратор запустился и сразу же вызывается прерывание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 11/15/2019 at 7:26 PM, lomy said:

Да 57 нога так и настроена.

Это прекрасно. Но имелось в виду "надо поменять порядок инициализации".

On 11/15/2019 at 7:26 PM, lomy said:

А на счет задержки, хотелось бы как то по другому сделать, т.к. у меня используется прерывание от компаратора в котором запускается АЦП и таймеры. Получается так, что компаратор запустился и сразу же вызывается прерывание.

Очевидно, здесь тоже надо поменять порядок инициализации. Сначала COMP, а затем, после завершения переходных процессов при его включении, настраиваем прерывание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...