TMS320F280049C 学习笔记21 交叉开关 Crossbar (X-BAR)

本文深入解析TI新一代DSP中X-BAR的功能与应用,包括InputX-BAR、ePWMX-BAR、CLBX-BAR和OutputX-BAR,阐述其作为信号路由器在GPIO与外设间传递信号的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

X-BAR是TI新一代DSP中独特的功能,笔者认为如果想发挥DSP的全部性能,掌握其使用方法是必须的。在笔者看来,X-BAR像是一个信号路由器,将信号在GPIO与外设之间相互传递。比如将GPIO的输入信号路由到各个外设;再将外设的输出路由到GPIO进行输出。

在手册中,X-BAR的章节位于第九章,很靠前,可见其重要性。笔者猜测推出该功能的原因是因为新一代DSP的功能非常丰富,信号的传递变得非常复杂,需要有一个类似总线的东西,将所有外设挂在上面,实现信号的任意传递。

这部分内容在刚开始学280049C的时候完全不知所云,后来在学习其他外设之后才逐渐理解了其作用。X-BAR使用起来并不难,仅需几行代码就可以完成配置。
本文翻译了手册[1]有关章节的内容,希望对后来者有帮助。如有不妥之处还请大家指正。

概述

交叉开关(在本文档中称为X-BAR)为在各种外设中连接设备输入、输出和内部资源提供了灵活性。总共包含三个X-BAR:Input X-BAR、Output X-BAR和ePWM X-BAR。每个X-BAR都是根据它们接收信号的位置来命名的。例如,Input X-BAR将外部信号“输入”到设备。Output X-BAR将内部信号“输出”到GPIO。ePWM X-BAR接收信号并将其带到ePWM模块。

在该设备上,输入X-BAR用于将信号从GPIO路由到许多不同的IP块,如ADC、eCAP、ePWM和外部中断。输入X-BAR可以访问每个GPIO,并且可以将每个信号路由到前面提到的任何(或多个)IP块。AIOs的数字输入也可以在输入X-BAR上找到。这种灵活性可以减轻器件对外设muxing的一些限制,将功能拓展到任意GPIO引脚。需要注意的是,在GPIO mux上选择的功能不会影响输入X-BAR。输入X-BAR将输入缓冲区上的信号简单地连接到选定的目的地。因此,您可以执行诸如将一个外设的输出路由到另一个外设(比如使用eCAP测量ePWM的输出以进行频率测试)。

INPUT X-BAR

通过INPUTxSELECT寄存器配置输入X-BAR。每个输入的可用IP目的地如图9-1所示。
在这里插入图片描述
在这里插入图片描述

ePWM X-BAR

ePWM X-BAR向ePWM模块发送信号。具体地说,ePWM X-BAR连接到每个ePWM模块的数字比较Digital Compare (DC)子模块,用于诸如tripzones和syncing之类的动作。请参阅ePWM章节,以了解更多有关DC子模块使用的其他方式的信息。图9-5显示了ePWM X-BAR的体系结构。值得注意的是,ePWM X-BAR的体系结构与输出X-BAR的体系结构相同(除了输出锁存器)。

ePWM X-BAR有八个输出,它们被路由到每个ePWM模块。图9-2表示单个输出的架构,但它与所有其他输出的架构相同。
在这里插入图片描述
首先,参考表9-2确定应传递给ePWM的信号。您可以为每个TRIPx输出选择最多一个信号(总共32个mux)。通过TRIPxMUX0TO15CFG和TRIPxMUX16TO31CFG寄存器选择每个mux的输入。为了将任意信号传递给ePWM,还必须在TRIPxMUXENABLE寄存器中使能mux。所有已启用的mux在被传送到ePWM上的相应TRIPx信号之前,都将在逻辑上取或。也可以选择通过TRIPOUTINV寄存器反转信号。
表格参加手册。

CLB X-BAR

CLBX-BAR向CLB模块发送信号。图9-5显示了CLBX-BAR的体系结构。值得注意的是,CLB X-BAR的体系结构与输出XBAR的体系结构相同(除了输出锁存器)。
CLB X-BAR有八个输出,它们被路由到每个CLB模块。图9-3表示单个输出的体系结构,但它与所有其他输出的体系结构相同。
在这里插入图片描述
首先,参考表9-3确定应传递给CLB的信号。对于每个AUXSIGx输出,您最多可以为每个mux选择一个信号(总共31个mux)。通过AUXSIGxMUX0TO15CFG和AUXSIGxMUX16TO31CFG寄存器选择每个mux的输入。为了将任何信号传递给CLB,还必须在AUXSIGxMUXENABLE寄存器中使能mux。所有已启用的mux在被传递到CLB上的相应AUXSIGx信号之前都将被逻辑取或。您也可以选择通过AUXSIGOUTINV寄存器反转信号。
表格参见手册。

