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+
DAC通道模块框图
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寄存器。
单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寄存器。
双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之后,输出即有效,这段时间的长短依电源电压和模拟输出负载的不同会有所变化。
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的应用手册。
来源:航顺芯片
审核编辑:汤梓红
-
mcu
+关注
关注
146文章
16978浏览量
350215 -
寄存器
+关注
关注
31文章
5308浏览量
119980 -
dac
+关注
关注
43文章
2268浏览量
190821 -
航顺芯片
+关注
关注
1文章
102浏览量
22782
发布评论请先 登录
相关推荐
评论