【复旦微FM33LG0系列开发板测评】OPA功能简析
[复制链接]
本帖最后由 北方 于 2021-11-30 12:09 编辑
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);
}
其中在mode选择设定为,FL_OPA_MODE_PGA;
4. 试验和验证
直接启动工程,
编译后下载到开发板,就可以显示输入和输出的方大功能了。
|