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的应用手册。
来源:航顺芯片
连拓精密气密性检测仪检测户外运动音箱气密性操作步骤
扫地机器人产品层出不穷 懒人经济开始崛起
逆变器介绍及原理
华邦推出创新CUBE架构 为边缘AI带来超高带宽内存
企业能源管理平台系统可提高企业能源利用的效率
HK32MCU应用笔记(十八)| HK32F103xC/D/E-DAC的应用及注意事项
基于SH69P04单片机实现USB和PS2端口的MOUSE设计
WifiBulb智能LED灯泡怎么样
《航空学报》—数字孪生及其在航空航天中的应用
新闻 | 罗姆集团马来西亚工厂新厂房竣工:以需求日益增长的隔离栅极驱动器IC为主加强模拟IC产能
AI启示人类并没有真正的自我意识
瑞能半导体功率器件产品慕尼黑华南电子展精彩回顾
双星可分辨引力波信号源达6000个
FRAM性能比EEPROM好的三个优势是什么
公共安防困境,步态识别技术成良药
PCB设计技巧:封装和元件
万国数据财报:股价暴跌51%,盈利能力下滑,万国数据前景黯淡
小米MIX对战华为P10,谁将是国产手机之王?
全自动码垛机在包装码垛生产线中的作用是什么
传统PWM控制器的控制模型和仿真(反激、正激、半桥、全桥)