tag 标签: aduc7026

相关博文
  • 热度 11
    2015-1-12 17:38
    767 次阅读|
    0 个评论
                                                  ADuc7026学习-ADC            进度有点慢,手工做的东西不是很靠谱,不懂是不是JTAG接口电路的问题,有时候你随便插拔都用的好好的,可是有时候你动一下就下不了程序了,keil不是提示算法加载不成功就是提示TDO一直为高,可是有时候你放一晚或者插拔一下又能下了。郁闷...          好了,题外话不扯那么多,开撸.....          开撸之前咱来预热下,首先比较器,上图 比较比较顾名思义就是起到比较的作用。当比较器的同相端电压高于反相端电压时,输出端输出高电平,反之,当同相端电压低于反相端电压时,输出端输出低电平。这里我们先记住比较器的这个特性。         接着是DAC,上图          DAC又叫数模转化器,它能把数字信号转换成模拟信号。比如上图我们看到的是一个八位的DAC,这里假设它是电压型DAC,参考电压Vref = 5V,那么当我们从数据口D0~D7输入0-255之间的某个数字时,输出端输出相应的模拟电压Vo(0~5V)。比如通过D0~D7输入数字量0x00时,输出端电压Vo为0V,输入数字量为0xff时...输出端电压为5V。          好,基于以上的基础,现在要求我们用一个比较器、一个DAC和单片机实现测量一个外部电压,这个外部电压在0~5V范围内。那么我们可以这样做,上图          在上面的这个电路图中,DAC的参考电压为Vref= 5V,然后DAC为电压输出型DAC,它的输出端和比较器的反相端接在了一起,然后外部电压Vx从同相端输入,单片机通过给DAC输入不同的数字量控制DAC输出0~5V之间的模拟电压,同时通过引脚a检测比较器输出电压。那么要想测出外部电压Vx,我们可以这样编程实现:(假如Vx等于2V) 单片机先给DAC输入数字量0x00,控制DAC输出0V的模拟电压,然后单片机判断引脚a是否变为低电平,如果是高电平,加大输给DAC的数字量,每次加一,数字量依次为0x01、0x02、0x03...相应的DAC输出的模拟电压依次为20mv、40mv...只要引脚a电平为高,就一直加,直到引脚a变为低电平。当引脚a变为a电平的时候,因为我们的Vo是以20mv的电压为增量慢慢的接近Vx的,所以此时的反相端电压我们可以认为Vo=Vx,这样我们就测出了这外部电压Vx。 从上面可以看出比较器+DAC+其他器件 就可以做成一个ADC,ADC的精度由DAC决定,这种ADC我们叫逐次逼近型ADC。   PS:ADC又叫模数转换器,他能把模拟型号转换成数字信号。八位的ADC,参考电压 Vref = 5V的时候,是把5V电压分成了28  = 256份,一份为5/256mv约等于20mv(这个5/256我们通常叫最小分辨率),然后0~20mv范围内的模拟电压用数字量0x00表示,20~40mv范围内的模拟电压用0x01表示,以此类推......      
  • 热度 17
    2015-1-12 17:37
    1206 次阅读|
    0 个评论
    ADCSTA是一个ADC状态寄存器,也是八位。它指示ADC转换结果已完成。 ADCSTA寄存器只有一个位Bit0(ADCReady),表示ADC的转换状态。在一次ADC转换完成后该位置1,并且产生一个ADC中断。当读取ADCDATMMR时,该位自动清0。在ADC进行转换时, 也可以通过外部ADC BUSY 引脚读取ADC的工作状态。 在转换期间, 该引脚上为高电平; 当转换结束后, ADC BUSY引脚变为低电平。如果通过ADCCON寄存器使能,则可以在P0.5引脚输出ADC BUSY 的状态 (参见 “通用输入/输出” 部分) 。 ADCDAT为ADC数据结果的32位寄存器。里面存放12位ADC转换结果,其中高四位存放符号位,底16位保留,27~16保存的是12位ADC转换结果。(在全差分模式下,其结果是二进制补码格式。在伪差分模式和单端模式下,结果是标准二进制格式表示。) ADCRST寄存器可以复位ADC的数字接口。通过向ADCRST中写入任意数据,可恢复所有ADC寄存器到默认值。 ADCOF是一个10位偏移校准寄存器。 那好,我们下面来编程调用ADC进行电压测量 上面介绍了那么多个寄存器,但其实在一般的场合只用配置其中几个个就可以了,并不是全部都需要用到,比如最简单的 #include int main(void) {     int Result=0;        ADCCON = 0x20;//至少在开启电源5us之后再开始ADC转换    Delay(5);     //5us短延时    ADCCP = 0x00; //选择ADC0转换通道     REFCON= 0x01;//使用内部基准源(建议使用内部基准源)     ADCCON = 0x07E4;/*配置ADC的工作模式并开启ADC转换, 000 001 11 1 1 1 00 100  ADC的时钟速度为fADC/2、ADC采样时间为16个时钟、启动ADC转换、使能ADCBUSY、打开ADC电源、选择单端模式、选择连续转换*/ While(1) {     while (!ADCSTA);    //等待转换结束     Result = ADCDAT16;//从数据结果寄存器中取出转换数据     DisPlay(Result);    //通过串口或液晶显示转换结果 } } 以上这个是比较简单的应用,除了这种之外,我们还可以用ADC来进行两个信号的比较或者平衡信号,比如全差分模式。我们还可以把ADuc7026的ADC配置成温度传感器,不过它只能测量芯片内部温度,无法用于进行外部温度测量。      这里我只是简单介绍了ADuc7026内部集成的这个ADC的皮毛内容,有兴趣的可以买一块或者申请样片回去玩玩,撸完,收工             上几张图,已经受不了JTAG接口,现在改用串口下程序,没想到串口下载也是波折,还是焊接问题,顶层镜像的时候母头插座忘了处理下,结果悲剧,焊反反了!!!!!只能重新拆了焊,板子到现在已经面目全非,哎,说多都是泪:Cry:    
  • 热度 14
    2015-1-12 17:34
    872 次阅读|
    0 个评论
    好,预热完,接下来进入今天的主题 ADuc7026内部集成了一个12位的逐次逼近型ADC,它共有16的通道,工作电压为2.7V-3.6V,最高采样速率达1MSPS,7026还为其配置了一个片内基准源,该基准源为ADC、DAC共用,通过对 REFCON寄存器的最低位置位开启。 7026的这个ADC可以工作在三种模式下,分别为全差分模式、单端模式、伪差分模式。当工作在单端模式或伪差分模式下时,ADC模拟输入范围为0V至V REF 。在全差分模式下,输入信号共模电压V CM 在0 V至AV DD 之间、最大幅值不超过2 V REF。 跟ADC相关的寄存器共有八个寄存器,分别为 ADCCON、ADCCP、ADCCN、ADCSTA、ADCDAT、ADCRST、ADCGN、ADCOF。其中     ADCCON   是一个16位的ADC控制寄存器,通过它来使能ADC外设,配置ADC的工作模式和转换类型,其中 15~13  保留。 12~10  设置ADC 时钟速度。 000  fADC/1 。 该分频器用于在外部时钟频率小于 41.78MHz 时获得 1MSPSADC 。 001  fADC/2 ( 默认值 ) 。 010  fADC/4 。 011  fADC/8 。 100  fADC/16 。 101  fADC/32 。 9~8  设置ADC 采集时间。 00  2 个时钟。 01  4 个时钟。 10  8 个时钟 ( 默认值 ) 。 11  16 个时钟。 7  转换启动使能。 置 1 ,启动任意类型的转换。清 0 禁用转换启动(清 0 该位不能使正进行连续转换停止)。 6  使能 ADC BUSY 。 置 1 , 使能 ADC BUSY 引脚。 清 0 则禁用该引脚。 5 ADC  电源控制。 置 1 , 置 ADC 于正常模式 ( ADC 在上电至少 5微秒之后才能正确转换)清0 ,ADC 置于掉电模式。 4~3  设置ADC转换模式。 00  单端模式。 01  差分模式。 10  伪差分模式。 11  保留。 2:0  设置ADC转换类型。 000  CONVSTART引脚输入作为转换使能信号。 001  定时器 1 输出作为转换使能信号。 010  定时器 0 输出作为转换使能信号 011  单次软件转换。在转换后设为 000 (注意:为了避免CONV-START 引脚再一次触发转换,ADDCON MMR 的第 7 位在启动单次软件转换后应清 0 )。 100  连续软件转换。 101  PLA 转换。 其他 保留。   ADCCP   是一个八位的ADC正向通道选择寄存器,其中 7~5 保留。 4~0 ADC 正向通道选择位。 00000  ADC0 00001  ADC1 00010  ADC2 00011  ADC3 00100  ADC4 00101  ADC5 00110  ADC6 00111  ADC7 01000  ADC8 01001  ADC9 01010  ADC10 01011  ADC11 01100  DAC0/ADC12 01101  DAC1/ADC13 01110  DAC2/ADC14 01111  DAC3/ADC15 10000  温度传感器。 10001  AGND (自诊断特性)。 10010  内部基准电压(自诊断特性)。 10011  AV DD /2 。 Others  保留。   ADCCN   是一个八位的ADC反相通道寄存器,其中 7~5  保留。 4:0  反向通道选择位。 00000 ADC0 00001 ADC1 00010 ADC2 00011 ADC3 00100 ADC4 00101 ADC5 00110 ADC6 00111 ADC7 01000 ADC8 01001 ADC9 01010 ADC10 01011 ADC11 01100 DAC0/ADC12 01101 DAC1/ADC13 01110 DAC2/ADC14 01111 DAC3/ADC15 10000 内部基准电压(自诊断特性) Others 保留。          
  • 热度 14
    2015-1-9 14:07
    1473 次阅读|
    0 个评论
                                                                        ADuc7026学习-DAC               这次我们来学习如何使用ADuc7026上的DAC,7026上共有四个12位的DAC,每个DAC都有三个可选电压输出范围:0V至 V REF (内部带隙2.5V基准电压源) 、 0V至DAC REF 、 0V至AV DD 。 DAC REF 为DAC的外部基准源,使用外部基准源的时候, 需要在DACref引脚接一个0.47uf的电容到地,信号范围为0至AV DD 。               与 DAC相关的寄存器共有三个,分别是 REFCON、DACxCON(x=0,1,2,3)、DACxDAT(x=0,1,2,3),其中 1. REFCON 是一个八位的寄存器,在使用DAC/ADC 的时候我们只使用到它的最低位。也就是 REFCON 寄存器的最低位置 1 为内部 2.5V 基准电压源接在 V ref 上,基准电压源可用于外部元件,但需要增加缓冲(在Vref引脚上用一个0.47uf的电容接到GND); 清 0 为内部 2.5V 基准电压源断开与 V REF 管脚的连接。 2. DACxCON(x=0,1,2,3) 是用来配置 DAC 的工作方式的,它也是一个八位的寄存器,其中 7~6 保留, 第 5 位是选择 DAC 的更新 速率。置 1,通过定时器 1更新 DAC 。清 0 ,使用 HCLK (内核时钟)更新 DAC 。第 4 位是 DAC 清 0 位。置 1 , DAC 正常操作使 能。 清 0 , 复位 DAC 数据寄存器为 0 。3 ~2 保留。这两位保持为 0 。 1~0  控制DAC 输出范围 00  掉电模式。 DAC 输出为三态。 01  0 至 DAC REF 10  0 至 V REF ( 2.5V ) 11  0 至 AV DD 3.DACxDAT(x=0,1,2,3) 是一个32位的寄存器,通过对它写入我们的数字量,然后 DAC 转换成相应的模拟量,它的高四位和底16位保 留,使用 27~16 这十二个位。 好,现在我们来看下具体的编程 #include int main(void) {         while(1)         {                         REFCON=0x01;                         //打开内部2.5V基准电压                 //不使用内部2.5V基准源的时候,不用配置 REFCON 寄存器                 DAC0CON = 0x12;                         //使用内部核时钟更新DAC,输出范围0-2.5v                         //DAC0CON = 0x11;                         //使用内部核时钟更新DAC,使用外部基准源,输出范围0-DACref,                 //DAC0CON = 0x13;                         //使用内部核时钟更新DAC,使用电源电压作为基准源,输出范围0-AVdd                         DAC0DAT = 0x08000000;         //设置DAC输出模拟电压值                 while(1);         }         } 这样便可以使用 DAC 输出一个与 0x800 相对应的模拟电压了,DAC的使用就这么简单。              
  • 热度 18
    2015-1-9 14:01
    2192 次阅读|
    2 个评论
                                                          ADuc7026学习-I/O                              在开始讲如何进行对ADuc7026的I/O进行操作之前,我们先来说一下编程上需要注意的事情。              首先我们新建一个新工程及 .C 文件开始编程的时候,就简单的把“ADuc7026.h”包含进去以及写个main()函数,编译一下 你会发现居然有错误,如下: 提示这几个函数没有定义,可是我们明明没有有道这几个函数,为什么会报错呢,这个问题,我网上查了下,有网友 说“是MDK为aduc72xx提供的启动代码的问题”。那么好,这个暂且先不理,我们来看看这个错误改怎么消。首先它说没有定义,那么我 们可以在当前文件中定义这几个函数,如下: #include int main(void) {         return 1; } void DAbt_Handler(void) { } void FIQ_Handler(void) { } void IRQ_Handler(void) { } void PAbt_Handler(void) { } void SWI_Handler(void) { } void Undef_Handler(void) { }   这样我们再编译一下就可可以看到没有在报错了,虽然没有在报错,但当我们要用到中断的时候这样处理还是不妥。下面我们来看下 第二种处理方法。首先在Keil的安装目录下(前提是装了MDK) Keil 4\ARM\INC\ADI 文件夹中找到一个名为“irq_arm.c”的文件,把他 放到我们的工程目录下并添加到工程中,编译一下我们可以看到不用我们自己写刚那些中断函数也不会报错了,这是因为“irq_arm.c” 已经有了这些函数的函数原型   在这里我们可以看到这些比我们刚写的那些多了好多东西。其中,关键字“__irq” 在ADS编译器中,是专门用来声明IRQ中断服务程序的,如果用__irq来声明一个函数,那么该函数表示一个IRQ中断服务程序,编译器会自动在该函数内部增加中断现场保护的代码。所以,建议以后我们要用到中断的时候也这样写或者直接把“irq_arm.c” 文件直接包含到工程中。   ADuC7026有 40 个 通 用 双 向 I/O(GPIO)引脚。所有I/O引脚都兼容5V电压,即GPIO支持5V输入电压。默认情况下,GPIO引脚配置为通用I/O引脚。每一个GPIO引脚都有一个内部的上拉电阻(约为100 kΩ)。可以使用GPxPAR寄存器控制以下端口是否使用内部上拉电阻:P0.0、P0.4、P0.5、P0.6、P0.7及P1的8个GPIO口。   现在我们来看下ADuc7026的引脚当做GPIO用时要进行一些什么样的操作。 有关GPIO的寄存器共有CPxPAR、GPxSET、GPxCLR、GPxDAT、GPxCON五个寄存器,其中   GPxPAR(x=0,1)用来设置P0.0、P0.4、P0.5、P0.6、P0.7及P1的8个GPIO口是否使用内部上拉电阻,详细请看数据手册   GPxCON (x=0,1,2,3,4)进行对GPIO的功能进行选择,如设置成GPIO/CMP/MS0等,具体的请看数据手册,帖子后面有上传。   GPxDAT(x=0,1,2,3,4)是端口x的配置和数据寄存器。它们用来配置端口x 的GPIO引脚方向,为配置成输出的引脚设置输出值,并为配置成输入的引脚保存输入值。它是一个32位的寄存器。其中 31~24用来设置数据传输方向位。置 1 , GPIO 引脚作为输出。清 0 ,GPIO 引脚作为输入。当x端口配置为输出时,可通过23~16八个位对x端口的八个引脚进行操作,置一时输出高电平,置零时输出电平。而x端口配置为输入时,可通过7~0这八个位读取x端口的八个引脚的电平状态。剩下的15~8 复位时端口 x 引脚的状态 ( 只读 ) 。   GPxSET (x=0,1,2,3,4) 是端口x的数据置位寄存器,其中 31:24 保留。 23:16 端口 x 置位。置 1 ,端口 x 相对应的位被置位,同时GPxDAT 寄存器相关的位也被置位。 清 0 不影响数据输出。 15:0 保留。   GPxCLR (x=0,1,2,3,4)是端口x的数据清0寄存器,其中 31:24 保留。 23:16 端口 x 清 0 位。置 1 ,端口 x 相对应的位被清 0 ,同时 GPxDAT 寄存器相关的位也被清 0 。清 0 不影响数据输出。 15:0 保留。     好,现在我们来点亮一盏LED看看   #include ADuc7026   int main(void) {      //GPxPAR 是设置P0.0、P0.4、P0.5、P0.6、P0.7及P1的8个GPIO口是否使用内部上拉电阻,这里没用到      /*GPxCON 是进行功能选择(选择GPIO是作为普通引脚还是用作PWM、UARt等),因为默认所有GPIO都当做普通I/O使用,所以这里也不用对GPxCON 寄存器进行设置*/      GP2DAT = 0xfff30000;//设置P2为输出并把P2.3、P2.2电平置底             // 1111 1111 1111 0011 0000 0000 0000 0000             /*31~24全置一,所以P2所有引脚配置为输出,23~16 为 1111 0011,把P2.3、P2.2引脚置底,所以相接的LED就点亮了*/      while(1); }   我的板上LED另一端接VCC,所以只要把I/O引脚拉低就可以点亮LED,就这样,点亮LED便完成了。   当然如果后面还想对P2的某个引脚进行置一或置零操作的话,可这样   GP2SET = 0x00010000;//把 P2.0 电平置高 GP2CLR = 0x00010000;//把 P2.0 电平置底 那么当 I/O 作输入的时候,想要读取某个引脚的电平的话,可以这样 if(GP2DAT 0x00000001); //判断P2.0引脚的电平,注意作输出的时候是对GP2DAT的23~16进行写操作,而作输入则是对7~0这八个位读取I/O相应引脚的电平状态。 下面上两个图看下现象:
