本文将介绍部分外设的工作原理,以及如何组合使用它们来自动化处理典型微控制器应用中许多底层任务。在典型
的 RA 微控制器中,数据操作电路 (DOC) 可能是最有趣但又最不为人所理解的外设之一。DOC 可以将一些简单的任务从 CPU 卸载,从而显著提升实时应用的性能,缩短响应时间,并有可能降低功耗。当 DOC 与 RA 系列中其他更高级的功能结合使用时,这种优势尤为明显。
数据操作电路 (DOC) 的核心是一个简单的算术逻辑单元 (ALU)。这个简单的 ALU 只有三个基本功能:执行 16 位数据比较、16 位加法或 16 位减法,然后根据指定条件生成中断。所有这些任务都可以在无需 CPU 干预的情况下执行,方法是使用 DMA 控制器或数据传输控制器(稍后会详细介绍)自动将待处理数据传输到 DOC。参见图 1。图
1:数据操作电路 (DOC) 的简化框图。
在使用 16 位比较模式时,首先将初始参考值加载到 DOC 中,然后加载待比较的 16 位数据,并在硬件中将其与参考值进行比较。DOC 可以被编程为在匹配成功或失败时生成中断。
在使用 16 位求和模式时,首先将初始 16 位值加载到 DOC 中。然后,将一个或多个额外的 16 位值加载到 DOC 中,并与原始值相加。加载完所有必要的值后,系统会检查是否溢出,并在必要时生成中断。这种简单的机制可以确定是否超过了特定的阈值,例如,非常适合使用 ADC 进行自动电平检测。
使用 16 位减法模式时,首先将一个初始的 16 位值加载到数据操作电路 (DOC) 中。然后,将一个或多个额外的 16 位值加载到 DOC 中,并从初始值中减去这些值。加载完所有必要的值后,将执行溢出检查,并在必要时生成中断。同样,这种简单的机制可以帮助您确定是否超过了特定的阈值。
然而,数据操作电路的真正强大之处在于,这三个简单的功能可以用来直接决定系统的运行方式,而无需 CPU 干预。这意味着我们可以直接在微控制器硬件中做出简单的决策,使系统硬件能够基于简单的比较来决定如何处理其生成的数据。
当与 DMAC(直接内存访问控制器)或 DTC(数据传输控制器)等外设结合使用时,这些外设可以自动将数据传输到 DOC,我们可以看到如何利用这种方法创建一个能够从几乎任何数据源做出数据驱动决策的系统。即使CPU处于空闲状态,此操作也无需CPU干预。这可以更快地响应数据变化,而无需等待CPU被中断后再响应事件。
我们可以设想DOC的多种应用场景;例如,与UART接口配合使用时,DOC可以自动检测传入地址,并在地址有效时向CPU发出警报。DOC还可以与电平检测系统中的模数转换器(ADC)配合使用,自动检测电平何时超过预设阈值。使用DOC实现这些功能具有诸多优势。例如,CPU可以专注于其他高优先级任务,而DOC仅在满足特定条件时通过中断发出警报。CPU可以进入睡眠模式以降低功耗,仅在DOC检测到有效报警条件时才通过中断唤醒。
RA系列所有成员都包含数据操作电路 (DOC),我们一直在不断改进DOC的功能。最新版本新增了一些功能,可以自动执行更复杂的数据决策。
接下来,我们来看看之前提到的数据传输控制器 (DTC)。DTC是一种外设,旨在提供一种简单而又极其灵活的机制,用于在外设和存储器之间,以及存储器和外设之间传输数据。RA系列微控制器的所有成员都包含数据传输控制器。DTC
使用一个简单的可编程控制器来执行存储器和外设之间的数据传输,反之亦然,同时将其配置信息保存在SRAM中的一个表中。这比使用大型专用硬件(例如直接内存访问控制器 (DMAC) 通常使用的硬件)要小得多。与使用DMAC相比,这种可编程性提供了更高的灵活性,并且通过将描述传输的配置表存储在SRAM中,我们可以拥有几乎无限的通道数,仅受限于可用SRAM的容量。
在 RA 系列芯片中,由 CPU、设备外设或外部引脚触发的事件(或中断)可以对设备执行多种操作。图 2 显示了中断控制器的简化示意图。图中可见,一个事件可以触发多种操作:传统的中断(用于更改应用程序地址)、DMAC 传输或 DTC 传输。单个事件还可以触发多个操作。
RA
中断控制器
。这种可编程性的主要优势在于,它将传输所需的所有信息存储在芯片上的一小块 SRAM 中。这意味着 DTC 控制器不仅可以用于创建一到两个数据传输通道,还可以根据需要创建 10 个、20 个甚至更多通道。这种机制的主要缺点是,每次传输都需要多个周期来读取存储在 SRAM 中的配置数据,因此 DTC 传输通常比 DMA 传输慢。
DTC 可以在外设和内存之间,或在内存和外设之间传输一个或多个字节的数据,最多可传输 256 次。传输的源地址和目标地址可以相同,也可以独立递增或递减,从而在内存中创建一个缓冲区结构。
传输结束后,DTC 可以生成一个中断来通知 CPU 数据已准备就绪,或者触发第二次 DTC 传输。这可以用于链接多个传输,我们称之为(略带讽刺意味地)链接模式。当需要在外设和内存之间移动多个数据时,这种链接模式尤其有用。当与前面讨论的 DOC 一起使用时,链接模式尤其有趣,因为它意味着单个中断源可以触发来自不同内存位置和/或外设的多个传输。例如,这意味着我们可以使用一个中断(例如 ADC 中断)将比较数据加载到 DOC 中,然后通过链接第二个传输,我们可以将用于比较的 ADC 数据加载到 DOC 中——所有这些都是完全自动的,无需 CPU 干预。中断生成复杂传输序列的能力非常强大,这不仅仅体现在与 DOC 配合使用时。图 3 展示了 DTC 的一些不同工作模式。
图 3:数据传输控制器工作模式示例
还可以设置为重复模式,在该模式下,它会重复传输若干次。对于大多数应用而言,DTC 的灵活性在速度、灵活性以及器件成本之间实现了完美的平衡。几乎可以创建任何外设和内存之间的自动传输,且不受任何限制。
数据传输控制器 (DTC) 提供了一种理想的方法,无需 CPU 干预即可自动实现外设和内存之间的数据传输。在将数据传输到 DOC 时,使用菊花链模式的 DTC 可以方便地测试大量数据,而无需 CPU 干预,从而使芯片能够自行做出直接的决策。
希望您能看出 DTC 比传统的 DMAC 灵活得多。如果您需要最高的数据传输速度,DMAC 仍然是最合适的方法,几乎所有 RA 微控制器都包含多个 DMAC 通道。然而,就灵活性和数据管理而言,DTC 远胜于 DMAC,它允许您创建多个通道,仅受限于可用的 SRAM 容量。

