搜索
打印

[PIC®/AVR® MCU] 【CuriosityNano测评报告】+OPAMP外设与MVIO外设测评

[复制链接]
107|1
跳转到指定楼层
楼主
本帖最后由 mxkw0514 于 2021-3-29 22:20 编辑

引言
      在查看AVR128DB48系列芯片的数据手册【1】中,发现该芯片有一大亮点:该芯片含有两个独特的外设——OPAMP外设和Multi-Voltage I/O (MVIO), 可以独立于VDD供电,这个功能是显著的,可以通过内部OPAMP外设和MVIO外设的配合使用,能够解决一些外部通信设备与AVR128DB48的供电电压不一致的问题,这样可以在产品开发过程中节省一些元器件成本。如今申请到的AVR128DB48开发板已经收到,开始完成对AVR128DB48芯片的内部OPAMP外设和MVIO外设进行测试。该篇测评内容包括:
       一、开箱展示
       二、项目开发:
            1、环境搭建
            2、实验:对单片机的OPAMP外设和Multi-Voltage I/O (MVIO)外设进行测评
            3、测评结果
        三、心得


一、开箱展示  
       AVR128DB48开发板一如既往地包含两部分:排针和主板。排针可以焊到半孔上去,也可以插到直接歪斜排列的孔中—方便没有焊接工具的用户。PCB打样对半孔的收费还挺高的,不知道是什么原因。AVR128DB48开发板的正反面图如图1-1和图1-2所示。

                                                 图1-1 AVR128DB48开发板正面图


                                                 图1-2 AVR128DB48开发板反面图

二、项目开发
1、开发环境
   本次使用MPLAB X编译器完成本次的测评。当让也可以使用Atmel studio,这要根据个人喜好进行选择了。打开MPLAB X编译器,然后将AVR128DB48开发板通过USB线与电脑进行连接,MPLAB X就能识别出该开发板。编译器的界面如图2-1所示:

                                                               图2-1 MPLAB界面

2、OPAMP外设和MVIO测评
  在进行OPAMP外设MVIO外设的测评前,首先介绍一下AVR128DB48开发板上的这几个外设功能。
2.1 OPAMP外设    
      AVR128DB48的OPAMP外设使用非常灵活,运算放大器既可以用来放大信号,又可以做成比较器来使用,还可以用来做成跟随器。在OPAMP外设与MVIO外设的配合使用的情况下,一般将OPAMP外设做成跟随器,如图2-2所示:

                                图2-2 跟随器示意图

2.1 MVIO外设
       AVR128DB48具有Multi-Voltage I/O (MVIO),该外设的供电与主电源VDD是独立的,具有极大的灵活性。AVR128DB48的MVIO外设框图如图2-3所示,在PC[7:0]引脚,改组引脚的供电端为VDDIO2,它既可以与VDD相连,又可以外加其它电压(可以是内部OP外设提供,也可以由外部电源通过分压电阻提供),在AVR128DB48开发板上则要进行一定的处理【2】,如图2-4所示,需要去除R204的0欧电阻(如果不用VDD电源)。

                                                图2-3 MVIO框图



                                                    图2-4 MVIO接线图2.2 程序编写

   关于OPAMP外设和MVIO外设的测评程序是在基于Github上的例程上进行修改的【3】,利用AVR128DB48内部分压电阻为OPAMP提供基准,形成跟随器,跟随器输出电压(PD5或者PD2引脚)成为MVIO外设的供电电源(VDDIO2引脚),MVIO外设的IO引脚的高电平就是跟随器的输出电压。原理框图如图2-5所示:

                                                    图2-5 OPAMP外设和MVIO外设组合框图


   程序如下所示,该程序是利用MPLAB X开发环境的MCC模块生成的,所以程序的可读性不是很强,在重要的地方加了标示。在已有的MCC程序上进行了部分的修改,使得MVIO外设在OPAMP外设的供电下产生脉冲波形,通过脉冲波形的电平大小来进行测评。

#define F_CPU 4000000ul
#define CLK_PER 4000000ul
#define OPAMP_MAX_SETTLE_TIME 0x7F
#include <avr/io.h>
#include <math.h>

uint16_t adc_sample();
void adc_init();
void op_amp_init();
void op_amp_setup_int_resistors(uint8_t MUXWIP_gc);

