用特定于任务的MCU简化复杂的设计万博投注网址

文章:罗伯特·珀克尔(Robert Perkel)

较小的设备,例如8位和16位MCU,可用于从32位设备中卸载复杂的任务。

在当今的电子世界中,运行RTO的大型32位微控制器(MCUS)和微处理器(MPU)越来越普遍。但是,处理复杂应用程序的单个大型微控制器可能会遇到CPU资源的问题,而对于小型家政任务而言,这并不复杂,但很耗时。较小的设备,例如8位和16位MCU,可用于从32位设备中卸载这些任务。

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

However, these tasks are more manageable if the 32-bit device offloads some of these tasks to sub-processors that handle only one or two of these tasks, but require little supervision in doing so. This frees up CPU resources on the main processor, which reduces software complexity while improving performance and execution time.

该解决方案类似于MCUS外围设备的好处。外围设备是一小部分专业硬件,可以添加新功能,例如操作放大器或模数转换器(ADC),或者可以减少CPU为给定功能执行的工作量。在某些情况下,初始化后可以独立于CPU运行外围设备。

例如,显示外设的好处,consider the generation of a pulse-width modulated (PWM) signal. To generate PWM without a dedicated peripheral, simply set an I/O line HIGH, wait a certain number of cycles, set it LOW, wait some more, and repeat. This eats up a lot of CPU cycles and is difficult for something like an RTOS to execute reliably. A PWM peripheral, by contrast, lets the CPU set the desired waveform parameters while performing other tasks.

本文提供的第一个示例显示了卸载CPU密集型任务的好处。在这种情况下,使用了8位MCU来创建I/O扩展器。I/O扩展器不是复杂的设备;但是,由于中断的经常服务,他们使用了很多CPU时间。通过将专用的MCU用于此任务,较大的32位设备可以减少其I/O利用率以及需要处理的中断数量。此外,I/O Expander的功能集已在软件中设置为设置,该功能集可以为应用程序进行自定义和调整。

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

I/O扩展器

使用8位MCU创建I/O扩展器的最大好处是灵活性。I/O扩展器ASIC的功能集被烘烤到设备中,而MCU根据其执行的软件来定义其行为。这种灵活性允许调整基于MCU的版本以满足最终应用程序的需求。

实施高级I/O扩展器

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

Lookup Table of the Advanced I/O Expander图1高级I/O扩展器的查找表中的条目可以轻松重新安排特定用例。资料来源:微芯片

更复杂的结构也适合非标准功能。该功能“ MEM OP”允许MCU保存或加载其当前通用用途输入和输出(GPIO)配置到内存。

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

MEM OP功能的图图2MEM OP功能允许MCU保存或加载其当前的GPIO配置到内存。资料来源:微芯片

可选地,可以将MCU设置为加载电源上保存的设置。如果启用,MCU将尝试将设置加载到配置0中。如果配置失败了检查验证,则MCU将恢复为编译时常数。如果不需要,可以在软件中禁用此功能。

该解决方案的要点

基于MCU的解决方案的优点是极高的灵活性。与市场上的ASIC不同,MCU可以配置使用使用中应用程序的非标准功能。该应用是为通用的PIC16F15244MCUS家族。

有关实现的更多信息或尝试该示例,请参阅源存储库中的“读数文件”。还提供了带有Arduino的高级I/O扩展器的演示。

源代码,文档和演示可在github

电压到频率(v/f)转换器

V/F转换器通过减少材料清单(BOM)以及从而改善传统模拟解决方案,从而改善了设计区域。市场上的许多v/f转换器都需要外部电阻器和电容器才能运行,而MCU仅需要通用的解耦和上拉组件(由所有MCUS)才能进行功能(图3)。

TC9400 V/F转换器的应用示意图图3TC9400设备的应用示意图突出显示10 Hz至100 kHz V/F转换器。资料来源:微芯片

MCU并没有使用模拟技术来数字化,而是使用核心独立外围设备和功能的组合。MCU用计算(ADCC)的内部模数转换器测量输入信号,然后将时钟信号划分以创建可变频率输出。在此示例中,已经设置了外围设备以在初始化后自动操作CPU。这意味着CPU可以用于最终应用中的其他任务。

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

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

