[资料分享与下载] kinetics DAC数模转换模块

[复制链接]
niuyaliang 发表于 2015-2-28 16:21 | 显示全部楼层 |阅读模式
DAC简介

    Kinetis10包含两个独立的12位数模转换模块,DAC0和DAC1,用于将数字转换成对应的模拟电压。转换后的模拟电压可由外部引脚输出,也可以通过芯片内部连接输入到比较器模块、放大器模块、和模数转换模块。


 楼主| niuyaliang 发表于 2015-2-28 16:21 | 显示全部楼层
DAC的参考电压可以二选一,一个来自外部或VREF模块的输出,默认连接到DACREF_1;另一个时VDDA,默认连接到DACREF_2。如果选择VDDA,则DAC的参考电压为3.3V。
 楼主| niuyaliang 发表于 2015-2-28 16:21 | 显示全部楼层
12位二进制的表示范围为0~4095的无符号数。对应数据转换成模拟电压输出范围从VREF/4096~VREF。以VREF为3.3V计算,则是约0.8mV~3.3V,数据每变化1,输出电压变化约0.8mV。
 楼主| niuyaliang 发表于 2015-2-28 16:22 | 显示全部楼层
将数据放入DAC的数据寄存器(DACx_DATL中的DACDATA[11:0]位),即可将数据转换为模拟电压。电压Vout= VREF * (1 + DACDAT0[11:0])/4096。在大量数据转换的应用中,也可以将数据放入DAC的缓冲区,由触发源输入触发信号,在触发信号的触发下,自动挨个将缓冲区中的数据转换为模拟电压。
 楼主| niuyaliang 发表于 2015-2-28 16:22 | 显示全部楼层
缓冲区大小为1~16可设置大小的以word为单位的区域,转换的时候,由读指针指向正在转换的数据,可通过访问读指针获知当前正在转换的缓冲区单元。数据转换的次序为从顶部到底部依次转换,从顶部到底部之间,用户可设置位置标记(watermark)作为预警位置,当读指针指向缓冲区顶部、底部或位置标记处时,都有状态位可供查询,也可以发出中断请求。
 楼主| niuyaliang 发表于 2015-2-28 16:22 | 显示全部楼层
  触发信号可来自PDB模块的TRIG输出详细可查看PDB模块设置。
 楼主| niuyaliang 发表于 2015-2-28 16:22 | 显示全部楼层
同时DAC模块也支持DMA操作,可通过DMA的方式向缓冲区中传递数据,大大提高了效率。
 楼主| niuyaliang 发表于 2015-2-28 16:23 | 显示全部楼层
相关寄存器
1.        DAC数据低位寄存器(DACx_DATnL)
QQ图片20150228162338.png
 楼主| niuyaliang 发表于 2015-2-28 16:24 | 显示全部楼层
在没有启用数据缓冲区的情况下,DATA[11:0]控制输出的电压,该寄存器存放的是DATA[7:0]位,此时Vout= Vin *(1 + DACDAT0[11:0])/4096。
 楼主| niuyaliang 发表于 2015-2-28 16:24 | 显示全部楼层
2.        DAC数据高位寄存器(DACx_DATnH)
QQ图片20150228162431.png
 楼主| niuyaliang 发表于 2015-2-28 16:24 | 显示全部楼层
该寄存器存放的是DATA[11:8]位。
注意,数据寄存器共16个word,每个word都由高8位DACx_DATnH和低8位DACx_DATnH组成。16个word组成DAC的缓冲区,如不使用缓冲区,则默认只使用DACx_DAT0H和DACx_DAT0L。
 楼主| niuyaliang 发表于 2015-2-28 16:25 | 显示全部楼层
3.        DAC状态寄存器(DACx_SR)
QQ图片20150228162519.png
 楼主| niuyaliang 发表于 2015-2-28 16:25 | 显示全部楼层
该寄存器中包含DMA缓冲区读指针位置的有关标志。缓冲区大小为1~16可设置大小的以word为单位的区域,转换的时候,由读指针指向正在转换的数据,数据转换的次序为从顶部到底部依次转换,从顶部到底部之间,用户可设置位置标记(watermark)作为预警位置,当读指针指向缓冲区顶部、底部或位置标记处时,都有状态位可供查询,该寄存器中存放的就是这些标志位。如果DMA功能使能的话,当DMA请求完成后,这些标志会被DMA自动清除。这些标志位都是写0清除,写1无效。
 楼主| niuyaliang 发表于 2015-2-28 16:26 | 显示全部楼层
l  DACBFWMF:DAC缓冲区水位标志。
DACBFWMF=0:DAC缓冲区读指针未达位置标记;
DACBFWMF=1:DAC缓冲区读指针达到位置标记。
l  DACBFRPTF:DAC缓冲区读指针到顶标志,顶部为起始位置。
DACBFRPTF=0:DAC缓冲区读指针不为0;
DACBFRPTF=1:DAC缓冲区读指针为0。

 楼主| niuyaliang 发表于 2015-2-28 16:26 | 显示全部楼层
l  DACBFRPBF:DAC缓冲区读指针到底标志,底部为结束位置。
DACBFRPBF=0:DAC缓冲区读指针不等于DACBFUP;
DACBFRPBF=1:DAC缓冲区读指针等于DACBFUP。
 楼主| niuyaliang 发表于 2015-2-28 16:27 | 显示全部楼层
4.        DAC控制寄存器0(DACx_C0)
QQ图片20150228162707.png
 楼主| niuyaliang 发表于 2015-2-28 16:27 | 显示全部楼层
l  DACEN:DAC使能。
DACEN=0:DAC被禁止;
DACEN=1:DAC使能。
 楼主| niuyaliang 发表于 2015-2-28 16:27 | 显示全部楼层
l  DACRFS:DAC参考选择。
DACRFS=0:选择DACREF_1为参考电压;
DACRFS=1:选择DACREF_2为参考电压。
 楼主| niuyaliang 发表于 2015-2-28 16:28 | 显示全部楼层
DAC的参考电压由两个,一个是VREF_OUT,来自外部或VREF模块的输出,默认连接到DACREF_1;另一个时VDDA,默认连接到DACREF_2。
这里注意,如果ADC和DAC都使用VREF_OUT作为参考电压,则ACC精度的下降有可能和DAC切换有关。
 楼主| niuyaliang 发表于 2015-2-28 16:28 | 显示全部楼层
l  DACTRGSEL:DAC触发选择。触发事件的发生会使得缓冲区读指针自动指向下一个数据并进行转换。硬件触发信号默认来自PDB模块,软件触发则通过向DACSWTRG中写1实现。
DACTRGSEL =0:选择DAC硬件触发器;
DACTRGSEL =1:选择DAC软件触发器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

212

主题

2427

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部