摘要:在 STM32 Cube MX 软件中,配置 DAC1 的两个输出通道。让它们分别产生随机噪声以及三角波。在第一通道中,输出缓冲运放使能,这样可以提高带负载的能力,只是输出的最大值和最小值的范围略微少了些。产生波形需要使用触发功能,这里采用软件触发,通过写
这是昨晚搭建的 STM32F373的测试电路板,对于它的 DAC 产生随机噪声以及三角波的功能进行测试。查看一下这两个功能所产生信号的特性。
在 STM32 Cube MX 软件中,配置 DAC1 的两个输出通道。让它们分别产生随机噪声以及三角波。在第一通道中,输出缓冲运放使能,这样可以提高带负载的能力,只是输出的最大值和最小值的范围略微少了些。产生波形需要使用触发功能,这里采用软件触发,通过写入 SWTRIGER 寄存器来触发 DAC 输出。产生伪随机噪声。设置 LFSR 位数为11 位。这样可以产生更长序列的伪随机波形。通道二,同样使能 输出缓冲运放,采用软件触发的模式。产生对称三角波形,产生三级波形的位数为 12位。通过软件编程,每隔 1ms 对两个通道进行触发一次,通过示波器查看一下输出的信号波形。
上面黄色信号波形为DAC第一个通道产生的随机波形,下面青色信号波形为三角波形,奇怪的是,三角波形似乎出现了削顶失真的情况。下面通过修改设置参数查看一下效果。
▲ 图1.2.1 随机波形和三角波形
修改三角波幅度范围,改为 63.可以看到 产生的三角波的周期以及波动幅度都减小了。将三角波波动范围修改为 1023,对应的波动范围增加了些。如果仔细观察,也可以看到顶部似乎是由失真的情况。难道这是因为 DAC 输出运放的原因?
将三角波幅度重新修改到 1024,大家可以注意到此时输出没有上下颠倒失真。如果再次将三角波幅度提高到4095,我们再观察一下,可以看到似乎当三角波往下走的时候,会出现上下翻转的现象。这是将三角波的幅度修改为 2047,依然会出现这种情况。另外,三角波输出的数值似乎总是很高。这也许是因为前面已经将 通道2 的输出有了一个 0xC00 的赋值引起的。
下面将 DAC1的两个通道赋值 都进行清零。查看一下对于输出三角波的影响。重新设置三角波的变化范围是 4095,可以看到,此时输出的三角波就正常了。原来 DAC的波形输出是在已有的赋值基础上叠加的 三角波形,所以需要控制三角波的幅度范围和初始化的数值,使得它们叠加之后不要饱和失真。
修改一下随机波形产生的位数,限制为 两位。此时输出的随机波形的幅度就非常小了。而且对应的周期也很小。增加随机数据位数,可以观察到输出噪声幅度增加了。输出随机序列的周期也增加了。在 STM32F373单片机中,它采用线性反馈移动寄存器来产生伪随机数值。这个过程不会产生输出饱和。
▲ 图1.2.2 随机噪声的波动范围
本文测试了 STM32F373 中的 DAC的波形产生特性。它能够产生不同位数的三角波,叠加在输出的直流分量上。也可以产生不同位数的随机信号。
来源:TsinghuaZhuoqing