HK32MCU应用笔记(十八)| HK32F103xC/D/E-DAC的应用及注意事项

电子说

1.2w人已加入

描述

 

HK32F103x/C/D/E是深圳市航顺芯片技术研发有限公司推出的中大容量的103系列芯片。作为32位MCU常用的外设DAC是12位数字输入,电压输出的数字/模拟转换器。DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。DAC工作在12位模式时,数据可以设置成左对齐或右对齐。DAC模块有2个输出通道,每个通道都有单独的转换器。在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。

DAC主要特性

●2个DAC转换器:每个转换器对应1个输出通道

●8位或者12位单调输出

●12位模式下数据左对齐或者右对齐

●同步更新功能

●噪声波形生成

●三角波形生成

●双DAC通道同时或者分别转换

●每个通道都有DMA功能

●外部触发转换

●输入参考电压VREF+

mcu DAC通道模块框图
mcu DAC 引脚

DAC数字格式

根据选择的配置模式,数据按照下文所述写入指定的寄存器:

单DAC通道x,有3种情况

● 8位数据右对齐:用户须将数据写入寄存器DAC_DHR8Rx[7:0]位(实际是存入寄存器DHRx[11:4]位)

● 12位数据左对齐:用户须将数据写入寄存器DAC_DHR12Lx[15:4]位(实际是存入寄存器DHRx[11:0]位)

● 12位数据右对齐:用户须将数据写入寄存器DAC_DHR12Rx[11:0]位(实际是存入寄存器DHRx[11:0]位)

根据对DAC_DHRyyyx寄存器的操作,经过相应的移位后,写入的数据被转存到DHRx 寄存器中(DHRx是内部的数据保存寄存器x)。随后,DHRx寄存器的内容或被自动地传送到DORx寄存器,或通过软件触发或外部事件触发被传送到DORx寄存器。

mcu 单DAC通道模式的数据寄存器

双DAC通道,有3种情况

● 8位数据右对齐:用户须将DAC通道1数据写入寄存器DAC_DHR8RD[7:0]位(实际是存入寄存器DHR1[11:4]位),将DAC通道2数据写入寄存器DAC_DHR8RD[15:8]位(实际是存入寄存器 DHR2[11:4]位)

● 12位数据左对齐:用户须将DAC通道1数据写入寄存器DAC_DHR12LD[15:4]位(实际是存入寄存器DHR1[11:0]位),将DAC通道2数据写入寄存器DAC_DHR12LD[31:20]位(实际是存入寄存器DHR2[11:0]位)

● 12位数据右对齐:用户须将DAC通道1数据写入寄存器DAC_DHR12RD[11:0]位(实际是存入寄存器DHR1[11:0]位),将DAC通道2数据写入寄存器DAC_DHR12RD[27:16]位(实际是存入寄存器 DHR2[11:0]位)

根据对DAC_DHRyyyD寄存器的操作,经过相应的移位后,写入的数据被转存到DHR1 和DHR2寄存器中(DHR1和DHR2是内部的数据保存寄存器x)。随后,DHR1和DHR2的内容或被自动地传送到DORx寄存器,或通过软件触发或外部事件触发被传送到DORx寄存器。

mcu 双DAC通道模式的数据寄存器

DAC转换

不能直接对寄存器DAC_DORx写入数据,任何输出到DAC通道x的数据都必须写入AC_DHRx寄存器(数据实际写入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12Rx、DAC_DHR8RD、DAC_DHR12LD、或者DAC_DHR12RD寄存器)。如果没有选中硬件触发(寄存器DAC_CR1的TENx位置’0’),存入寄存器DAC_DHRx的数据会在一个APB1时钟周期后自动传至寄存器DAC_DORx。如果选中硬件触发(寄存器DAC_CR1 的TENx位置’1’),数据传输在触发发生以后3个APB1时钟周期后完成。一旦数据从DAC_DHRx 寄存器装入DAC_DORx寄存器,在经过时间tSETTLING之后,输出即有效,这段时间的长短依电源电压和模拟输出负载的不同会有所变化。

mcu TEN=0触发失能时转换的时间框图

DAC输出电压

数字输入经过DAC被线性地转换为模拟电压输出,其范围为0到VREF+。任一DAC通道引脚上的输出电压满足下面的关系:DAC输出=VREFx(DOR/4095)

HK32F103xC/D/E在操作DAC需要注意的地方

用户在使用HK32F103xC/D/E的DAC在使用过程中,当输出一个较低电压,例如0.41V,当对DAC->CR.BOFF 1 bit进行操作时,不管是从0->1,还是从1->0,均会出现一个高于实际DAC输出很高的电压值,且不会自行恢复,需要手动给一个trig信号或者将DAC->CR.BOFF1回到上一次触发之前的状态才能恢复正常。举例说明:DAC 配置为软件触发,DAC->CR.BOFF1=0,输出一个0.41V电压(DHR12R1设置为0x1FF),从PA4输出,当正常输出以后配置DAC->CR.BOFF1=1,此时电压会跳变到2.9V左右,且不会自行恢复,当给DAC_SWTRIGR.SWTRIG1配置为1以后即可自行恢复。

解决方案:

1. DAC BUFF输出功能,在程序上电初始化配置完毕以后,程序运行中不要更改。
2. 如果需要在程序运行中更改,且对输出电压的短暂跳变不敏感,那么可通过更改触发方式为DAC_Trigger_T1_TRGO等循环自动触发方式或者在DAC->CR.BOFF1 bit发生改变以后手动给一次触发信号。

以上有关寄存器的介绍可以参考我们HK的HK32F103xC/D/E的应用手册。

来源:航顺芯片

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分