一、DAC结构与性能:
MSP430f169单片机有2个DAC通道,这两个通道在操作上是完全平等的,可以通过DAC12GRP控制位将多个DAC12通道结合起来;
DAC特点:
- 8位12位分辨率
- 可编程的时间和能量损耗
- 支持无符号和有符号数据输入
- 内部和外部参考电压的选择
- 具有自效验功能
- 二进制或者二进制补码形式
- 多路DAC同步更新
- 可以直接用于储存器存取
二、DAC相关寄存器设置
- DAC转换控制寄存器——DAC12_xCTL
其中灰色的部分只有在DAC12ENC = 0时才能修改,位DAC12GRP只有在DAC12_1寄存器中才使用。
位15——保留
位14、位13——DAC12REFx:选择DAC12的参考缘。0、1:VREF+;2、3:VEREF+。
位12——DAC12RES:选择DAC12分辨率。0:12位分辨率;1:8位分辨率。
位11、位10——DAC12LSELx:锁存器触发源选择当 DAC12锁存器得到触发之后,能够将锁存器中的数据传送到DAC12的内核。当 DAC12LSELx=0的时候,DAC数据更新不受DAC12ENC 的影响。0 :DAC12_XDAT执行写操作将触发(不考虑DAC12ENC 的状态)1:DAC12_XDAT执行写操作将触发(考虑DAC12ENC 的状态)2:Timer_A3.OUT1的上升沿3:Timer_B7.OUT2的上升沿
位9——DAC12CALON:DAC12效验操作控制。置位后启动效验操作,效验完成后自动被复位。效验操作可以校正便宜误差。0:没有启动效验操作;1:启动效验操作。
位8——DAC12IR:DAC12输入范围,此位设定输入参考电压和输出的关系。0:DAC12的满量程位参考电压的3倍(不操作AVcc);1:DAC12的满量程为参考电压。
位7~位5——DAC12AMPx:DAC12运算放大器设置
0 输入缓冲器关闭,输出缓冲器关闭,高阻
1 输入缓冲器关闭,输出缓冲器关闭,0V
2 输入缓冲器低速低电流,输出缓冲器低速低电流
3 输入缓冲器低速低电流,输出缓冲器中速中电流
4 输入缓冲器低速低电流,输出缓冲器高速高电流
5 输入缓冲器中速中电流,输出缓冲器中速中电流
6 输入缓冲器中速中电流,输出缓冲器高速高电流
7 输入缓冲器高速高电流,输出缓冲器高速高电流
位4——DAC12DF:DAC12的数据格式。0:二进制;1:二进制补码
位3——DAC12IE:DAC12的中断允许。0:禁止中断;1:允许中断
位2——DAC12IFG:DAC12的中断标志位。0:没有中断请求;1:有中断请求
位1——DAC12ENC:DAC12转换控制位。DAC12LSEL>0时,DAC12DAC12ENC才有效。
0:DAC12停止;1:DAC12转换。
位0——DAC12GRP:DAC12组合控制位。0:没有组合;1:组合
- DAC数据寄存器DAC12_xDAT
DAC12_xDAT高4位为0,不影响DAC12的工作。DAC12工作在8位模式时,DAC12_xDAT的最大值为0x00FF;DAC12工作在12位模式时,DAC12_xDAT的最大值为0x0FFF
三、DAC12的操作及设置和应用
(1)选择参考电压。
(2)DAC12内核
(3)更新DAC12的电压输出
(4)DAC12_xDAT的数据格式
(5)校正DAC12的输出
(6)DAC12使用时要注意的问题;
1) 参考电压的选择,如果使用后内部参考电压则需要在DAC12模块中打开参考内部电压发生器,DAC12内核不用打开;
2) 在MSP430F169单片机上DAC12的0通道使用的是A6,1通道使用的是A7的引脚;
3) 如果使用了DAC12的2个通道,A6和A7就不能使用;
4) 校正DAC12的编译误差
5) 设置DAC12的位数和满量程电压(满量程电压最高为AVCC);
6) 设置DAC12的触发方式。
四、输出电压
简单的输出1V代码
1 #include <msp430f169.h>
2 void main(void){
3 WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
4 ADC12CTL0 = REFON + REF2_5V; //DA使用内部1.5V参考电压
5 DAC12_0CTL = DAC12IR + DAC12AMP_5 +DAC12ENC; //满量程输出是参考电压的1倍,输入输出缓冲器中速电流,DAC使能
6
7 DAC12_0DAT = 0x0666; //P6.7输出1V电压
8 _BIS_SR(LPM4_bits); //进入LPM4
9
10 }