Other Parts Discussed in Thread: SYSCONFIG
器件型号: F29H850TU
主题: SysConfig 中讨论的其他器件
您好:
我们将使用双核 C2000 芯片(具有 CPU1 和 CPU3)。 使用配置 PWM 和 GPIO 时、我们在 CPU3 上无法正常工作c29x3.syscfg。 相同的设置在 CPU1 上都可以正常工作。 我们认为我们缺少一些基本的东西。
哪些功能不起作用:
CPU3 上的 PWM 输出:
- 目标: 从分配给 CPU3 并配置为的 ePWM 模块(如 EPWM4、EPWM5、EPWM6)获取 PWM 信号
c29x3.syscfg。 - 我们做了什么: 我们
EPWMxRegs.TBCTLEPWMxRegs.CMPAEPWMxRegs.AQCTLA使用 sysconfig 或直接寄存器写入正确设置 CPU3 的所有 EPWM 寄存器(如,,)。 当我们进行调试时、PWM 计数器 (TBCTR) 运行良好。 - 问题: 引脚上没有发出 PWM 信号。 引脚要么卡在高电平/低电平、要么完全无效。
- 在 CPU1 上运行: 如果我们
c29x1.syscfg对 CPU1 使用中完全相同的设置、则 PWM 信号从引脚发出而不会出现任何问题。 这告诉我们 PWM 设置本身是正确的、但当 CPU3 尝试控制它时出现了错误。
2. CPU3 上的 GPIO 控制:
- 目标: 通过 CPU3 控制特定 GPIO 引脚(例如打开/关闭 LED)。
- 我们做了什么: 我们知道 GPIO 通常由 CPU1 在双核 C2000 上设置,所以我们使用
c29x1.syscfg. 我们选择了 GPIO 引脚、并将“Core Select“设置为“CPU3"。“。 然后,在我们的 CPU3 代码中,我们尝试用更改引脚状态GPIO_writePin()。 - 问题: GPIO 引脚不会更改状态或响应 CPU3 的命令。
- 在 CPU1 上运行: 如果我们将“Core Select“设置为“CPU1"
c29x1.syscfg,“,则、则 CPU1 可以完全控制 GPIO 引脚。 这意味着我们的 GPIO 设置是可以的、但即使已分配 GPIO、CPU3 也无法控制 GPIO。 - 此外、我们不能使用 CPU3 CORE main.c 中的 GPIO_writePin 等内置函数 由于是“unstated identifier“、编译器弹出错误
在 CPU1 main.c 中如下所示:
内部 main (void){设备初始化 ();BOARD_INIT ();
SSU_configBootAddress (SSU_CPU3、CPU3_RESET_VECTOR、SSU_LINK2);SSU_configNmiAddress (SSU_CPU3、CPU3_NMI_VECTOR、SSU_LINK2);SSU_controlCPUReset (SSU_CPU3、SSU_CORE_RESET_DEACTIVE);while (SysCtl_isCPU3Reset ()== 0x1U);ESTOP0;ENINT;INTERRUPT_enableGlobal();IPC_SYNC (IPC_CPU1_L_CPU3_R_CH0、IPC_FLAG31);// v_morode_TestSendCommand ();while (1){test1++;}}
CPU3 main.c:
内部 main (void){设备初始化 ();BOARD_INIT ();
ENINT;INTERRUPT_enableGlobal();
IPC_SYNC (IPC_CPU3_L_CPU1_R_CH0、IPC_FLAG31);// v_morode_TestSendCommand ();V_ADC_StartConversions();
while (1){++test3;}}
最后、test1 和 test3 变量不断增加、这意味着两个 CPU 都在通过 IPC 保持功能后进入 while true
