广告

使用特定任务的MCU简化复杂设计

2022-08-16 18:04:17 Robert Perkel,应用工程师,Microchip公司 阅读:
在当今的电子世界中,运行实时操作系统(RTOS)的大型32位微控制器(MCU)和微处理器(MPU)越来越普遍。然而,处理复杂应用的单个大型MCU,可能会遇到与小型内务管理任务相关的CPU资源问题,这些任务并不复杂,但非常耗时。较小的器件,例如8位和16位MCU,可用于从32位器件卸载这些任务。

在当今的电子世界中,运行实时操作系统(RTOS)的大型32位微控制器(MCU)和微处理器(MPU)越来越普遍。然而,处理复杂应用的单个大型MCU,可能会遇到与小型内务管理任务相关的CPU资源问题,这些任务并不复杂,但非常耗时。较小的器件,例如8位和16位MCU,可用于从32位器件卸载这些任务。ZlJednc

让我们来考虑一下以下这个示例:将32位MCU用于控制汽车的非安全功能,如娱乐系统、环境照明和空调。32位器件必须要能分配其资源来处理与这些功能相关的所有任务。一些示例包括多点测量机舱温度、打开/关闭空调系统、更新图形显示、处理用户输入、调整照明条件和播放音乐。即使对于大型32位器件,这也是很多工作。ZlJednc

但是,如果能将其中一些任务从32位器件卸载到仅负责处理其中一项或两项任务的子处理器,而在此过程中又几乎不需要监督,那么这些任务就更易于管理。这释放了主处理器上的CPU资源,从而降低了软件复杂性,同时提高了性能和执行时间。ZlJednc

该解决方案类似于MCU中外设的优势。外设是小型专用硬件模块,可以添加新功能,例如运算放大器或模数转换器(ADC),或者可以减少CPU必须为给定功能执行的工作量。在某些情况下,外设在初始化后可以独立于CPU运行。ZlJednc

例如,为了展示外设的优势,可以考虑脉宽调制(PWM)信号的生成。要在没有专用外设的情况下生成PWM,只需将I/O线设置为高电平,等待一定数量的周期,将其设置为低电平,再等待一段时间,然后重复。这会占用大量CPU周期,并且对于诸如RTOS之类的东西来说很难可靠地执行。相比之下,PWM外设可让CPU在执行其他任务的同时设置所需的波形参数。ZlJednc

本文提供的第一个示例显示了卸载CPU密集型任务的好处。在这种情况下,8位MCU用于创建I/O扩展器。I/O扩展器不是复杂的器件;然而,由于中断的频繁服务,它们使用了大量的CPU时间。通过使用专门的MCU来完成这项任务,较大的32位器件可以降低其I/O利用率和需要处理的中断数量。此外,I/O扩展器的功能集是在软件中设置的,因此可以针对应用进行定制和调整。ZlJednc

本文中的第二个示例展示了独立于内核的外设的性能,以创建独立于CPU运行的电压频率(V/F)转换器。本例中CPU的唯一功能是初始化外设并将调试消息打印到UART。在更大的系统中,当V/F在后台运行时,CPU可以执行另一个简单的任务。ZlJednc

I/O扩展器

使用8位MCU创建I/O扩展器的最大好处是灵活性。I/O扩展器ASIC的功能集已嵌入到该器件中,而MCU则可根据其执行的软件定义其行为。这种灵活性使基于MCU的版本能够适应最终应用的需求。ZlJednc

实现高级I/O扩展器

在内部,高级I/O扩展器在基于查找表的结构上运行。在读取或写入之前,会发送一个虚拟地址。该地址与MCU上的寄存器无关——它仅特定于查找表。这意味着可以透明地添加MCU硬件寄存器中所没有的功能。表格中的条目也可以很容易地重新排列以用于特定用途。这种结构的另一个好处是能够向查找表添加权限(图1)。例如,要创建一个只读寄存器,只需省略写查找表条目即可。ZlJednc

图1:高级I/O扩展器查找表中的条目可以针对特定用例轻松重新排列。ZlJednc

更复杂的结构也适用于非标准功能。“MEM OP”功能支持MCU将其当前的通用输入输出(GPIO)配置保存或加载到内存中。ZlJednc

MEM OP还可以将GPIO配置重置为编译时所设置的参数(图2)。ZlJednc

图2:MEM OP功能支持MCU将其当前的GPIO配置保存或加载到内存中。ZlJednc

或者,可以将MCU设置为在上电时加载保存的设置。如果启用,MCU会尝试加载配置0中的设置。如果配置校验和验证失败,则MCU将恢复为编译时间常数。如果不需要,可以在软件中禁用此功能。ZlJednc

此解决方案的要点

基于MCU的解决方案,其优势在于极大的灵活性。与市场上的ASIC不同,可以将MCU配置为具有特定于所用应用的非标准功能。此应用是为通用PIC16F15244系列MCU所开发的。ZlJednc

