一、DAC结构与性能:    

MSP430f169单片机有2个DAC通道,这两个通道在操作上是完全平等的,可以通过DAC12GRP控制位将多个DAC12通道结合起来;

DAC特点:

  1. 8位12位分辨率
  2. 可编程的时间和能量损耗
  3. 支持无符号和有符号数据输入
  4. 内部和外部参考电压的选择
  5. 具有自效验功能
  6. 二进制或者二进制补码形式
  7. 多路DAC同步更新
  8. 可以直接用于储存器存取

二、DAC相关寄存器设置

  1. DAC转换控制寄存器——DAC12_xCTL

 MSP430   DAC模块  学习笔记_上升沿

 

 

其中灰色的部分只有在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:组合

 

  1. DAC数据寄存器DAC12_xDAT

 MSP430   DAC模块  学习笔记_2d_02

 

 

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的触发方式。

四、输出电压

MSP430   DAC模块  学习笔记_2d_03

 

 

 简单的输出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 }