![cathy的头像 cathy的头像](https://mcu.eetrend.com/files/styles/picture200/public/letter-avatars/u-593.png?itok=XTs2kpZ8)
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通道模块框图"](http://mcu.eetrend.com/files/2022-06/wen_zhang_/100561335-258068-1.png)
![“DAC](http://mcu.eetrend.com/files/2022-06/wen_zhang_/100561335-258069-2.png)
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通道模式的数据寄存器"](http://mcu.eetrend.com/files/2022-06/wen_zhang_/100561335-258070-3.png)
双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通道模式的数据寄存器"](http://mcu.eetrend.com/files/2022-06/wen_zhang_/100561335-258071-4.png)
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触发失能时转换的时间框图"](http://mcu.eetrend.com/files/2022-06/wen_zhang_/100561335-258072-5.png)
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的应用手册。
相关阅读:
HK32MCU应用笔记(一)| HK32F030X系列在PH测量笔的应用
HK32MCU应用笔记(二)| 国外品牌采用航顺HK32F030R8T6代替出现串口不兼容解决方法
HK32MCU应用笔记(三)| 航顺芯片在5G光纤测试仪的应用
HK32MCU应用笔记(四)| 关于老版本HK32F103串口USART偶尔出现数据错误
HK32MCU应用笔记(五)| 关于应用HK32F030延时效率问题
HK32MCU应用笔记(六)| HK32MCU芯片调试心得
HK32MCU应用笔记(七)| 航顺HK32MCU闩锁效应问题研究及预防措施
HK32MCU应用笔记(八)| 航顺HK32F03X内部8M时钟倍频成72M解决方案
HK32MCU应用笔记(九)| HK32F103x8xB系列CAN的应用解决方案
HK32MCU应用笔记(十)| HK32F103xC/D/E的ADC常规和注入通道同时触发时的处理机制
HK32MCU应用笔记(十一)| HK32F103xC/D/E的flash读保护应用及注意事项
HK32MCU应用笔记(十二)| HK32F103xC/D/E的GPIO的应用及注意事项
HK32MCU应用笔记(十三)| HK32F103xC/D/E-ADC的应用及注意事项
HK32MCU应用笔记(十四)| HK32F103x/C/D/E-TIM1的应用及注意事项
HK32MCU应用笔记(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作状态不能单独配置
HK32MCU应用笔记(十六)| HK32F103xC/D/E-Timer的应用及注意事项
HK32MCU应用笔记(十七)| HK32F103xC/D/E-flash擦写应用及注意事项
来源:航顺芯片
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。