有关此实现的更多信息或想要试用此例,请参阅源存储库中的README文件。其中还提供了带有Arduino的高级I/O扩展器的演示。GitHub上提供了源代码、文档和演示。ZlJednc

电压频率(V/F)转换器

V/F转换器通过减少物料清单(BOM)和设计面积来改进传统的模拟解决方案。市场上的许多V/F转换器都需要外部电阻器和电容器才能运行,而MCU只需要通用的去耦和上拉元件(所有MCU都需要这些元件)即可运行(图3)。ZlJednc

图3:TC9400器件的应用原理图,突出显示10Hz至100kHz V/F转换器。ZlJednc

MCU不使用模拟技术进行数字化,而是使用独立于内核的外设和功能的组合。MCU使用带计算功能的内部模数转换器(ADCC)测量输入信号,然后对时钟信号进行分频以产生可变频率输出。在本例中,外设已设置为在初始化后独立于CPU运行。这意味着CPU可以用于最终应用中的其他任务。ZlJednc

基于MCU的方法有一个挑战是它的性能不如模拟解决方案。输出的分辨率本质上受ADCC的限制。名义上,ADCC是12位的,但根据程序的配置方式,ADCC以过采样的14位分辨率运行。同样,合成输出频率的片内数控振荡器(NCO)具有有限的分辨率,并且在其输出中可能存在抖动,具体取决于ADCC测量的值。ZlJednc

基于MCU的解决方案可分为三个不同的外设模块:模拟采样模块、输出振荡器模块和占空比发生器(图4)。ZlJednc

图4:三个模拟采样模块简化了基于MCU的解决方案。ZlJednc

模拟采样模块负责模数转换(图5)。为了在器件的频率限制下实现100kHz的输出,ADCC已配置为过采样,然后向下平均以获得14位结果。ZlJednc

图5:模拟采样模块的实现方式。ZlJednc

这种过采样的一个缺点是在结果中添加了额外的统计噪声。可以通过对过采样求平均值并添加滞后来补偿噪声。为了实现滞后,这里使用了ADCC的阈值中断功能。为简单起见,本文将仅介绍此示例如何使用阈值中断功能的细节。ZlJednc

当ADCC完成过采样平均值计算时,会将结果值与外设中的设定点寄存器进行比较。如果两者之差大于或小于设定阈值,则触发中断。CPU屏蔽这个中断并且不受影响,但是,此中断会触发直接存储器访问(DMA),将平均得到的过采样结果复制到ADCC的设定点寄存器,从而产生滞后。如果未超过阈值,则不会发生DMA复制,也就不会触发输出振荡器模块的DMA更新。ZlJednc

输出振荡器模块

该解决方案的输出振荡器模块负责生成所需输出频率的时钟信号。该输出信号在内部连接到占空比发生器,进而将输出频率减半,但会产生50%的占空比输出。因此,输出振荡器模块以输出频率的两倍运行。ZlJednc

输出振荡器模块的核心是NCO(图6)。NCO外设通过在输入时钟的上升沿向累加器添加增量值来工作。累加器溢出用于获得外设的输出。ZlJednc

图6:输出振荡器模块负责生成所需输出频率的时钟信号。ZlJednc

在此示例中,NCO2已设置为在内部创建所需的输入时钟频率,从而从14位输入获得100kHz输出。之所以使用14位结果,是因为来自ADCC本身的12位结果不足以在没有外部时钟源的情况下生成100kHz输出。ZlJednc

ZlJednc

表1:看门狗关闭情况下100kHz V/F转换器的理想输出。

如果改变NCO2的输出频率,或使用替代源,则输出频率将缩放到不同的输出范围。例如,如果NCO2降低到1.28MHz,则输出最大为10kHz。ZlJednc

ZlJednc

表2:看门狗关闭情况下10kHz V/F转换器的理想输出。

占空比发生器

该解决方案的占空比发生器模块负责创建50%的占空比输出(图7)。此功能是可选的,尽管占空比会在更大程度上变化,但NCO的输出可以直接使用。ZlJednc

图7:占空比发生器产生50%的占空比输出。ZlJednc

该发生器使用可配置逻辑单元(CLC)之一实现。CLC是类似于FPGA单个单元的分立可配置逻辑的小模块。CLC可用作分立逻辑门,例如AND-OR或OR-XOR。它们也可以配置为锁存器或触发器。在这个解决方案中,CLC被实现为带有复位功能的JK触发器。J和K保持在逻辑高电平。输出振荡器模块用作触发器的时钟。每个输入时钟脉冲都会导致输出切换,从而产生50%的占空比。值得注意的是,来自输出振荡器模块的频率抖动会影响占空比。ZlJednc

定时器6用作不稳定的“看门狗”定时器。如果输出没有产生边沿(上升沿或下降沿),则定时器将溢出而为CLC生成时钟脉冲。这控制了输出频率范围的低端。输出不会达到DC,而是以定时器频率的一半切换,从而获得6Hz输出。ZlJednc

