STM32微控制器系列的DAC(数字到模拟转换器)功能是其片上外设之一,用于将数字信号转换为模拟信号。DAC在许多应用中都非常有用,例如音频输出、模拟信号生成、闭环控制系统中作为模拟输出等。
STM32微控制器的DAC功能特点包括:
- 12位或16位分辨率:不同型号的STM32微控制器可能提供12位或16位的DAC分辨率。
- 多通道输出:STM32通常具有至少两个DAC通道,可以独立或同时使用。
- 多种触发源:DAC输出可以由多种内部或外部事件触发,例如软件触发、定时器触发等。
- 噪声生成:一些STM32微控制器支持噪声生成功能,可以用于测试或特定应用。
- 三角波生成:同样,某些STM32型号支持直接生成三角波。
- 双DAC模式:可以将两个DAC通道配置为同时更新,以减少在两个通道之间转换时的毛刺。
- 输出缓冲器:DAC输出可以配置为有缓冲或无缓冲,以适应不同的负载条件。
-
驱动能力:
- 启用输出缓冲器:输出缓冲器可以提供更高的电流来驱动外部负载,这对于驱动较大的电容负载或电阻负载非常有用。
- 禁用输出缓冲器:输出缓冲器禁用时,DAC的驱动能力会降低,适用于驱动较小的负载或不需要高驱动能力的应用。
-
输出阻抗:
- 启用输出缓冲器:缓冲器可以降低DAC的输出阻抗,这对于保持输出电压的稳定性非常重要,尤其是在负载变化时。
- 禁用输出缓冲器:禁用输出缓冲器会使DAC的输出阻抗变高,可能导致输出电压在负载变化时更加不稳定。
-
电压毛刺:
- 启用输出缓冲器:输出缓冲器可以帮助减少由于电容负载或快速负载变化引起的电压毛刺。
- 禁用输出缓冲器:禁用输出缓冲器可能会导致在负载变化时出现更多的电压毛刺。
-
功耗:
- 启用输出缓冲器:输出缓冲器工作时需要消耗额外的电流,从而增加整体的功耗。
- 禁用输出缓冲器:禁用输出缓冲器可以减少功耗,这对于低功耗应用是有益的。
-
偏移和噪声:
- 启用输出缓冲器:输出缓冲器可能会引入额外的偏移和噪声,这可能会影响模拟信号的质量。
- 禁用输出缓冲器:禁用输出缓冲器可以减少由于缓冲器引入的偏移和噪声,适用于对信号质量要求较高的应用。
-
为了使用STM32的DAC功能,通常需要进行以下步骤:
- 配置相关引脚:将相关的模拟输出引脚配置为模拟输出模式。
- 初始化DAC:通过软件配置DAC的工作模式,例如分辨率、触发模式等。
- 启动DAC:使能DAC,并开始转换过程。
- 数据写入:通过相应的寄存器将数字值写入DAC,DAC会将这些值转换为模拟信号输出。
DAC通道模块框图
DAC转换
不能直接对寄存器DAC_DORx写入数据,任何输出到DAC通道x的数据都必须写入DAC_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之后,输出即有 效,这段时间的长短依电源电压和模拟输出负载的不同会有所变化。
选择DAC触发
注意: 1. 不能在ENx为’1’时改变TSELx[2:0]位。 2. 如果选择软件触发,数据从寄存器DAC_DHRx传送到寄存器DAC_DORx只需要一个APB1时 钟周期。
数据格式
DAC输出电压
数字输入经过DAC被线性地转换为模拟电压输出,其范围为0到VREF+。 任一DAC通道引脚上的输出电压满足下面的关系: DAC输出 = VREF x (DOR / 4095)。