相关资源
  • 所需E币: 0
    时间: 2020-6-19 21:47
    大小: 877.88KB
    上传者: Goodluck2020
    ADuC7026提供可编程电压,用于评估多电源系统.pdf
  • 所需E币: 4
    时间: 2019-12-28 19:31
    大小: 446.72KB
    上传者: 微风DS
    评估板概述ADuC7026评估板具有下列特性:•2层PCB(4”×5”)。•9V电源调节为3.3V片上电源。•4引脚UART接头用于连接RS-232接口电缆。•20引脚标准JTAG连接器。•演示电路。•32.768kHz时钟晶振用于驱动PLL时钟。•ADR2912.5V外部基准电压源芯片。•复位/下载/IRQ0按钮。•电源指示器/通用LED•从外部接头接入所有ADC输入端和DAC输出端。所有器件端口都引出到外部接头引脚。•表贴和通孔式通用原型区域。•外部存储器和锁存器区域。AN-744应用笔记OneTechnologyWayP.O.Box9106Norwood,MA02062-9106,U.S.A.Tel:781.329.4700Fax:781.461.3113www.analog.comADuC7026评估板参考指南MicroConverterADUC7026开发系统作者:AudeRichardRev.A|Page1of16AN-744目录评估板概述.......................................................................................3S1-4ADC3.........................................................................……
  • 所需E币: 5
    时间: 2019-12-24 10:34
    大小: 877.88KB
    上传者: 2iot
    高压开关、双极性ADC以及其它具有多个电源的器件通常要求以特定序列施加或移除电源电压。本文提出一种简单且经济高效的方法,用于确定系统在受电源瞬变、中断或序列变化影响下的行为。AD7656-1(表1)就是一个使用多个电源的器件例子,该器件是一款16位、250kSPS、6通道、同步采样、双极性输入ADC。ADuC7026精密模拟微控制器的四个12位DAC提供DUT的可编程电源电压。利用AD7656-1评估板和ADuC7026评估板,可借助最少的硬件和软件开发工作来完成原型制作。ADuC7026的DAC数据寄存器可以采用41.78MHz内核时钟ADuC7026提供可编程来以7MHz的速率进行更新,从而使电压更新速率达到最大。下文介绍开发过程并提供利用评估板获得的测量结果。电压,用于评估多电源系硬件开发和设置硬件连接和测试设置如图2所示。ADuC7026评估板上的四个统DAC输出引脚和AGND分别连接到AD7656-1评估板上的四个AD797输入端和AGND。AgilentE3631A外部电源模块为作者:StevenXie、KarlWei、ClaireCrokeAD797提供±15V电源。通过USB连接到ADuC7026评估板……