Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Измерительный генератор из компаратора stm32l011

Чт дек 06, 2018 16:00:16

Можно ли настроить компаратор так что-бы из него(с соответствующей обвязкой) можно было-бы получить генератор?

Re: Измерительный генератор из компаратора stm32l011

Пт дек 07, 2018 10:43:40

Настраиваю в кубе.
На COMP2_OUT всегда 0 не зависимо от состояния COMP2_INM и COMP2_INP.


/* COMP2 init function */
static void MX_COMP2_Init(void)
{

LL_COMP_InitTypeDef COMP_InitStruct;

LL_GPIO_InitTypeDef GPIO_InitStruct;

/**COMP2 GPIO Configuration
PA2 ------> COMP2_INM
PA3 ------> COMP2_INP
PA4 ------> COMP2_OUT
*/
GPIO_InitStruct.Pin = LL_GPIO_PIN_2;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_InitStruct.Pin = LL_GPIO_PIN_3;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);

GPIO_InitStruct.Pin = LL_GPIO_PIN_4;
GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW;
GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
GPIO_InitStruct.Alternate = LL_GPIO_AF_7;
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);

COMP_InitStruct.PowerMode = LL_COMP_POWERMODE_MEDIUMSPEED;
COMP_InitStruct.InputPlus = LL_COMP_INPUT_PLUS_IO1;
COMP_InitStruct.InputMinus = LL_COMP_INPUT_MINUS_IO1;
COMP_InitStruct.OutputPolarity = LL_COMP_OUTPUTPOL_NONINVERTED;
LL_COMP_Init(COMP2, &COMP_InitStruct);

LL_COMP_SetCommonWindowMode(__LL_COMP_COMMON_INSTANCE(COMP2), LL_COMP_WINDOWMODE_DISABLE);

LL_EXTI_DisableEvent_0_31(LL_EXTI_LINE_22);

LL_EXTI_DisableIT_0_31(LL_EXTI_LINE_22);

}

Re: Измерительный генератор из компаратора stm32l011

Пн дек 10, 2018 16:45:15

Так еще пробывал настраивать:
void COMP2_init(){

RCC->IOPENR |= RCC_IOPENR_GPIOAEN;

GPIOA->MODER &= ~GPIO_MODER_MODE4;
GPIOA->MODER |= GPIO_MODER_MODE2 | GPIO_MODER_MODE3;
GPIOA->MODER |= GPIO_MODER_MODE4_1;
GPIOA ->AFR[0] &= 0xfff0ffff;
GPIOA ->AFR[0] |= 0x00070000;

COMP2->CSR = COMP_CSR_COMP2INNSEL_0;
//COMP2->CSR |= COMP_CSR_COMP2SPEED;
COMP2->CSR |= COMP_CSR_COMP2EN;
}

Все равно выход компаратора всегда в нуле.
Неправильно настраиваю входы?
Ответить