此解决方案的要点

此设计示例演示了使用硬件外设来创建通常必须使用外部IC创建的独立于内核的功能。这种配置的最大好处之一是外设操作是在软件中设置的,因此很容易适应最终应用。由于使用了大量外设,因此选择了PIC18-Q43系列MCU来实现该示例。ZlJednc

有关此示例的更多信息,可以参阅示例存储库中的README文档。示例存储库还包含频率电压转换器的实现,它可以在与电压频率转换器相同的器件上实现。源代码和文档可在GitHub上获得。ZlJednc

虽然高性能MCU和MPU仍然存在,但8位和16位MCU是执行小型专业任务的宝贵工具。这些任务不一定很复杂,但它们可能很耗时或时间紧迫。通过卸载任务,32位器件可以实现更简单的实现,从而提高可靠性、减少内存使用和降低功耗。ZlJednc

(原文刊登于EDN美国版,参考链接:Deploying task-specific microcontrollers simplifies complex designs,由Franklin Zhao编译。)ZlJednc

本文为《电子技术设计》2022年9月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里ZlJednc

责编:Franklin
本文为电子技术设计原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫
    一键转发
  • 最前沿的电子设计资讯
    请关注“电子技术设计微信公众号”
  • 立足优势 持续领先:KIOXIA铠侠新一代UFS嵌入式闪存器 KIOXIA铠侠中国近日宣布,今年其最新发布的业界首款*1支持MIPI M-PHY*2 v5.0的通用闪存*3Universal Flash Storage嵌入式闪存器件,目前已率先批量交货,助力本土手机产商实现存储速度飞跃。
  • 低功耗“刚需”加速物联网应用落地,用独特MCU设计的省 低功耗MCU涉及的关键技术和设计挑战非常多,从如何定义系统架构、构建平台和MCU生态系统到数字电路设计,从工艺的选择到模拟电路设计,从可靠性设计到低功耗设计,从应用创新到满足客户各种需求等,每方面都对设计公司提出很高要求……
  • 车载充电器设计对专用MCU提出需求 电动汽车系统提出了必须通过量身定制的解决方案来解决的独特挑战。这在MCU的选择上很清楚。传统的汽车MCU,例如为ICE车辆的动力系统所设计的那些MCU,并不是为支持电动化设计要求所需的基本数字、模拟和系统级功能而设计的。例如,大多数传统的汽车MCU无法支持高开关频率来获得宽禁带技术的优势。
  • 大联大世平集团推出基于灵动微电子MindMotion产品的低 大联大控股宣布,其旗下世平推出基于灵动微电子(MindMotion)MM32SPIN560C的低压无刷电机驱动方案。
  • 意法半导体生物识别支付平台获EMVCo 认证,有助于机构 意法半导体完整的技术平台获得行业认证,整合嵌入式安全单元和超低功耗通用微控制器,具有经济、强大的安全保护功能
  • 如何设计电池管理系统 我们可以用电池管理系统(BMS)监控电池和可能的故障情况,防止电池出现性能下降、容量衰减甚至可能损害用户或周围环境的情况。BMS还负责提供准确的充电状态(SoC)和健康状态(SoH)估计,以确保在电池的整个生命周期内提供信息丰富且安全的用户体验。设计合适的BMS不仅从安全的角度来看至关重要,而且对于客户满意度也很重要。
  • MCU三大新型存储器技术梳理 目前越来越多的MCU厂商选择将新型的存储器集成在MCU中,从而突破传统闪存技术的限制,使MCU性能水平达到一个新的高度。
  • 为AI SoC打造芯片级安全性 使用内置于RISC-V架构的固有特性以及附加扩展,有助于从芯片级另外增加一个分层,从而确保AI SoC的安全性…
  • 可穿戴设备设计关键在于数据准确性和算法有效性 本文分享了ADI在可穿戴领域的一些理解和思考,分为三个部分:一是可穿戴广义设备的市场趋势,包括“卷中卷的卷王”TWS耳机、AR/VR和智能手表;二是可穿戴产品解析;三是想做到差异化,数据和算法到底扮演着什么样的角色。
  • 电动汽车中的电力电子技术概述 高效率和高可靠性是促进电力电子系统分析和设计的两个关键特性。
  • AI 超级计算机,人工智能进入企业的拐点 正如英伟达加速计算业务副总裁Ian Buck所说:“我们正处于一个 AI 进入企业的转折点。”
  • 裸机系统上的模拟调试 我承认“模拟调试”这个标题有点神秘。阅读本文后,嵌入式固件开发人员可能会遭受认知失调的困扰,但相信我,这以后会说得通的。本标题暗示的是处理MCU中被处理信号的任务。
广告
热门推荐
广告
广告
EE直播间
在线研讨会
广告
广告
面包芯语
广告
向右滑动:上一篇 向左滑动:下一篇 我知道了