几乎每个现代 MCU 系列都有一个 USB 外设。由于 USB 是一种标准,您可能会认为所有 USB 实现都是相同的。如果是这样,您会对满足标准的各种实现感到惊讶,而且还提供额外的功能和特性,这些功能和特性可能会使特定的 MCU 非常适合您的下一个设计。本文将介绍流行的 MCU 系列中的一些差异化 USB 功能。一旦您了解了一些关键差异,您就可以更好地寻找能够为您的下一个设计提供完美契合的实施方案。
USB 基础知识
通用串行总线或 USB 因其简单的物理层接口、灵活性和易于集成(无论在硬件和软件级别)而越来越受欢迎。标准化和集成的连接器可以轻松地将 MCU 连接到 USB 电缆和通用驱动程序和应用程序接口或 API,从而可以轻松访问通过 USB 连接传输和接收信息包所需的数据和控制元素。现成的参考设计、评估板和代码示例进一步简化了基于 MCU 的实施。最近推出的数据信号传输速率高达 10 Gbit/s 的 USB 3.1 标准表明该标准在不断发展,并且可能会存在很多很多年。
USB 使用非对称拓扑,由位于连接“金字塔”顶部的主机组成,管理整个网络。下游 USB 端口(通常称为设备或功能)都直接或通过可以扩展星型拓扑网络的中间集线器连接到主机。一个主机可能有多个主机控制器,每个控制器最多可管理 127 个端口。USB 通信使用连接主机控制器和设备端点的管道或逻辑通道。一个 USB 设备最多可以有 32 个端点(16 输入和 16 输出)。有两种类型的管道:用于数据传输的流和用于短命令和状态传输的消息。数据传输可以是同步的(有保证的数据速率)、中断传输(需要快速、低延迟的传输时),
USB 标准更有用的方面之一是可能有多种数据速率(1.5 Mbit/s 的低速、12 Mbit/s 的全速、480 Mbit/s 的高速、5 Gbit/s 的超速、和 10 Gbit/s 的 SuperSpeed+),并且主机可以使用特殊的枚举过程确定每个设备的数据速率。这简化了连接管理,并使应用程序可以轻松地专注于仅传输数据,而不是管理低级物理连接的建立。
如果读者希望深入了解,Digi-Key 提供了几个产品培训模块,其中详细讨论了 USB 标准(来自FDTI和Wurth Electronics等)。然而,就本文而言,上述描述应该足以让我们了解基于 MCU 的 USB 外设的一些不同特性和功能,以更好地匹配特定应用的要求和最佳 USB 实现特性放。
USB 实现
了解了 USB 的一些基础知识后,我们可以开始了解 MCU 供应商在其设备中提供的不同类型的实现。由于 MCU 通常用于控制 USB 外围设备,例如传感器、指针设备和音频设备(仅举几例),而不是 PC 和手持设备中更常见的主机控制器,因此我们将从查看示例功能实现开始Spansion FM3 MCU 系列,特别是 Spansion MB9AF3 MCU。
Spansion MB9AF3 MCU 使用 ARM-Cortex-M3 CPU 并具有多个高级外设,包括电机控制定时器、高速 ADC、UART、SPI、I 2 C、DMA 和外部总线接口。USB 外设同时具有主机和功能接口,功能框图如下图 1 所示。图右侧的 CPU 接口可以访问数据传输所在的端点缓冲区。进出缓冲区的移动由 USB 数据控制器 (UDC) 通过 UDC 接口进行管理。中断可用于向 CPU 通知数据传输的状态,并且 CPU 接口提供对来自 CPU 或 DMA 控制器的缓冲区的访问。
图 1:Spansion MB9AF3 MCU USB 功能框图。(由 Spansion 提供)
Spansion USB 实现的关键要素是 USB 时钟源、端点缓冲区的数量以及对端点缓冲区的 DMA 访问。这些功能在不同的 MCU 供应商之间可能会有所不同,因为 USB 标准没有指定这些功能。例如,USB 时钟由片上 PLL 提供,该 PLL 可以使用 MCU 的主时钟源。这消除了对外部时钟的需求,从而减少了组件数量。并非所有 USB 外围设备都包含此功能。
从图 1 中,您还将看到有六个端点缓冲区。可用缓冲区的数量因实现而异。对于简单的应用程序,少量缓冲器可能就足够了,但可能需要多个缓冲器,这可能是因为存在多个元素(例如,由 MCU 管理的多个不同传感器),或者因为多个缓冲器将通过以下方式简化软件实现分离单个外设的不同应用。
最后,USB 实现之间的一个共同差异领域涉及 DMA 的使用。通常,独立于 CPU 管理端点缓冲区会更有效,这样 CPU 可以执行其他更复杂的任务,或者可以将其置于低功耗状态,直到有足够的数据可用于开始处理。MB9AF3 MCU 提供对 DMA 控制器的端点缓冲区的访问,并提供多个中断,可用于更轻松地管理缓冲区传输。当电源效率对您的应用至关重要时,请寻找这些功能。
端点控制
在选择 USB 外围设备时,您需要的端点数量可能是一个关键的区别。每个端点的灵活性也是您选择的一个重要因素。例如,赛普拉斯PSoC CY8C24794有一个带有五个端点的 USB 外设,每个端点都可以单独分配以响应中断、批量或同步 IN 或 OUT 请求。图 2 显示了可以分配给每个端点的各种任务。这种选择性水平避免了大量的处理器开销,否则将需要这些开销来确定任务的类型,然后将控制权转移到所需的例程。
图 2:赛普拉斯PSoC CY8C24794的 USB 工作模式表。(由赛普拉斯提供)
赛普拉斯 USB 实现使用共享内存来存储端点数据,这可能会导致访问瓶颈,但使用 PSoC 内存仲裁器 (PMA) 会优先处理处理器和 USB 外设之间的访问。这保证了即使在 USB 流量以最大速率处理时,处理器也将提供连续的移动指令流。
USB PMA 足够灵活,因此在接收到下一个 USB 数据包之前不需要处理端点数据。这可以通过简单地更改通道的写入位置或读取位置寄存器值来完成。例如,当接收到一个中断表明已经接收到一个数据包时,而不是处理数据然后使端点接收更多数据,您可以简单地将端点使用的 PMA 通道的写入地址更改为空闲区域USB RAM 的。通过这样做,您可以让 USB SIE 在 M8C 处理先前接收的数据时接收更多数据。类似的方法可用于准备要通过 IN 事务发送的数据。
在比较端点实现时,请确保您不仅查看支持的端点数量,还查看 USB 外围设备提供的灵活性和软件支持量。这可以提高性能、降低功耗并简化编码。
随身携带的 USB
USB 也已经发展到可以轻松创建可以以主机或功能模式动态连接的智能 USB 设备。这种“On the Go”功能可以将设备用作外围设备(可能作为存储设备),然后用作主机(可能控制记录心率活动的传感器并为其供电)。此功能在各种物联网应用中特别有用。例如,Microchip DSPIC33EP256 MCU 支持 USB 主机、设备和 On the Go 模式。在许多情况下,低功耗 *** 作对于 On the Go 应用程序很重要,因此了解 USB 外设可以使用哪些低功耗设施非常重要。
Microchip DSPIC33EP256 MCU 允许 USB 外设即使在某些低功耗模式下也能运行。例如,当 CPU 处于空闲模式时,外设仍然可以运行。在空闲模式下,CPU 时钟被关闭,这大大降低了动态功耗。当 CPU 空闲时 USB 模块可以继续工作,一旦收到需要 CPU 干预的消息,就可以将 CPU 带出空闲状态。USB 外围设备和 CPU 都可以进入更低的功耗状态,即睡眠,这样可以节省更多的电量。每当 USB 总线上有总线活动时,USB 活动中断可用于将设备从睡眠模式唤醒。
您可能需要 USB 外围设备的另一项功能是高级测试功能。特别是,如果您是第一次使用 USB,有些人可能希望包含专门针对 USB 端口的板级测试功能。Microchip DSPIC33EP256 MCU 具有特殊的 USB 测试模式,可以在 USB 输出上生成连续测试模式,这对于板级测试很有用。如图 3 所示,此测试模式生成连续的 JK/JK 位序列来切换 USB 输出,从而生成一个简单的“眼图”,通常用于测试信号完整性。
图 3:Microchip DSPIC33EP256 MCU USB 测试模式。(由微芯片提供)
高端 MCU 中的 USB
USB 不仅存在于低端和中端 MCU 中,它也是高端设备的一个非常有用的接口。例如,德州仪器 F28M35H52C1RFPT是一款具有非常先进的处理能力的双核 MCU,它包括一个具有 On the Go 功能的 USB 外设。如 F28M35H52C1RFPT 的框图(图 4)所示,该图左上角的 USB 外设通过从 AHB 总线矩阵访问的 AHB 总线连接到 ARM Cortex-M3 CPU。
图 4:德州仪器 F28M35x Concerto MCU 框图。(德州仪器提供)
ARM Cortex-M3 CPU 充当通道控制器,负责管理所有通信端口。当 USB 包含在高端设备中时,这是一项重要的功能,因此可以相对于所有其他竞争性通信端口正确地确定 USB 流量的优先级。例如,USB 端口通常用于外部文件存储,并且可能需要将数据传输活动设置为非常高的优先级,以便处理不会因缺少数据而停止。
结论
USB 实现有许多不同的方法,了解不同 MCU 系列提供的一些关键特性和差异化功能非常重要。当您了解一些最常见和最重要的差异时,为您的下一个 USB 应用找到合适的选择会容易得多。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)