• 正文
  • 相关推荐
申请入驻 产业图谱

【FOC相关外设】内部OPA的应用

07/13 08:39
175
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、OPA介绍

CW32L012 集成两路独立轨到轨运算放大器,支持 1.7~5.5V 宽电压供电,具备正常与低功耗两种工作模式,适配低功耗锂电产品设计。

运放支持多路内外输入切换,同相端可接入外部模拟信号或内部 DAC 电压,反相端可选外部引脚输入,输出可直连片内 ADC,省去外围缓冲电路芯片自带失调电压自动校准功能,有效提升小信号采集精度。

电气性能优秀,正常模式带宽可达 2MHz,低功耗模式大幅降低静态功耗,输入输出接近电源轨。常应用于电流采样放大、电压信号缓冲、有源滤波、传感器信号调理等场景,精简外围电路,降低硬件成本,适配各类低功耗模拟采集控制系统,核心特性如下:

数量:2 个独立 OPA(OPA1、OPA2)

供电:1.7V–5.5V,轨到轨输入 / 输出(RRIO)

功耗:正常 / 低功耗双模式,可在 DeepSleep 下运行

输入

同相端(INP):3 路外部 + 1 路内部 DAC(DAC_OUT)

反相端(INN):2 路外部输入

输出:可映射到 GPIO 引脚,也可内部直连 ADC/VC

校准:内置失调电压校准,支持软件 / 事件触发

应用:信号放大、电流采样、电压跟随、有源滤波、比较器前置

二、OPA基本原理

运算放大器(OPA)是一种高增益、高输入阻抗、低输出阻抗模拟集成电路,核心由多级差分放大电路构成,主要包含同相输入端(+)、反相输入端(-)和输出端三个关键引脚,广泛应用于信号放大、缓冲、滤波等场景。

OPA工作遵循两大理想特性:一是“虚短”,闭环工作时,正负输入端电压近似相等,差值趋近于零;二是“虚断”,两个输入端几乎无电流流入,输入阻抗极高,可避免影响被测信号源。其核心工作逻辑是放大正负输入端的电压差值,内部开环增益极高,输出电压受电源电压限制,无法无限放大,需通过外接反馈网络稳定工作。

实际应用中,OPA主要有两种常用接法:电压跟随器(输出直连反相端,增益为1,用于信号缓冲隔离)和比例放大器(外接电阻构成负反馈,精准设定放大倍数)。负反馈是OPA稳定工作的关键,可固定放大倍数、降低信号失真、稳定输出电压,适配各类模拟信号调理需求,是电子设备模拟电路的核心器件。

三、配置流程

本实验使用OPA外设进行,需要开启OPA时钟,使用__SYSCTRL_OPA_CLK_ENABLE宏定义开启时钟;

配置引脚,设置 OPA 通道对应的 GPIO 引脚为模拟功能;

使用结构体OPA_InitTypeDef,对OPA进行配置,使能正端模拟输入信号 INPy,使能负端模拟输入信号 INNy;

选择外部放大模式,使能模拟输出OUT,使能OPA;

选择电平校准,使能校准功能,启动电平校准;

延时等待规定的校准时长,停止电平校准;

通过ADC采样OPA输出信号

四、配置OPA

 

void OPA_Configuration(void){    __SYSCTRL_GPIOA_CLK_ENABLE();    __SYSCTRL_GPIOB_CLK_ENABLE();    GPIO_InitTypeDef gpio_init_struct;    gpio_init_struct.IT = GPIO_IT_NONE;    gpio_init_struct.Mode = GPIO_MODE_ANALOG;    gpio_init_struct.Pins = GPIO_PIN_7;    GPIO_Init(CW_GPIOA, &gpio_init_struct);    AFx_OPA1INN2_PA07();    gpio_init_struct.Pins = GPIO_PIN_0;    GPIO_Init(CW_GPIOB, &gpio_init_struct);    AFx_OPA1OUT_PB00();    __SYSCTRL_OPA_CLK_ENABLE();    OPA_InitTypeDef opa_init_sturct;    opa_init_sturct.InputP = OPA_INPUT_INP2;    opa_init_sturct.InputN = OPA_INPUT_INN2;    opa_init_sturct.Bias = OPA_BIAS_8UA_4US;    opa_init_sturct.PgaGain = OPA_PGA_GAIN2;    opa_init_sturct.WorkMode = OPA_WORKMODE_STANDALONE;    OPA_Init(CW_OPA1, &opa_init_sturct);    OPA_AutoZeroTrig_Config(CW_OPA1, OPA_AZCLOCK_PCLK_DIV4, OPA_AZPERIOD_AZCLK512, OPA_AZTRIGSRC_ADC1START);    OPA_Start(CW_OPA1);}

五、数据采集

在main.c中采集数据,初始化外设,调用ADC_GetSqr0Result函数获取adc转换序列0中的adc原始数据,每延时500ms,调用UART1_SendBytes函数通过串口发送到上位机

 

int main(void){    uint16_t adc_value = 0;    SYSCTRL_HSI_Enable(SYSCTRL_HSIOSC_DIV1);    SYSCTRL_HCLKPRS_Config(SYSCTRL_HCLK_DIV1);    SYSCTRL_PCLKPRS_Config(SYSCTRL_PCLK_DIV1);    SYSCTRL_SystemCoreClockUpdate(96000000);    InitTick(96000000);    Int_Uart_Init();    GPIO_Configuration();    OPA_Configuration();    ADC_Configuration();    UART1_SendBytes("hello,world!", 12);    while (1)    {        ADC_GetSqr0Result(CW_ADC1, &adc_value);        sprintf(convert_string, "%d", adc_value);        UART1_SendBytes((uint8_t*)convert_string, 4);        SysTickDelay(500);    }}

六、实验现象

通过原始数据计算:2100 / 4096 * 5=2.563V,最后得到了2.563V的一个电压值,和在采集A相相电流的电路中有一个2.5V的偏置电压大致相等。

实验例程如下:

通过网盘分享的文件:OPA_and_ADC.zip

链接: https://pan.baidu.com/s/13Fe61RT6eYeT0NngDCzKig?pwd=L012 提取码: L012

扫码加入QQ群3群| 610403240

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录

以开放、共享、互助为理念,致力于构建武汉芯源半导体CW32系列MCU生态社区。无论是嵌入式MCU小自还是想要攻破技术难题的工程师,亦或是需求解决方案的产品经理都可在CW32生态社区汲取营养、共同成长。