微控制器无需CPU即可生成同步正弦波与余弦波
嵌入式系统通常需要数模转换器(DAC)生成模拟电压与波形。DAC有时用作嵌入式处理器的外置器件,有时集成至处理器中。无论哪种情况,CPU都必须在适当时间将预期输出值写入DAC。一般情况下我们采用定时器中断CPU写入预期值来实现上述目的。如果DAC必须生成周期波形,CPU须从表格写入下一个值,递增数据表指针(tablepointer),并且检查表格边界,以便确定何时复位数据表指针。
将周期值写入DAC的过程要求CPU开销保持输出波形。所需要的CPU开销取决于数据表的长度、输出波形的频率以及CPU的工作频率。例如,为了每个周期采用32个数据点生成1个1kHz的正弦波,在CPU频率为1MHz情况下要求CPU每秒能够处理32000个中断信号。处理如此多的中断仅在中断之间留下1000000/32000=31.25个CPU指令周期。针对上下文切换与执行,如果每个中断服务只需要15个CPU周期,所需CPU开销就会达到近50%。
如果应用要求第二个模拟输出波形,那么CPU负载将会增大,甚至在所需的中断服务时间内不能更新两个DAC。MSP430F15x/16x器件是解决该问题的良好方案。这些器件集成了两个DAC与1个DMA控制器。DMA控制器的用途是在无需CPU干预情况下将数据从一个位置转移到另一个位置。在本例中,DMA能够在规定时间内将数据从数据表转移到2个DAC。数据转移结构图如下所示。
将周期值写入DAC的过程要求CPU开销保持输出波形。所需要的CPU开销取决于数据表的长度、输出波形的频率以及CPU的工作频率。例如,为了每个周期采用32个数据点生成1个1kHz的正弦波,在CPU频率为1MHz情况下要求CPU每秒能够处理32000个中断信号。处理如此多的中断仅在中断之间留下1000000/32000=31.25个CPU指令周期。针对上下文切换与执行,如果每个中断服务只需要15个CPU周期,所需CPU开销就会达到近50%。
如果应用要求第二个模拟输出波形,那么CPU负载将会增大,甚至在所需的中断服务时间内不能更新两个DAC。MSP430F15x/16x器件是解决该问题的良好方案。这些器件集成了两个DAC与1个DMA控制器。DMA控制器的用途是在无需CPU干预情况下将数据从一个位置转移到另一个位置。在本例中,DMA能够在规定时间内将数据从数据表转移到2个DAC。数据转移结构图如下所示。