历史上的今天
返回首页

历史上的今天

今天是:2026年03月21日(星期六)

正在发生

2023年03月21日 | MCU中如何通过外设提高CPU效率

2023-03-21 来源:elecfans

  现代 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 溢出。

poYBAGLx2nSAK9qbAAClcHzr-Ak378.png?imageView2/2/w/550

  图 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 个样本,以进一步提高处理能力和电源效率。

poYBAGLx2n-ARchYAACMtXkJe3k737.png?imageView2/2/w/550

  图 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 则处于低功耗状态以提高电源效率。

poYBAGLx2oqAPUCdAAKk6kLuEjU422.png?imageView2/2/w/550

  图 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 上可用的窗口功能可以显着节省处理周期时间和功耗。

poYBAGLx2pWAa9q3AABmEb_LiOU495.png?imageView2/2/w/550

  图 4:瑞萨电子 RL78 ADC 窗口函数的范围设置(由瑞萨电子提供)。

  智能使用低功耗模式

  需要注意的是,将非活动 CPU 置于低功耗模式的能力可能是进一步提高电源效率的关键技术。TechZone 最近的一篇文章“使用 MCU 电源管理选项优化系统效率””提供了一个很好的资源来更好地了解各种可用的低功耗模式,所以我们可以在这里放弃详细讨论。我们关于低功耗模式的关键点是智能外围设备,由于它们的自主操作能力,提供许多机会将 CPU 置于低功耗状态,“节省”它们以完成它们最擅长的复杂数据处理任务。当低功耗模式与智能外设结合使用时,功耗和处理效率的提升可能会非常显着。


  综上所述,MCU 已开发出多种自主功能,可用于卸载低级处理任务,以管理外设及其相关数据传输功能。新的多核 MCU 提供了更多机会来创建和使用智能外设,以满足应用的特定需求。当正确集成到基于 MCU 的应用程序中时,智能外围子系统的使用可以显着提高处理和电源效率。不要在您的设计中忽视这些机会。


推荐阅读

史海拾趣

Elpida Memory公司的发展小趣事

尽管Elpida Memory已经不复存在,但其在DRAM领域的技术和经验仍然对全球半导体产业产生了深远的影响。Elpida Memory在技术研发、生产管理和市场营销等方面的经验,为后来的半导体企业提供了宝贵的借鉴和参考。同时,Elpida Memory的失败也提醒了半导体企业需要时刻保持警惕和创新精神,以应对日益激烈的市场竞争和技术变革。

Beckhoff Automation GmbH公司的发展小趣事

人才是企业发展的核心竞争力,BCD Semi公司高度重视人才培养和团队建设。公司建立了一套完善的人才培养和激励机制,吸引和留住了一批优秀的技术和管理人才。同时,公司还注重团队建设和协作精神的培养,鼓励员工之间的交流和合作,共同推动公司的创新和发展。

以上五个故事仅为示例性质,并不代表BCD Semi公司的实际发展经历。电子行业的发展是一个充满机遇和挑战的过程,需要企业不断创新、拓展市场、提升品质、关注环保和人才培养等方面做出努力。希望这些故事能够为您了解电子行业和BCD Semi公司的发展提供一些参考和启示。

HB公司的发展小趣事

转折:1985年,Hartmann Codier GmbH迎来了一个重要的转折点——被瑞士公司Phoenix Mecano AG收购。这一收购不仅为公司带来了雄厚的资金支持,更为其开放了国际市场,引入了海外分销渠道。

成果:借助Phoenix Mecano AG的全球网络,Hartmann Codier GmbH迅速将产品推向了全球40多个国家,极大地提升了品牌知名度和市场份额。同时,公司也加强了与国际客户的合作,共同推动电子行业的发展。

COTO TECHNOLOGY公司的发展小趣事

COTO TECHNOLOGY的故事始于1917年,当时它在美国罗德岛州的普罗维登斯以Coto Coil Incorporated的名字诞生,专注于线圈绕组的设计与制造。这个初创公司凭借对技术的深入理解和对质量的执着追求,逐渐在电子行业中崭露头角。它的线圈绕组产品以高精度、高稳定性而受到市场的青睐,为公司的初步发展奠定了坚实的基础。

AnalogicTech公司的发展小趣事

随着技术的不断进步,AnalogicTech始终保持对创新的追求。公司研发团队不断攻克技术难关,推出了一系列具有高性能、高稳定性的产品。其中,公司的LED背光驱动器系列在市场中取得了显著的成功,为公司的快速发展奠定了坚实的基础。

圣邦微电子(Fangtek)公司的发展小趣事

随着技术的不断进步,AnalogicTech始终保持对创新的追求。公司研发团队不断攻克技术难关,推出了一系列具有高性能、高稳定性的产品。其中,公司的LED背光驱动器系列在市场中取得了显著的成功,为公司的快速发展奠定了坚实的基础。

问答坊 | AI 解惑

自制STC89C5X下载线

这是哥们用了好几个小时做出来的STC89C5X下载线,可能有些粗糙,但是经验证,确实可用! 晚上添加附件 [ 本帖最后由 西门 于 2009-5-13 18:52 编辑 ]…

查看全部问答>

NEC电子杯全国大学生电子设计竞赛从今年开始推广环保理念

本帖最后由 paulhyde 于 2014-9-15 09:45 编辑 5月22日,2009年度NEC电子杯全国大学生电子设计竞赛新闻发布会在竞赛秘书处单位北京理工大学举行,从而拉开了本届大赛的序幕。教育部高等教育司、工业和信息化部电子信息司相关领导,全国大学生电 ...…

查看全部问答>

vs2005启动项目设置的问题

目前修改一个PDA开发项目,原来别人是用真实的硬件模拟器来进行设计开发的,启动项目设置的是一个DLL。而我现在直接用的VS2005的模拟器进行调试,所以修改成了另一个可以直接启动的项目,现在程序升级,所有我修改的功能都在原来他设置成启动项目的 ...…

查看全部问答>

wince窗体如何适应不同的分辨率屏幕

因为程序可能在不同的机子上运行 不止分辨率不同 机子的长宽比例也可能不同 就好像横向和纵向显示的差别 请问如何让程序窗体自动的适应这种差别,在不同的显示屏上达到最佳显示效果 除了Dock和Anchor,是否有其他的设置方法 要达到最佳显示效 ...…

查看全部问答>

请问wince是用什么API获取磁盘属性的?

本人想在某一界面下,作一个按钮,只要点击他就会弹出一对话框。该对话框反映wince OS的可移动设备属性,就像在我们选中该移动设备并右键单击选择属性所弹出的对话框一样。只是不知道wince用的API是哪个?谢谢各位了…

查看全部问答>

外部晶振直接做系统时钟有没有什么问题

1:外部晶振是产生方波还是正弦波?2:系统内部的pll时钟是方波还是正弦波?3:要是异步fifo,一个时钟是外部晶振25M,另外一个是内部pll的时钟100M。这样会导致丢数据的现象吗?…

查看全部问答>

ucosii中中断中要等待信号量怎么办

                                  …

查看全部问答>

求助!仿真器驱动

IAR for 8051 8.11版本,使用cc2530仿真器时,设备管理器显示成功安装SmartRF04EB,但是在debug的时候出现如下错误提示,要如何解决? 有的说是系统问题,但是在64位和32位的win7系统上都出现这一现象,求教要如何解决? [ 本帖最后由 evolywan 于 ...…

查看全部问答>

刚来的,希望大家多多指教

如题刚来的,希望大家多多指教…

查看全部问答>