int main(void)
{
    adc_init();
    op_amp_init();
    op_amp_setup_int_resistors(  OPAMP_OP1RESMUX_MUXWIP_WIP1_gc );   //R1 = 14R, R2 = 2R, 跟随器的输出电压为R1/(R2+R3)*VDD=2.88V
    do { PORTC_DIRSET = 0x8; } while(0);  //设置PC3为输出
    while (1)
    {
        uint16_t OP_out = adc_sample();// OP_out为ADC采样值
       while (OP_out>1000)
        {     
          do { PORTC_OUTSET = 0x8; } while(0);  //PC3为高
          do { PORTC_OUTCLR = 0x8; } while(0); //PC3为低         
        }
    }
}

uint16_t adc_sample()
{
    uint16_t res;
    ADC0.COMMAND = ADC_STCONV_bm;
    while(!(ADC0.INTFLAGS & ADC_RESRDY_bm));
    res=ADC0.RES>>4;
    return res;
}
void adc_init()
{
    VREF.ADC0REF =   VREF_REFSEL_VDD_gc ;  //ADC参考电压为VDD
    ADC0.MUXPOS = ADC_MUXPOS_AIN2_gc;
    ADC0.CTRLB= ADC_SAMPNUM_ACC16_gc;
    ADC0.CTRLA= ADC_ENABLE_bm;
}
void op_amp_init()
{
    PORTD.PIN5CTRL = PORT_ISC_INPUT_DISABLE_gc; //OPAMP的输出在OP1中为PD5引脚,在OP0中为PD2引脚
    OPAMP.CTRLA = OPAMP_ENABLE_bm;
    OPAMP.TIMEBASE = (uint8_t) ceil(CLK_PER*0.000001)-1;
    OPAMP.OP1CTRLA = OPAMP_RUNSTBY_bm | OPAMP_ALWAYSON_bm | OPAMP_OP1CTRLA_OUTMODE_NORMAL_gc;
    OPAMP.OP1SETTLE = OPAMP_MAX_SETTLE_TIME;
}
void op_amp_setup_int_resistors(OPAMP_OP1RESMUX_MUXWIP_t MUXWIP_gc)
{
    OPAMP.OP1INMUX = OPAMP_OP1INMUX_MUXNEG_OUT_gc | OPAMP_OP1INMUX_MUXPOS_WIP_gc;
    OPAMP.OP1RESMUX = OPAMP_OP1RESMUX_MUXTOP_VDD_gc|OPAMP_OP1RESMUX_MUXBOT_GND_gc|MUXWIP_gc;
}




三、实验结果
   本次实验的测试图如图3-1所示,去除了开发板上的R204电阻,将OPAMP外设的输出引脚PD5与MVIO外设的电源引脚相连,用示波器的探头夹住MVIO的PC3引脚,观察产生的脉冲波形,波形图如图3-2所示。由图3-2可以看出,脉冲的频率为980KHz,高电平为2.884V(内部分压电阻比较精准),正如数据手册中所说的,MVIO外设的电源与VDD是独立的。所以它可以解决在外部通信设备与单片机VDD电源不一致的情况下,实现通信电平一致。


                                                                 图3-1 实验测试框图




                                                                  图3-2  脉冲波形图

四、实验心得   

      AVR128DB48的OPAMP外设和MVIO外设的实用性很强,在PCB面积受限或者成本受限的情况下具有一定的应用场景。

参考文献
【1】Microchip Technology Inc.AVR128DB28-32-48-64-DataSheet-DS40002247A[DB/OL].(2020)[2021-03-29].https://ww1.microchip.com/downloads/en/DeviceDoc/AVR128DB28-32-48-64-DataSheet-DS40002247A.pdf.
【2】Microchip Technology Inc.Using the Internal OPAMP as Regulated Power Supply forMVIO[DB/OL].(2020)[2021-03-29].https://ww1.microchip.com/downloads/en/Appnotes/Using-Int-OPAMP-Regulated-PowerSup-MVIO-DS00003636A.pdf.
【3】GitHub Inc.avr128db48-opamp-as-regulated-power-supply-mplab-mcc[DB/OL].(2021-03)[2021-03-29].https://github.com/microchip-pic-avr-examples/avr128db48-opamp-as-regulated-power-supply-mplab-mcc.















OPAMP-MVIO.X.rar

144.52 KB, 下载次数: 1

使用特权

评论回复
沙发
| 2021-3-29 14:31 | 只看该作者
这两点的确是DB的特色,赞

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表