STM32F302 模拟比较器输出问题
测试STM32F302RB 的模拟比较器的时候 使用PA3,PA4作为 COMPARE2 D的输入,PA2作为COMPARE2的输出, 无论PA3>PA4 还是PA4>PA3 PA2的电平都不翻转。为0.1-0.5V,我以为是我配置除了问题,拿cubemax 配置了一下仍然不能解决问题,结合前段时候用它测试 TIM15 更新事件产生TRGO 触发ADC转换DMA转移数据,使能DMA1_Channel_1中断,中断只进一次,觉得STM32F3系列有较多问题,去年同事用STM32F334做LLC,然后又放弃了,换TI 的 ucd3138(查了下它的AC/DC方案可以做 1KW 99%效率) ,好像官方给的例程就有问题。测试代码如下:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4; //PA3 COMPARE2+PA4 COMPARE2-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA2 COMPARE2_OUT
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_8);
// GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
// GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
//GPIO_Init(GPIOA, &GPIO_InitStructure);
//COMP_StructInit(&COMP_InitStructure);
//COMP_InitStructure.COMP_InvertingInput = COMP_InvertingInput_DAC1OUT1; // 1/2 VREFINT×÷Ϊ±È½ÏÆ÷¸º¼«ÊäÈë
//COMP_InitStructure.COMP_Output = COMP_Output_None; //Êä³ö²»Öض¨Ïò
// COMP_InitStructure.COMP_BlankingSrce=COMP_BlankingSrce_None; //²»Ê¹ÄÜÊä³öÏûÒþ
//COMP_InitStructure.COMP_Mode = COMP_Mode_HighSpeed; //±È½ÏÆ÷¸ßËÙģʽ
// COMP_InitStructure.COMP_OutputPol=COMP_OutputPol_NonInverted; //Êä³ö²»·´Ïò
// COMP_InitStructure.COMP_NonInvertingInput=COMP_NonInvertingInput_IO1; //PA1 ×÷Ϊ COMPARE1 Õý¶ËÊäÈë
//COMP_InitStructure.COMP_Hysteresis = COMP_Hysteresis_High; //Êä³ö³ÙÖ͸ß
//COMP_Init(COMP_Selection_COMP1, &COMP_InitStructure);
COMP_StructInit(&COMP_InitStructure);
COMP_InitStructure.COMP_InvertingInput = COMP_InvertingInput_DAC1OUT1; //PA4 DAC1OUT1 ×÷Ϊ±È½ÏÆ÷¸º¼«ÊäÈë
COMP_InitStructure.COMP_NonInvertingInput=COMP_NonInvertingInput_IO2; //PA3 ×÷Ϊ COMPARE2 Õý¶ËÊäÈë
COMP_InitStructure.COMP_Output = COMP_Output_None; //Êä³öδÁ¬½ÓÆäËûÍâÉè
COMP_InitStructure.COMP_Mode = COMP_Mode_HighSpeed; //
COMP_InitStructure.COMP_Hysteresis = COMP_Hysteresis_No; //Êä³ö³ÙÖ͸ß
COMP_InitStructure.COMP_OutputPol=COMP_OutputPol_NonInverted;
COMP_InitStructure.COMP_BlankingSrce=COMP_BlankingSrce_None;
COMP_Init(COMP_Selection_COMP2, &COMP_InitStructure);
一般情况下,官方例程是不会有问题的。
请检查一下,IO引脚的复用问题,
看看是否已经正确配置了。
页:
[1]