MSP430 程序库<八>DAC12 的使用
MSP430 带有的 DAC12 模块,可以将运算处理的结果转换为模拟量,以便操作被控制对象的工作过程。DA 是在控制操作过程中常用
的器件之一;MSP430 有些系列中含有 DAC12 模块,给需要使用 DA 的方案提供了许多方便。这里实现较为简单的 DAC 的驱动,方
便以后使用。
硬件介绍:
MSP430x14x 系列不含 DAC12 模块,所以本文的实现只能用于 16 系列等含有 DAC12 模块的单片机中。
MSP430F169 单片机的 DAC12 模块有 2 个 DAC 通道,这两个通道在操作上是完全平等的。并且可以用 DAC12GRP 控制位将多个
DAC12 通道组合起来,实现同步更新,硬件还能确保同步更新独立于任何中断或者 NMI 事件。
这个 DAC12 模块有以下特点:8 位或 12 位分辨率可调、可编程时间对能量的损耗、可选内部或外部参考源、支持二进制原码和补码
输入、具有自校验功能、可以多路 DAC 同步更新、还可以用 DMA 等。
这里实现的是较为简化的版本,需要可以自己添加或改写功能,如:初始化函数内部调用自校验的函数,可以在每一次初始化时候均自
校验。
DAC12 每个模块只有两个寄存器:控制寄存和数据寄存器,控制寄存器用来初始化和设置模块的使用,数据寄存器用来存放要输出的
电压数字量。169 的 DAC 的寄存器如下:
DAC12_0 控制寄存器 DAC12_0CTL
DAC12_0 数据寄存器 DAC12_0DAT
DAC12_1 控制寄存器 DAC12_1CTL
DAC12_1 数据寄存器 DAC12_1DAT
控制寄存器每一位的功能如下:
DAC12REFx:选择 DAC12 的参考源
0,1 Vref+
2,3 Veref+
DAC12RES:选择 DAC12 分辨率
0 12 位分辨率
1 8 分辨率
DAC12LSELx:锁存器触发源选择
当 DAC12 锁存器得到触发之后,能够将锁存器中的数据传送到 DAC12 的内核。
当 DAC12LSELx=0 的时候,DAC 数据更新不受 DAC12ENC 的影响。
0 DAC12_XDAT 执行写操作将触发(不考虑 DAC12ENC 的状态)
1 DAC12_XDAT 执行写操作将触发(考虑 DAC12ENC 的状态)
2 Timer_A3.OUT1 的上升沿
3 Timer_B7.OUT2 的上升沿
DAC12CALON:DAC12 校验操作控制
置位后启动校验操作,校验完成后自动被复位。校验操作可以校正偏移误差。
0 没有启动校验操作
1 启动校验操作
DAC12IR:DAC12 输入范围
设定输入参考电压和输出的关系
0 DAC12 的满量程为参考电压的 3 倍(不操作 AVcc)
1 DAC12 的满量程为参考电压
DAC12AMPx:DAC12 运算放大器设置
0 输入缓冲器关闭,输出缓冲器关闭,高阻
1 输入缓冲器关闭,输出缓冲器关闭,0V