MSP430的DAC使用起来比ADC要简单得多,简单的设置就能够正常工作。如果使用内部参考的话,需要从ADC模块中启动内部参考源。DAC不需要选择时钟,它会使用当前的MCLK,这里是默认的1.1MHz的DCOCLK。
/**************************************************/
int main (void)
{
uint16_t i = 0, j = 0;
WDTCTL = WDTPW + WDTHOLD;
// 首先需要打开ADC的内部参考,因为这里DAC需要使用它,如果选择外部参考源的话,就不用设置
// 等待内部REF稳定,MSP430的延时函数需要根据MCLK的时钟源不同调整
ADC12CTL0 = REFON + REF2_5V;
DelayMs_sys(18);
// 选择REF内部参考源,满量程1x输出(不使用3x放大),使用中等速度
// 启动calibration标定过程,直到完成
DAC12_0CTL = DAC12SREF_0 + DAC12IR + DAC12AMP_5;
DAC12_0CTL |= DAC12CALON;
while (DAC12_0CTL & DAC12CALON);
// 选择REF内部参考源,满量程1x输出(不使用3x放大),使用中等速度
// 使能DAC
DAC12_0CTL = DAC12SREF_0 + DAC12IR + DAC12AMP_5 + DAC12ENC;
while (1) {
DAC12_0DAT = i;
i = i + 256;
DelayMs_sys(300);
}
return 0;
}
/**************************************************/
使用DAC的输出来控制后续电路,如果有电阻分压的部分,加上电压跟随器能取得更好的效果。