[Kinetis] 【读书笔记10 处理内部数字量之DAC】

[复制链接]
2158|12
 楼主| springvirus 发表于 2013-10-31 14:19 | 显示全部楼层 |阅读模式
12位的DAC模块可以选择DACREF_1和DACREF_2其中之一作为参考电压,当DAC使能后,可以对在 DACDAT[11:0]中或DAC数据缓冲区内的数据,转换成模拟输出电压,范围为Vin/4096~Vin。

当DAC使能而buffer没有使能时,DAC模块总是对DAT0内的数据进行转换。 当DAC和buffer都使能时,DAC模块才对buffer内的数据进行转换,当硬件或软件触发发生时,buffer 指针指向下一个字。page129上看到有PDB的输出可以作为DAC的触发源。

数据buffer可配置工作在正常模式,摇摆模式和一次扫描模式,当模式切换时,读指针不改变,通过写 在DACBFRP内的C2寄存器,可以设置读指针的值,范围为0~DACBFUP。

对于DAC buffer,涉及到几个中断和标志位。 当读指针到达buffer的上限时(DACBFRP = DACBFUP),读指针底部位置标志位置位, 当读指针到达buffer的起始位置0时,读指针起始位置标志位置位。 当读指针到达水印选择位域所定义的位置时,水印标志位置位。 水印选择(DACBFWM)可以用来设置,在读指针距离buffer上限 1~4个字时产生中断。

buffer的正常模式: 此模式是默认的工作模式,buffer以环形buffer形式工作,读指针在每次触发时增加1,当到达上限 时在下一次触发时归0。
buffer的摇摆模式: 与正常模式类似,只是当读指针到达上限时,不归0,而是减1。
buffer的一次扫描模式: 当读指针到达上限时,会停在这里,若读指针被重置到其他位置,当再次到达上限时,还会 停在这里。

在page895上讲的DACx_DATH中,看到"当DAC buffer使能后,DATA[11:0]被映射到buffer中"。
【问题:当使用buffer时,肯定要设置DACBFRP(read pointer)和DACBFUP(upper limit),前者的取值范围是0~DACBFUP,后者是0~buffer的大小-1,那这个最大值是个地址值吧,如何确定其值呢?】
黄小俊 发表于 2013-10-31 15:30 | 显示全部楼层
motodefy 发表于 2013-10-31 15:48 | 显示全部楼层
不太清楚啊···没书没板子
FSL_TICS_Jeremy 发表于 2013-10-31 16:27 | 显示全部楼层
加油啊,谢谢分享。
FSL_TICS_Jeremy 发表于 2013-10-31 16:28 | 显示全部楼层
motodefy 发表于 2013-10-31 15:48
不太清楚啊···没书没板子

不要灰心,响应论坛活动,就可能会得到板子呢!!
motodefy 发表于 2013-10-31 16:28 | 显示全部楼层
FSL_TICS_Jeremy 发表于 2013-10-31 16:28
不要灰心,响应论坛活动,就可能会得到板子呢!!

恩····一直很想搞块K60来着
cxz_00 发表于 2013-10-31 16:46 | 显示全部楼层
还没有看到这这内容呢,刚刚收到书本啊
FSL_TICS_Jeremy 发表于 2013-10-31 17:16 | 显示全部楼层
cxz_00 发表于 2013-10-31 16:46
还没有看到这这内容呢,刚刚收到书本啊

不着急啊,欢迎你参加学习笔记评比,秀出的学习体会!!
cxz_00 发表于 2013-10-31 20:02 | 显示全部楼层
FSL_TICS_Jeremy 发表于 2013-10-31 17:16
不着急啊,欢迎你参加学习笔记评比,秀出的学习体会!!

好的啊,正在学习总结,总结好了就分享出来:)
cxz_00 发表于 2013-10-31 20:03 | 显示全部楼层
123de7 发表于 2013-10-31 22:10 | 显示全部楼层
顶一个!!!LZ 加油!!!!
KuMo_2011 发表于 2013-10-31 23:20 | 显示全部楼层
话说书上收K60的DAC是12位的,实际用到时,精度有12位吗?ADC同求?
 楼主| springvirus 发表于 2013-11-1 08:38 | 显示全部楼层
KuMo_2011 发表于 2013-10-31 23:20
话说书上收K60的DAC是12位的,实际用到时,精度有12位吗?ADC同求?

一切的一切都建立在实践基础上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

128

主题

4603

帖子

14

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