现在我们来看看如何将DTC和DOC与ADC结合使用,创建一个智能模拟采样系统。该系统无需CPU干预即可运行,从而降低CPU需求,甚至在系统运行时关闭CPU以节省功耗。我们想要创建的系统是一个简单的多输入电平检测器,它使用12位ADC的群扫描模式依次对四个输入信号进行采样。通过DTC和DOC的组合,它可以检测是否超过可编程阈值电平。只有当超过该阈值时,系统才会生成中断并唤醒CPU。
初始系统设置完成后,CPU进入睡眠模式以节省功耗,只有当DOC中断指示阈值已被超过时才会被唤醒。图4显示了该系统的简化原理图。
图4:简化系统布局
I 在群扫描模式下,ADC依次连续采样每个输入并将结果复制到SRAM。一旦所有四个输入都采样完毕,ADC就会生成DTC请求。使用链式模式,此请求会启动存储器和 DOC 之间的八次传输链,从片上 SRAM 复制四个 ADC 结果以及相应的阈值,每个 ADC 结果都必须再次与该阈值进行比较。
ADC 到 DTC 的传输请求。DTC
传输 1:将 [0] 与 DOC 进行比较。链已激活,执行以下传输:
DTC 传输 2:AN000 到 DOC。链已激活,执行以下传输
:DTC 传输 3:将 [0] 与 DOC 进行比较。链已激活,执行以下传输:
DTC 传输 4:AN001 到 DOC。链已激活,执行以下传输:
DTC 传输 5:将 [0] 与 DOC 进行比较。链已激活,执行以下传输:
DTC 传输 6:AN003 到 DOC。链已激活,执行以下传输:
DTC 传输 7:将 [0] 与 DOC 进行比较。链已激活,执行以下传输:
DTC 传输 8:AN005 到 DOC。链已停用,已停止。
在这种情况下,我们初始化数据操作电路 (DOC) 来比较每个值,并在任何阈值被超过时生成中断。ADC
、DOC 和 DTC 初始化完成后,每个 ADC 输入都会在后台持续检查,无需 CPU 干预。CPU 可以处理其他任务或进入睡眠模式,直到某个输入值超过其对应值才会唤醒。
许多其他底层任务也可以通过类似的方式组合 DOC 和 DTC 来实现自动化。这是一种极其强大的底层功能自动化技术,可以节省开发这些任务底层软件驱动程序的时间和开发成本,并通过自动化基本功能(无需 CPU 参与)来提高系统性能。RA
微控制器系列的每个成员都包含智能外设功能,例如数据操作电路和数据传输控制器,以及许多其他强大的外设功能,这些功能也可用于创建智能子系统。DOC 和 DTC 共同为各种应用中的底层 I/O 功能自动化提供了高度灵活且强大的解决方案。自动化这些底层功能不仅可以提高系统对实时事件的响应速度,而且通常还能降低系统软件的复杂性和规模,从而提高可靠性并降低系统测试成本。RA
系列微控制器适用于各种通信和控制应用,例如电机控制、智能传感器、测量、可穿戴设备、低功耗调制解调器以及许多其他工业和消费类应用,并提供多种内存容量和封装选项。更多信息,请访问 www.renesas.com/ra。
作者:格雷姆·克拉克,瑞萨电子高级产品营销专家
