可靠的MCU伙伴
Design for Reliability
全国服务咨询热线
0757-8185 9361

SWM20x系列电机框架搭建:OPA(PGA)篇



OPA0基准模式

OPA0基准模式OPA0支持OPA和基准两种工作模式,在OPA模式下,OPA0是一个普通的三端运算放大器。在基准模式下,OPA0OPA1OPA2PGA模式提供基准,此时OPA0不可用于放大器,此模式下提供的VREF2V的基准电压输出到OPVOUT0管脚上,OPAOUT0管脚不可作为其他的功能引脚使用,可通过配置OPACR寄存器中OPA0MDOPA0ON位配置。

1-1 OPA0 基准模式内部结构图

PGA功能

PGA功能OPAx支持OPAPGA两种工作模式,在OPA模式下,OPA0OPA1OPA2是一个普通的三端运算放大器。在PGA模式下,使用OPA1OPA2时需配置OPA0为基准模式,此时OPA0是一个正端接内部2V基准的电压跟随器,可通过内部连接,为PGA模式下的OPA1/OPA2提供电压基准,此电压基准会直接输出至OPAOUT0脚,不需要配置或切换外部引脚,此时OPA0只能作为VREF的电压跟随器使用,输出2V的电压,其内部结构图如图1-1所示:在PGA模式下,OPA1OPA2是一个通过选择内置反馈电阻(10k15k20k)选择增益倍数的可编程增益放大器,支持3种增益选项。

OPA1OPA2其内部结构图如图1-2所示:

1-2 OPA1/OPA2 PGA 内部结构图


程序中配置如下(双电阻采样配置模式)

static void OPA_Init(void)

{   

    SYS->ACMPCR |= (1 << SYS_ACMPCR_CMP0MD_Pos);   

      SYS->ACMPCR |= (1 << SYS_ACMPCR_CMP1MD_Pos);

      SYS->ACMPCR |= (1 << SYS_ACMPCR_CMP2MD_Pos);

    //首先将OPA0OPA1OPA2进行OPA模式初始化

    SYS->OPACR |= (1 << SYS_OPACR_OPA0MD_Pos);

      //设置OPA0为电压基准模式OPA0 Mode, 0 OPA   1 PGA

    SYS->PGACR &= ~(1 << SYS_PGACR_OPA0VR_Pos);

    //设置OPA0的电压基准:0 2.0V 1 2.01V 2 1.99V 3 1.98V

//OPA1

    PORT_Init(PORTA, PIN10, PORTA_PIN10_OPA1_INN,   0);

    PORT_Init(PORTA, PIN9, PORTA_PIN9_OPA1_INP,   0);

    //OPA1输入引脚初始化

    SYS->OPACR |= (1 << SYS_OPACR_OPA1MD_Pos);   

//设置OPA1PGA模式0 OPA   1 PGA

    SYS->PGACR |= (1 << SYS_PGACR_OPA1GN_Pos);   

//PGA模式下 OPA1增益反馈电阻选择:0 10K   1 15K   2 20K

    SYS->PGACR |= (1 << SYS_PGACR_OPA1SW_Pos);

// PGA模式下OPA1输出滤波电阻选择:0 1K   1 10K


    //OPA2

    PORT_Init(PORTB, PIN8, PORTB_PIN8_OPA2_INN,   0);

    PORT_Init(PORTB, PIN7, PORTB_PIN7_OPA2_INP,   0);

    //OPA2输入引脚初始化

    SYS->OPACR |= (1 << SYS_OPACR_OPA2MD_Pos);

//设置OPA2PGA模式0 OPA   1 PGA

    SYS->PGACR |= (1 << SYS_PGACR_OPA2GN_Pos);

//PGA模式下 OPA2增益反馈电阻选择:0 10K   1 15K   2 20K

    SYS->PGACR |= (1 << SYS_PGACR_OPA2SW_Pos);

    // PGA模式下OPA2输出滤波电阻选择:0 1K   1 10K

    SYS->OPACR |= (1 << SYS_OPACR_OPA0ON_Pos);

    SYS->OPACR |= (1 << SYS_OPACR_OPA1ON_Pos);

    SYS->OPACR |= (1 << SYS_OPACR_OPA2ON_Pos);

    //OPA0OPA1OPA2开启

}

芯片存在OPAxOUT引脚部分没有引出(内部已经连接),特注释:OPA1OUT对应管脚为A8,请使用ADC0_CH7进行采样;OPA2OUT对应管脚为B9,请使用ADC0_CH8进行采样。