OUTPUT X-BAR

GPIO输出X-BAR从设备内部接收信号并将其输出到GPIO。图9-5显示了GPIO输出X-BAR的体系结构。表9-4中列出了可提供给GPIO的信号。X-BAR包含八个输出,每个输出将包含GPIO mux上的至少一个位置,表示为OUTPUTXBARx。X-BAR允许选择单个信号或最多32个信号的逻辑或。
输出X-BAR有八个输出,它们被路由到GPIO模块。图9-4表示单个输出的体系结构,但它与所有其他输出的体系结构相同。值得注意的是,输出X-BAR的架构(除了输出锁存)与ePWM X-BAR的架构相同。
在这里插入图片描述
首先,参考表9-4确定应传递给GPIO的信号。您可以为每个输出xBarx输出选择每个mux最多一个信号(总共32个mux)。通过OUTPUTxMUX0TO15CFG和UTPUTxMUX16TO31CFG寄存器选择输入。

为了将任意信号传递给GPIO,还必须在OUTPUTxMUXENABLE寄存器中启用mux。所有已启用的mux在被传递到GPIO模块上的相应OUTPUTx信号之前,都将在逻辑上取或。您也可以选择通过OUTPUTINV寄存器反转信号。只有通过GpioCtrlRegs.GPxMUX和GpioCtrlRegs.GPxGMUX寄存器选择正确的OUTPUTx muxing选项,才能在GPIO上看到该信号。
在这里插入图片描述

参考文献

  1. TMS320F28004x Microcontrollers Technical Reference Manual
### TMS320F280049C ePWM 模块功能概述 TMS320F280049C 微控制器中的增强型脉宽调制器(ePWM)模块是一个高度集成的外设,专为实时控制应用设计。ePWM 模块提供了多种特性来支持复杂的波形生成和定时需求。 #### 主要特点: - **高精度计数器**:提供精确的时间基准。 - **可编程死区时间插入(DB)**:防止上下桥臂直通现象的发生[^2]。 - **动作资格(AQ)子模块**:允许定义特定条件下执行的动作,如设置或清除 PWM 输出状态[^3]。 - **事件触发机制(T1, T2)**:能够响应内部或其他外设产生的事件并据此调整输出行为。 - **同步(SYNC)信号输入/输出接口**:实现多个 PWM 波之间的相位锁定或延迟启动。 ### 配置与初始化过程 为了正确配置 ePWM 模块,在应用程序中通常需要完成以下几个方面的设置: #### GPIO 初始化 对于希望使用的具体通道(例如 EPWMxA),应先将其对应的通用 I/O 引脚配置成相应的 PWM 功能模式。这可以通过修改 `GpioCtrlRegs` 寄存器组下的相应成员变量来达成。下面给出了一段针对 EPWM2A 和 EPWM3A 的典型代码片段[^4]: ```c // 将 GPIO2 设置为 EPWM2A 功能 EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; // 启用上拉电阻 GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // 切换至 EPWM2A 功能 EDIS; // 对于其他通道重复上述步骤... ``` #### 基本参数设定 接下来是对各个寄存器进行赋值以满足实际应用场景的要求,比如周期长度、占空比以及是否启用死区保护等选项。这部分工作涉及到对 CMPA/B、TBPRD 等关键寄存器的操作。 #### 死区时间配置实例 当涉及到电机驱动等领域时,合理地加入死区可以有效避免功率管的同时导通造成的短路风险。这里展示了一个简单的例子说明如何利用 DB 子模块来进行此类配置: ```c // 开启死区功能 EPwm1Regs.DBCTL.bit.OUT_MODE = 3; // 设定互补输出模式 EPwm1Regs.DBFED.all = DEADBAND_RISING; // 上升沿死区宽度 EPwm1Regs.DBRED.all = DEADBAND_FALLING;// 下降沿死区宽度 ``` 其中 `DEADBAND_RISING` 和 `DEADBAND_FALLING` 应替换为你所期望的具体数值。 ### 实际案例分析 考虑到某些情况下可能还需要与其他硬件资源协同运作,比如通过 X-Bar 来建立不同组件间的通信桥梁。在这种场景下,除了基本的 PWM 参数调节之外,还需额外关注这些辅助设施的连接方式及其影响因素. ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值