Jump to content

    
Sign in to follow this  
lomy

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

Recommended Posts

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

Вопрос по использованию аналогового компаратора. Микроконтроллер 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

Share this post


Link to post
Share on other sites
1 час назад, scifi сказал:

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

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

Share this post


Link to post
Share on other sites
On 11/15/2019 at 7:26 PM, lomy said:

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

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

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this