单片机使用数字模拟转换器(DAC)进行音频合成和波形生成
单片机使用数字模拟转换器(DAC)进行音频合成和波形生成
1 数字模拟转换器(DAC)的主要特点
1.1 概述
本文的MCU基于Arm®公司的Cortex®核心的MCU产品集成了具有不同配置和特点的DAC:
一到三个输出通道
噪声波形生成
三角波形生成
DMA(直接内存访问)运行结束标志
专用模拟时钟 有关不同DAC配置的详细信息,请参阅对应的MCU数据手册和参考手册。
1.2 数据格式
如图1所示,DAC接受三种整数格式的数据:8位(数据保持寄存器的低8位),12位右对齐(数据保持寄存器的低12位),以及12位左对齐(数据保持寄存器的高12位)。
模拟输出电压在每个DAC通道输出上由以下公式确定:
$$DACOutput = VREF \times \frac{DOR}{4096}$$
1.3 双通道模式
注意:此特性仅支持至少嵌入两个DAC的产品。
DAC有两个输出通道,每个通道都有自己的转换器。在双DAC通道模式下,转换可以独立或同时进行。 当DAC通道由同一触发源触发时,两个通道将被组合在一起进行同步更新操作,并且转换将同时完成。
1.4 专用定时器
除了软件和外部触发器,DAC转换还可以由不同的定时器触发。 TIM6和TIM7是基本定时器,旨在用于DAC触发。 每当DAC接口在选定的定时器触发输出(TIMx_TRGO)上检测到上升沿时,存储在DAC_DHRx寄存器中的最后数据将被传输到DAC_DORx寄存器(以MCU为示例)。
1.5 DMA(直接内存访问)
MCU至少拥有一个具有多个通道(流)的DMA模块。每个DAC通道(流)都连接到一个独立的DMA通道。例如,微控制器中有4个DAC通道,DAC通道1连接到DMA通道3,而DAC通道2连接到DMA通道4。
当不使用DMA时,CPU被用来向DAC提供与要生成的波形相关的数字代码。这个代码存储在RAM中,或者存储在嵌入式非易失性(NV)存储器中,然后CPU将数据从存储器传输到DAC。
当使用DMA(直接内存访问)时,系统的总体性能会通过释放CPU来提高。这是因为数据是由DMA从内存移动到DAC(数字模拟转换器),而无需CPU进行任何操作。这样,CPU资源就可以用于其他操作。
1.6 DMA运行不足错误
当DMA被用来向DAC提供波形的数字代码时,可能会出现DMA传输速度比DAC转换速度慢的情况。在这些情况下,DAC检测到一部分波形数据尚未接收且无法转换,然后会设置“DMA运行不足错误”标志。
1.7 白噪声生成器
1.7.1 定义
MCU的DAC具有一个伪随机码生成器,如图5所示。 根据移位寄存器上使用的抽头,可以生成最多2^n-1个数字的序列,直到序列重复。
图5 DMA嵌入的伪随机码发生器
图6说明了DAC的伪随机码生成器产生的噪声特性。白噪声是指在所有频率上具有相同功率的随机信号,其频谱是平坦的。这里提到的“平坦的频谱