模拟抽样块的框图图4三个模拟采样块促进了基于MCU的解决方案。资料来源:微芯片

模拟采样块负责模数转换(图5)。为了在设备的频率限制下进行100 kHz的输出,ADCC已配置为过度样品,然后平均下降以获得14位结果。

框图以实现模拟采样块图5This is how an analog sampling block is implemented. Source: Microchip

该过采样的缺点是结果添加了额外的统计噪声。通过平均过度样品和增加滞后来补偿噪声。为了实现磁滞,使用了ADCC的阈值中断功能。为简单起见,只有此示例如何使用阈值中断功能的细节才能涵盖。

当ADCC完成计算平均值的超级缩短时,将结果值与外围设定点寄存器进行比较。如果两者之间的差异大于或小于设定阈值,则触发中断。CPU掩盖了这种中断,并且不受影响。但是,此中断会触发平均值的直接内存访问(DMA)的副本,该副本超过ADCC的设定点寄存器,创建滞后。如果未超过阈值,则不会发生DMA副本,这不会触发输出振荡器块的DMA进行更新。

输出振荡器块

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

输出振荡器块的心脏是NCO(图6)。NCO外围通过在输入时钟上升边缘上的累加器添加增量值来起作用。累加器溢出用于得出外围的输出。

输出振荡器块结构的图图6输出振荡器块负责以所需的输出频率生成时钟信号。资料来源:微芯片

在此示例中,NCO2已设置为内部创建所需的输入时钟频率,以从14位输入中获取100 kHz的输出。使用14位结果是因为ADCC的天然12位结果不足以生成没有外部时钟源的100 kHz输出。

表格1显示了100 kHz V/F转换器的理想输出,看门部门关闭。

ADC结果 NCO1输出(加倍) 输出频率
0x0000 0 Hz 0 Hz
0x0001 12.2 Hz 6.1 Hz
0x0100 3.1 kHz 1.6 kHz
0x1000 50 kHz 25 kHz
0x3fff 200 kHz 100 kHz

If NCO2’s output frequency is changed, or an alternative source is used, the output frequency will be scaled to a different output range. As an example, if NCO2 is reduced to 1.28 MHz, the output maxes out at 10 kHz.

表2显示了10-kHz V/F转换器的理想输出,看门人关闭。

ADC结果 NCO1输出频率(加倍) 输出频率
0x0000 0 Hz 0 Hz
0x0001 1.2 Hz 0.6 Hz
0x0100 312.5 Hz 156.3 Hz
0x1000 5 kHz 2.5 kHz
0x3fff 20 kHz 10 kHz

占空比生成器

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

占空比发电机的框图图7占空比发生器创建了50%的占空比输出。资料来源:微芯片

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

计时器6用作不可分割的“看门狗”计时器。如果输出不产生边缘(升高或下降),则计时器将溢出并生成一个时钟脉冲到CLC。这控制了输出频率范围的低侧。输出没有达到直流,而是在计时器频率的一半切换为6 Hz。

Takeaways from this solution

该设计示例演示了使用硬件外围设备创建与核心无关的函数,通常必须使用外部IC创建该功能。这种配置的最大好处之一是,外围操作是在软件中设置的,使其易于调整到最终应用程序。为了实现示例,PIC18-Q43由于使用大量外围设备,因此选择了MCUS家族。

有关此示例的更多信息,请参阅示例存储库中的readme文档。该示例存储库还包含一个可以在与电压到频率转换器同一设备上实现的频到电压转换器的实现。

源代码和文档可在github

尽管高性能微控制器和微处理器将留在这里,但8位和16位MCU是执行小型专业任务的宝贵工具。这些任务不一定很复杂,但是它们可能很耗时或至关重要。通过卸载任务,32位设备可以具有更简单的实现,从而提高可靠性,降低内存使用和降低功耗。

本文最初发表在Edn

罗伯特·珀克尔(Robert Perkel)Microchip Technology Inc.的应用程序工程师专注于与嵌入式系统设计有关的工作。

发表评论