现代 MCU 添加了广泛的新功能,正确使用这些功能可以显着提高应用效率。特别是使用智能外设,可以独立于 CPU 运行的外设,允许 CPU 并行执行其他任务或进入低功耗睡眠模式。使用这些技术中的任何一种都将提高整体处理效率并节省电力。
DMA 控制器
在进行基于 MCU 的设计时,首先遇到的智能外设之一是直接存储器访问 (DMA) 控制器。这个专门的硬件块可以在内存和/或外围设备之间传输数据,而无需 CPU 参与每次传输。先进的 DMA 控制器,例如包含在STMicroelectronics 的 STM32F4系列可以通过使用灵活的数据流分配和传输管理功能进一步减轻 CPU 的负担。让我们更详细地了解其中的一些功能,以了解如何使用它们来提高处理效率。
图 1 显示的框图表示 STM32F4 器件上两个 DMA 控制器之一中可用的各种数据路径。如图左侧所示,DMA 请求源自 8 个不同的通道(分配给各种启用 DMA 的外设),并被路由到仲裁器上的 8 个不同的请求输入,从而建立优先级(编号较低的输入具有较高的优先级)。然后激活最高优先级的传输,图右侧的 AHB 主机执行所需的数据传输。存储器和外设接口的独立主控器进一步提高了外设到存储器传输的效率,这可能是基于 MCU 设计中 DMA 的最普遍使用。
如图 1 中间所示,为每个流分配单独的 FIFO 允许针对每个外设接口的特性调整 FIFO 特性。例如,FIFO 的阈值级别(请求传输的深度)可以单独设置为 FIFO 大小的 1/4、1/2 或 3/4。这允许低速通道在传输之前等到 FIFO 几乎已满,以最大限度地减少开销。更快的通道会更快地启动传输,可能是大小的 ½ 以避免 FIFO 溢出。
图 1:STM32F4 系列 DMA 控制器(由 STMicroelectronics 提供)。
要寻找的其他高级 DMA 功能与数据传输的管理有关。一些外设提供传输结束指示器,高级 DMA 控制器可以检测并使用它来独立于 CPU 终止传输。双缓冲和循环缓冲区管理由 DMA 控制器完成,通过在传输期间自动重新配置源和目标来消除 CPU 开销。如果 CPU 需要管理这些类型的低级任务,您可以看到处理效率会受到影响。
这种映射、优先级和管理数据传输活动的灵活性显着降低了 CPU 开销,一旦智能 DMA 控制器初始化,就可以管理传输并有效分配带宽,而无需进一步的 CPU 干预。这种独立操作的数量是任何智能外设的一个关键特性,设计人员在选择目标设备时应该寻找这一特性,而我们将在接下来讨论的其他智能外设中找到这一特性。
在串行外设中寻找智能
一旦理解了 DMA 的使用,就自然而然地想方设法为串行外设单元提供额外的智能,以充分利用 DMA 功能并进一步减轻 CPU 的低级功能负担。使用集成到高速外围设备(如以太网和 USB)中的专用 FIFO 缓冲区提供了额外的 CPU 自主性,因为可以在单个突发中分阶段和处理传输(可能通过 DMA)以提高效率。智能外设可以根据带宽要求设置 CPU 可以中断的各种级别。请注意,这些独立的 FIFO 可以与任何专用于 DMA 控制器的 FIFO 结合使用,如图 1 所示的 STM32F4 器件。外设 FIFO 可以提供第一级缓冲,而 DMA 可以根据哪些外设同时处于活动状态来提供第二级缓冲。当 FIFO 仅在外设上可用时,这允许额外级别的管理和控制(即智能)不可用。
如前所述,许多外设包括可用于请求 CPU 干预的灵活中断,如果中断足够具体,可以准确地告诉 CPU 需要什么服务,则可以显着减少响应时间。如果中断不是智能的,CPU 需要通过各种标志或状态位进行搜索,以确定采取什么动作。在时序预算和延迟要求最苛刻的情况下,使用具有智能中断的外设可以产生很大的不同。
一些 MCU 将这种方法更进一步,并完全消除了某些操作的中断。Energy Micro(现为Silicon Labs的一部分)EFM32GZ系列包括一个特殊的外设反射系统 (PRS),通过允许外设之间的快速和自主通信,可用于实现许多常见的中断功能。由于来自一个外设的事件可用作输入信号或由其他外设触发,因此无需中断 CPU 即可实现简单的内务处理功能。这些信号通过四个可配置互连通道之一进行选择和路由。生产外围设备(产生事件的外围设备)的输出被路由到消费者(由事件触发的外围设备)并针对电平或上升/下降沿灵敏度进行调整。
图 2 显示了 PRS 的使用示例。定时器可用于触发 ADC 转换的开始,ADC 转换完成信号可用于触发 DMA 传输。反过来,DMA 完成信号可用于重置定时器以重新启动序列。不需要 CPU 干预,也不需要产生中断。请注意,在进行了一些测量(可能是 1,000 次)之后,可以将一个额外的计数器添加到用于唤醒 CPU 的 PRS。然后,CPU 可以一次处理所有 1,000 个样本,以进一步提高处理能力和电源效率。
图 2:Silicon Labs EFM32GZ 系列外围反射系统示例(由 Silicon Labs 提供)。
多核 MCU 创建智能外设
高性能 MCU 的终极卸载引擎是一个协处理器,它可以完全独立地管理外设 I/O 功能。最近转向多核 MCU,例如NXP LPC4370FET100E,允许设计人员创建一个完全独立的通道控制器,专用于外围控制。事实上,NXP LPC4370 拥有三个 CPU 内核:主 ARM Cortex-M4 CPU、面向协处理器的 ARM Cortex-M0 CPU 和面向特殊外设控制的 ARM® Cortex™-M0 CPU。图 3 显示了面向外设的 CPU(在框图的左上方)是外设子系统的一部分,该子系统包括 AHB 子系统总线矩阵、SPI 端口、子系统 GPIO 和本地 SRAM 存储器。核对核桥通过主 AHB 总线矩阵将子系统连接到设备的其余部分。外围子系统拥有独立管理外围设备所需的所有硬件,在某些情况下,它可能是唯一一个处于活动状态的 CPU,而其他 CPU 则处于低功耗状态以提高电源效率。
图 3:NXP LPC4370 系列框图(由 NXP 提供)。
然而,智能外设控制不必止步于此。事实上,第二个 ARM Cortex-M0 CPU 也可用于外设控制,可能用于模拟 DAC 和 ADC 子系统或作为智能电机控制外设。这种智能外围控制的分层使得仅启用所需的子系统成为可能;高性能数据处理功能期间的主 CPU,通过 SPI 端口进行命令处理期间的低速智能外围接口(设备的其余部分处于断电模式),或高速智能外围控制器期间电机控制或模拟操作。当多个内核可用于创建独立的智能子系统时,独立操作的可能性范围很广,
不要忽视智能模拟
可能很容易将注意力集中在数字外围设备上,而忽视模拟外围设备中的新功能,这些新功能也提高了它们的智能水平。Renesas RL78等高级 MCU 中包含的模数转换器 (ADC)系列能够独立操作,类似于串行端口等数字外围设备的描述。例如,智能 ADC 可以配置为在由硬件定时器触发时进行周期性测量,完全独立于 CPU。捕获的值可以使用 DMA 功能顺序存储到内存中,并且 CPU 不需要参与,直到进行了足够的测量以需要处理。在数字信号处理 (DSP) 应用中,可能需要进行一千次测量才能进行处理。在此期间,CPU 可以执行其他功能,或者可以进入低功耗睡眠模式,并在采集到足够的样本后使用定时器中断唤醒 CPU。
你可能认为这种智能、自主的操作就足够了,但正如他们在低预算的深夜电视广告中所说的那样,“等等,还有更多!” 瑞萨电子 RL78 ADC 还具有窗口功能,可用于进一步改进自主操作。该函数允许程序员为捕获的 ADC 值定义一个低电平和高电平阈值(窗口),如图 3 所示。如果捕获的值超出定义的阈值,则可以生成中断(如果ADRCK 控制位设置为“1”)。请注意,如果需要反向窗口,则如果值落在窗口内,则可以生成中断。如果模拟值开始在可接受范围之外漂移,此功能允许快速响应。如果没有这种智能水平,将需要直到完整数据集(可能是一千次测量)的末尾被捕获,然后大量 CPU 周期扫描整个数据集以确定该值是否已开始超出可接受范围。 如果每 10 µs 进行一次测量并且每次进行 1,000 次测量,则对阈值违规的最坏情况响应将超过 10 ms(不包括 CPU 扫描整个数据集的时间,一直在消耗功率) 。 显然,使用像瑞萨 RL78 上可用的窗口功能可以显着节省处理周期时间和功耗。如果每 10 µs 进行一次测量并且每次进行 1,000 次测量,则对阈值违规的最坏情况响应将超过 10 ms(不包括 CPU 扫描整个数据集的时间,一直在消耗功率) 。 显然,使用像瑞萨 RL78 上可用的窗口功能可以显着节省处理周期时间和功耗。如果每 10 µs 进行一次测量,并且每次进行 1,000 次测量,那么对阈值违规的最坏情况响应将超过 10 ms(不包括 CPU 扫描整个数据集的时间,一直在消耗功率) 。 显然,使用像瑞萨 RL78 上可用的窗口功能可以显着节省处理周期时间和功耗。
图 4:瑞萨电子 RL78 ADC 窗口函数的范围设置(由瑞萨电子提供)。
智能使用低功耗模式
需要注意的是,将非活动 CPU 置于低功耗模式的能力可能是进一步提高电源效率的关键技术。TechZone 最近的一篇文章“使用 MCU 电源管理选项优化系统效率””提供了一个很好的资源来更好地了解各种可用的低功耗模式,所以我们可以在这里放弃详细讨论。我们关于低功耗模式的关键点是智能外围设备,由于它们的自主操作能力,提供许多机会将 CPU 置于低功耗状态,“节省”它们以完成它们最擅长的复杂数据处理任务。当低功耗模式与智能外设结合使用时,功耗和处理效率的提升可能会非常显着。
综上所述,MCU 已开发出多种自主功能,可用于卸载低级处理任务,以管理外设及其相关数据传输功能。新的多核 MCU 提供了更多机会来创建和使用智能外设,以满足应用的特定需求。当正确集成到基于 MCU 的应用程序中时,智能外围子系统的使用可以显着提高处理和电源效率。不要在您的设计中忽视这些机会。
相关文章