【复旦微FM33LG0系列开发板测评】OPA功能简析
原帖地址:【复旦微FM33LG0系列开发板测评】OPA功能简析 - 国产芯片交流 - 电子工程世界-论坛 (eeworld.com.cn)
1. 芯片功能 FM33LG0的主要特性包括,宽电压范围1.65~5.5V,最高主频64Mhz,64/128/256KB Flash,16/32/32KB RAM,12bit 2Msps SAR-ADC和12bit 1Msps DAC,最大支持4COM×44SEG / 6COM×42SEG / 8COM×40SEG,ES支持ECB/CBC/CTR/GCM/GMAC模式,功能逻辑框图如下。 
低功耗下可以由电池供电,供电回路也比较简单,最大端口电压可以6.5V,比较厉害的,可以和瑞萨的比一下了。标准运行下大致工作电流6.16mA,低功耗以uA计算,  当芯片从 Flash 启动时,FM33LG048 的地址空间分配如下图(256KB Flash,32KB RAM)存储空间分配

在芯片的PMU管理,基准电压等,都提供了高精度高水平的芯片技术,CPU 内核为 Cortex-M0+,符合 ARMv6-M 架构和编程模型;
2. OPA功能介绍 当采用功放功能的时候,CMRR 共模抑制比66~70dB。FM33LG0集成1个运算放大器,可用于放大微弱输入信号,或用于弱驱动信号阻抗匹配。 典型GBW 2MHz ;典型功耗150uA(正常模式),2uA(低功耗模式); 最大驱动电流500uA; 支持standalone模式、buffer模式、PGA模式(x2, x4, x8, x16) ; OPA输出可连接ADC。 OPA输入有4个通道,OPA输出连接到4个GPIO上,其中OPA1_OUT1不经过模拟开关,以优化输出阻抗;其他3个输出通 路经过模拟开关,默认关闭。 根据寄存器配置选择AMUX不同通路,可以实现不同的闭环应用,比如buffer、PGA(内置反馈电阻)、 独立运放。输出可以从IO引出,或接给ADC,也可以产生数字信号或中断输出。 
其中standalone模式下,输出通过外置的Rf来配置运放的倍数, 

Buffer模式下OPA可用于为ADC输入提供阻抗调整,当输入信号频率与OPA的GBW相适应时,配置 为buffer模式的OPA可以增强ADC输入信号的驱动能力。 软件配置方法: 配置OPAxCR.VPSEL和VNSEL选择输入IO ; 配置OPAxCR.OPAxMOD为11,即buffer模式 ;使能OPAx。 在PGA模式下可以通过DAC在OPA正端施加一个直流偏置,可以来自DAC也可以来自外部电压源, 
3. 范例代码分析 范例代码使用PGA模式如下,主程序为main.C - int main(void)
- {
- MF_Clock_Init();
- MF_SystemClock_Config();
- FL_Init();
- MF_Config_Init();
- UserInit();
- Test_OPA1PGA();
- while(1)
- {
- // LED0_TOG();
- // FL_DelayMs(1000);
- }
- }
复制代码具体函数已经封装起来,先配置,然后使能就启动该功能了 - void Test_OPA1PGA(void)
- {
- //OPA_PGA_NOINVERT_Init();
- OPA_PGA_INVERT_Init();
- FL_OPA_Enable(OPA);
- }
复制代码初始化的过程就是选择GPIO方向,然后设置OPA的功能和配置,代码如下 - void OPA_PGA_INVERT_Init(void)
- {
- FL_GPIO_InitTypeDef GPIO_InitStruct;
- FL_OPA_InitTypeDef OPA1_InitStruct;
- //OPA1正端输入,INP1
- GPIO_InitStruct.pin = FL_GPIO_PIN_11;
- GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
- GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- GPIO_InitStruct.pull = FL_DISABLE;
- GPIO_InitStruct.remapPin = FL_DISABLE;
- FL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- //OPA1负端输入,INN2
- GPIO_InitStruct.pin = FL_GPIO_PIN_6;
- GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
- GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- GPIO_InitStruct.pull = FL_DISABLE;
- GPIO_InitStruct.remapPin = FL_DISABLE;
- FL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- //OPA1输出,OUT
- GPIO_InitStruct.pin = FL_GPIO_PIN_12;
- GPIO_InitStruct.mode = FL_GPIO_MODE_ANALOG;
- GPIO_InitStruct.outputType = FL_GPIO_OUTPUT_PUSHPULL;
- GPIO_InitStruct.pull = FL_DISABLE;
- GPIO_InitStruct.remapPin = FL_DISABLE;
- FL_GPIO_Init(GPIOB, &GPIO_InitStruct);
- //OPA1配置
- OPA1_InitStruct.INP = FL_OPA_INP_SOURCE_INP1;
- OPA1_InitStruct.INN = FL_OPA_INN_SOURCE_INN2; //只有INN2通道支持反相PGA模式
- OPA1_InitStruct.mode = FL_OPA_MODE_PGA;
- OPA1_InitStruct.negtiveToPin = FL_DISABLE;
- OPA1_InitStruct.gain = FL_OPA_GAIN_INVERT_X7;
- OPA1_InitStruct.lowPowermode = FL_DISABLE;
- OPA1_InitStruct.PGAModeSelect = FL_OPA_PGA_MODE_FB_TO_NEGATIVE;
- FL_OPA_Init(OPA, &OPA1_InitStruct);
- }
复制代码4. 试验和验证 直接启动工程, 
编译后下载到开发板,就可以显示输入和输出的方大功能了。
|