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的使用就这么简单。
文章评论(0条评论)
登录后参与讨论