使用 C2000 Microcontroller Blockset 实现交叉开关 (X-BAR) 功能
本示例展示了如何使用 C2000™ Microcontroller Blockset 在某些 TI® 处理器上使用输入、输出和 ePWM X-BAR。
在本示例中,您将学习如何在 TI F28379D LaunchPad 上实现以下工作流程。
将配置为输出引脚的 GPIO 上的信号通过输入 X-BAR 路由到外设。
通过 ePWM X-BAR 中提供的不同 MUX 配置多个信号,为 ePWM 模块提供 TRIP 输入。
配置 ePWM 模块中的数字比较 (DC) 模块,以处理 TRIP 输入并向 ePWM 模块中的跳闸区 (TZ) 模块生成跳闸事件。
配置触发区 (TZ) 模块,生成 EPWMx_TZINT 到 CPU PIE。
通过输出 X-BAR 中提供的不同 MUX 配置多个信号,以驱动输出 GPIO 引脚。
前提条件
完成以下教程:
必需的硬件
TI F28379D LaunchPad. For your convenience, a preconfigured f2837xXBAR model is used in this example.
硬件连接
请从外部进行以下硬件板连接。
CMPSS1H 的正输入是 DAC-A 的输出,CMPSS2L 的正输入是 DAC-B 的输出。

要监控示波器和数据检测器中输出 X-BAR 的信号,请将信号路由到 GPIO 引脚并读取模型。
输出 X-BAR1 的信号外部连接到 GPIO16,输出 X-BAR2 的信号外部连接到 GPIO27。

模型
打开 f2837xXBAR.slx 模型。

GPIO11 和 GPIO14 配置为数字输出。您可以使用模型中的拨动开关来切换这些 GPIO 引脚。
GPIO11 和 GPIO14 引脚上的信号通过输入 X-BAR 路由到 ePWM X-BAR 和输出 X-BAR。
CMPSS1H 和 CMPSS2L 的正输入分别由 DAC A 和 DAC B 的输出驱动。
CMPSS1 TRIPH 信号和输入 X-BAR2 信号通过 OR 逻辑运算组合,并通过 ePWM X-BAR 发送到 ePWM TRIP 4。同样地,CMPSS2 TRIPL 信号和输入 X-BAR1 信号通过 OR 逻辑运算组合,并发送到 ePWM TRIP 5。
ePWM TRIP4 和 TRIP5 配置为 ePWM 数字比较事件 DCAEVT2 和 DCBEVT2,以触发 ePWM 输出。
CMPSS TRIP 信号和输入 X-BAR 信号通过 OR 逻辑运算组合,并通过输出 X-BAR 发送到 GPIO。
十字开关 (X-BAR) 信号路由
该图显示了多个信号通过 X-BAR 的路由情况。

配置并运行模型
1.打开 f2837xXBAR.slx 模型。该模型专为 TI F28379D LaunchPad 硬件配置。要在其他 TI C2000 处理器上运行该模型,请按 Ctrl+E 打开“配置参数”对话框,然后按照以下步骤操作。
2.在“配置参数”窗口中,点击“硬件实现”。
3.浏览至目标硬件资源>输入 X-BAR。配置 Input1 引脚分配和 Input2 引脚分配,分别从 GPIO14 和 GPIO11 读取数据。

4.浏览至目标硬件资源>输出 X-BAR。来自 MUX 0 的 CMPSS1 TRIPOUTH 信号和来自 MUX 3 的输入 X-BAR2 信号 (GPIO 11) 进行 OR 运算,然后发送到 Output1。输出 X-BAR1 信号路由至 GPIO24。类似地,来自 MUX 3 的 CMPSS2 TRIPOUTL 信号和来自 MUX 1 的输入 X-BAR1 信号 (GPIO 14) 进行或运算,并通过输出 X-BAR2 发送到 GPIO25。

5.为了监测输出 X-BAR 的输出信号,将 GPIO24 的输出 1 信号外部连接到 GPIO16。同样地,GPIO25 的输出信号 2 外部连接到 GPIO 27。模型中 GPIO16 和 GPIO27 都配置为输入引脚。要以外部模式运行模型,请从输出 X-BAR 中选择启用 OUTPUT# 锁存器。
6.浏览至目标硬件资源> ePWM。来自 MUX 0 的 CMPSS1 TRIPH 信号和来自 MUX 3 的输入 X-BAR2 信号(在 GPIO 11)进行 OR 运算,并作为 ePWM TRIP4 信号传递。类似地,来自 MUX 3 的 CMPSS2 TRIPL 信号和来自 MUX1 的输入 X-BAR1 信号(在 GPIO 27 处)进行 OR 运算,并作为 ePWM TRIP5 信号传递。

6.点击 Apply 和 OK。
7.数字输入模块读取数据后,使用寄存器读/写模块清除输出 X-BAR 锁存器。为确保按顺序执行,功能分割块用于在从数字输入模块读取数据后执行锁存器的清除操作。

8.在 ePWM 模块中,TRIP4 和 TRIP5 分别用作 DCAEVT2 和 DCBEVT2 的源。

9.DCAEVT2 和 DCBEVT2 配置为 CBC 跳闸事件。发生跳闸时,ePWMxA 的优先级将被强制降低。这些事件的中断也已启用。

10.DCAEVT2 和 DCBEVT2 的 ePWM TZ ISR 是通过硬件中断块触发的。

11.点击模块上的硬件映射以查看中断配置。

12 在 EPWM1_TZ_DCAEVT2 中断子系统中,CMPSS1 的 DACHVALS 设置为 4095,GPIO11 设置为低电平,以清除 ePWM1 的跳闸条件。这样做是为了在每个循环中重新评估行程条件。

同样地,在 EPWM1_TZ_DCBEVT2 中断子系统中,CMPSS2 的 DACLVALS 设置为 4095,GPIO14 设置为低电平。
13.按照文中所述配置 CMPSS 和 DAC 配置。使用比较器子系统 (CMPSS) 进行电压比较例子。
14.打开硬件选项卡,然后点击监控和调节。您可以在示波器模块和 Simulink 数据检查器中查看信号。
DAC、CMPSS 和输出 X-BAR 信号的分析
DAC 输入、CMPSS 状态输出和输出 XBAR 信号被发送到示波器。
输出 XBAR 信号是输入 XBAR 信号和 CMPSS TRIP 信号的逻辑或结果。
ePWM TRIP 输入也是输入 XBAR 信号和 CMPSS TRIP 信号的逻辑或运算结果。输出 X-BAR 信号表示 ePWM TRIP 信号的状态。
如果其中任何一个信号为高电平,则输出 XBAR 信号也为高电平。
DAC A 是 CMPSS1 的正输入端,DAC B 是 CMPSS2 的正输入端。DAC 的输入是手动开关。
当正输入大于负输入时,CMPSS TRIP 输出为高电平。
输入 X-BAR 映射到 GPIO11 和 GPIO14。这些是拨动开关。
下表描述了预期结果。

此处图像显示的是表格中条件 4 的波形。

此处图像显示的是表格中条件 5 的波形。

注意:上述图中的信号 COMPH STS 和 COMPL STS 会随着 EPWM1_TZ_DCAEVT2 和 EPWM1_TZ_DCBEVT2 子系统中 Cmpss1Regs.DACHVALS 和 Cmpss2Regs.DACLVALS 值重置为 0xFFF 而切换。
其他可以尝试的操作:
尝试在 ePWM 和输出 X-BAR 中对 MUX 信号进行不同的组合。
尝试 ePWM 单次触发。