第6课-dac编程实践

第6课-dac编程实践

ID:9997683

大小:86.30 KB

页数:5页

时间:2018-05-20

第6课-dac编程实践_第1页
第6课-dac编程实践_第2页
第6课-dac编程实践_第3页
第6课-dac编程实践_第4页
第6课-dac编程实践_第5页
资源描述:

《第6课-dac编程实践》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、[跟我学OSKinetis]第6课-DAC编程实践Postedon 2013年11月4日 by lpldcn上节讲了ADC模拟转数字模块,这节趁热打铁,说说DAC数字转模拟模块。ADC和DAC就像一对欢喜冤家,大家可以把这两个模块理解为互逆过程,就像录音机与播音机两个东西,前者负责把模拟量采集进来,后者负责把模拟量输出出去。其实当你会用了这两个模块之后,完全可以自己做一个简单的录音和播音机了。与ADC的复杂程度不同,DAC模块可以说是非常简单了,不但它本身的寄存器很少,而且你在直接使用固件库编程的时候就更简单了。因此我们就先讲一下的工作模

2、式,了解了工作模式之后再使用固件库编程便是极好的了。DAC转换原理K60中的DAC是12位精度的,这个概念与ADC的精度概念一样,就是把参考电压分成2的12次方份,每一份的电压就是它的最小输出精度,因此DAC的输出电压精度就是3.3V/4096=0.00081V。至于内部的转换原理如何,我们可以从官方技术文档中的模块框图看出:上图是截取的模块框图的上半部分,其中红框内就是实现电压转换的部分,大家可以理解为K60内部通过4096个等值的电阻将参考电压分成了4096分,而MUX则根据蓝框中的值来判断到底选择哪个分压值进行输出。这个蓝框中的值就

3、是大家在编程中设置的输出值,它其实是一个缓冲区,可以配置为不同的模式来输出缓冲区中的值。绿框中的部分是一个缓冲放大器,途中的DACEN是一个寄存器控制位,用来使能DAC工作,DACRFS用来选择参考电压,LPEN用来使能低功耗模式。至于本框图的下半部分,则是DAC的比较重要也是难点所在,本文中没有示出,大家可以自己到技术文档中感受下,这部分用于控制DAC的硬件触发、缓冲区工作模式选择、中断等等。DAC工作模式非缓冲区工作模式这个“非缓冲区工作模式”一看就是和“缓冲区工作模式”相对应的,如果大家在用固件库初始化DAC时不做任何配置,默认就是

4、非缓冲区工作模式。该模式是DAC最简单的工作模式,因为几乎不用做任何配置,使能DAC后,只要向DAC数据寄存器(DAC[x]_DAT)的第一个缓冲区(DAC[0]_DAT)写入0~4095之间的数值,就可以在DAC输出引脚输出电压。缓冲区工作模式既然该模式叫做“缓冲区工作模式”,那么它必然会用到了DAC数据寄存器(DAC[x]_DAT)的所有缓冲区,而不仅仅是第一个缓冲区。那么DAC是如何选择缓冲区中的数据进行输出的呢,原来在缓冲区工作模式下,DAC还分为了3个不同的工作模式。在学习3中工作模式前,你要了解什么是DAC数据寄存器的缓冲区。

5、DAC输出的模拟电压值是由DAC数据寄存器(DAC[x]_DAT)决定的,它不是一个寄存器,而是一系列缓冲区,x为0~15,即长度为16。DAC可根据触发模式(硬件触发或软件触发)的不同,依次将缓冲区中的值输出出去。至于按照什么顺序输出,就是要看你设置的工作模式了。在固件库的使用中,如果你要使用缓冲区工作模式,需要配置初始化结构体的变量DAC_BufferEnable为TRUE。普通模式在该模式下,DAC的读指针会从最底部的缓冲区依次读出数据并输出,每触发一次,地址+1,到达最高上限后(比如设置缓冲区最高为4),那么读指针会在下一次触发时

6、会到底部缓冲区(DAC[0]_DAT)。如果使用普通模式,需要配置DAC_BufferWorkMode为BUFFER_MODE_NORMAL。摆动模式顾名思义,在该模式下,读指针像单摆一向,不会在到达顶端后立即返回底部,而是会在下次触发后由地址+1改为地址-1,也就是说读指针会一直在缓冲区底部和最高上限之间游走。如果使用普通模式,需要配置DAC_BufferWorkMode为BUFFER_MODE_SWING。单次扫描模式在该模式下,读指针从底部逐渐增加到最高上限后,就会停止在那里不动,只有在再次复位指针后,它才会再一次开始增加。如果使用

7、普通模式,需要配置DAC_BufferWorkMode为BUFFER_MODE_ONETIMESCAN。以上所说的缓冲区最高上限是由DAC_BufferUpperLimit配置的,取值为1~16。关于DAC的触发如果你使用“非缓冲区工作模式”,那么不必理会这节,因为只有只用“缓冲区工作模式”时才需要配置DAC的触发模式。每触发一下DAC,它的数据读指针就会改变一次地址,从而改变数据的输出。最简单的方式是配置DAC为软件触发(.DAC_SoftTrgEnable=TRUE),你就可以使用库函数LPLD_DAC_SoftwareTrigger

8、()触发指针变更。当然DAC也可配置为硬件触发,也需要用到PDB模块来配合使用。关于DAC的中断同样,如果你使用DAC的缓冲区工作模式,那么也可以配置是否触发不同的中断。当使能读指针底部中断后

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。