【复旦微FM33LG0系列开发板测评】OPA功能简析
本帖最后由 北方 于 2021-11-30 12:09 编辑<p><span style="font-size:20px;"><strong>1. 芯片功能</strong></span></p>
<p>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模式,功能逻辑框图如下。</p>
<p></p>
<p>低功耗下可以由电池供电,供电回路也比较简单,最大端口电压可以6.5V,比较厉害的,可以和瑞萨的比一下了。标准运行下大致工作电流6.16mA,低功耗以uA计算,</p>
<p>当芯片从 Flash 启动时,FM33LG048 的地址空间分配如下图(256KB Flash,32KB RAM)存储空间分配</p>
<p></p>
<p>在芯片的PMU管理,基准电压等,都提供了高精度高水平的芯片技术,CPU 内核为 Cortex-M0+,符合 ARMv6-M 架构和编程模型;</p>
<p> </p>
<p><span style="font-size:20px;"><strong>2. OPA功能介绍</strong></span></p>
<p>当采用功放功能的时候,CMRR 共模抑制比66~70dB。FM33LG0集成1个运算放大器,可用于放大微弱输入信号,或用于弱驱动信号阻抗匹配。</p>
<p> 典型GBW 2MHz ;典型功耗150uA(正常模式),2uA(低功耗模式); 最大驱动电流500uA; 支持standalone模式、buffer模式、PGA模式(x2, x4, x8, x16) ; OPA输出可连接ADC。</p>
<p>OPA输入有4个通道,OPA输出连接到4个GPIO上,其中OPA1_OUT1不经过模拟开关,以优化输出阻抗;其他3个输出通 路经过模拟开关,默认关闭。</p>
<p> 根据寄存器配置选择AMUX不同通路,可以实现不同的闭环应用,比如buffer、PGA(内置反馈电阻)、 独立运放。输出可以从IO引出,或接给ADC,也可以产生数字信号或中断输出。</p>
<p></p>
<p>其中standalone模式下,输出通过外置的Rf来配置运放的倍数, </p>
<p></p>
<p>Buffer模式下OPA可用于为ADC输入提供阻抗调整,当输入信号频率与OPA的GBW相适应时,配置 为buffer模式的OPA可以增强ADC输入信号的驱动能力。</p>
<p>软件配置方法: 配置OPAxCR.VPSEL和VNSEL选择输入IO ; 配置OPAxCR.OPAxMOD为11,即buffer模式 ;使能OPAx。</p>
<p>在PGA模式下可以通过DAC在OPA正端施加一个直流偏置,可以来自DAC也可以来自外部电压源,</p>
<p></p>
<p> </p>
<p> </p>
<p><span style="font-size:20px;"><strong>3. 范例代码分析</strong></span></p>
<p>范例代码使用PGA模式如下,主程序为main.C</p>
<pre>
<code>int main(void)
{
MF_Clock_Init();
MF_SystemClock_Config();
FL_Init();
MF_Config_Init();
UserInit();
Test_OPA1PGA();
while(1)
{
// LED0_TOG();
// FL_DelayMs(1000);
}
}</code></pre>
<p>具体函数已经封装起来,先配置,然后使能就启动该功能了</p>
<pre>
<code>void Test_OPA1PGA(void)
{
//OPA_PGA_NOINVERT_Init();
OPA_PGA_INVERT_Init();
FL_OPA_Enable(OPA);
}</code></pre>
<p>初始化的过程就是选择GPIO方向,然后设置OPA的功能和配置,代码如下</p>
<pre>
<code>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);
}</code></pre>
<p>其中在mode选择设定为,FL_OPA_MODE_PGA;</p>
<p> </p>
<p><span style="font-size:20px;"><strong>4. 试验和验证</strong></span></p>
<p>直接启动工程,</p>
<p></p>
<p>编译后下载到开发板,就可以显示输入和输出的方大功能了。</p>
<p>FM33LG0在标准运行下的工作电流是6.16mA,低功耗以uA计算,低功耗方面还行吧</p>
Jacktang 发表于 2021-12-1 07:31
FM33LG0在标准运行下的工作电流是6.16mA,低功耗以uA计算,低功耗方面还行吧
<p>这款就是主打低功耗,标称之下还是非常不错的。工作电流正常,低功耗就是漏电流的控制。</p>
<p>TI比较夸张,号称可以达到nA的水平,应该执行的过程中,需要通过编程技术控制应用的功耗。</p>
页:
[1]