微控制器无需CPU即可生成同步正弦波与余弦波
时间:2006-11-17 17:04:00
手机看文章
扫描二维码
随时随地手机看文章
[导读]嵌入式系统通常需要数模转换器 (DAC) 生成模拟电压与波形。DAC 有时用作嵌入式处理器的外置器件,有时集成至处理器中。无
嵌入式系统通常需要数模转换器 (DAC) 生成模拟电压与波形。DAC 有时用作嵌入式处理器的外置器件,有时集成至处理器中。无论哪种情况,CPU 都必须在适当时间将预期输出值写入 DAC。一般情况下我们采用定时器中断 CPU写入预期值来实现上述目的。如果 DAC 必须生成周期波形,CPU须从表格写入下一个值,递增数据表指针 (table pointer),并且检查表格边界,以便确定何时复位数据表指针。
将周期值写入 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。数据转移结构图如下所示。