This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/LAUNCHXL-F28069M:电机控制 ESC、可实现 eCAP2

Guru**** 2540720 points
Other Parts Discussed in Thread: BOOSTXL-DRV8305EVM, TIDA-00643, MOTORWARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/622872/ccs-launchxl-f28069m-motor-control-esc-witch-ecap2

器件型号:LAUNCHXL-F28069M
主题中讨论的其他器件:BOOSTXL-DRV8305EVMTIDA-00643MOTORWARE

工具/软件:Code Composer Studio

我设计了参考 launchpad-28069M 和 BoostXL-Drv8305EVM 的 ESC 板。

现在、我想将 PWM 信号输入作为速度命令添加到我的板中、就像平常的 ESC 一样。

我指 的是 TIDA-00643 motorware。

现在、我的问题是我的板没有 eCAP1、只有 Ecap2。

因此、我无法选择 Ecap2作为 PWM 输入。

现在我已经完成了:
1.在 hal.c 中将 GPIO25设置为 HAL_setParams()中的 eCAP 函数,  
GPIO_setMode (obj->gpioHandle、GPIO_Number_25、GPIO_19_Mode_ECAP2);
2.在 hal.c 中启用 HAL_setParams()中的 eCAP2clock
clk_enableEcap2Clock (obj->clkHandle);
3.通过在 hal.c 中添加以下函数来设置 eCAP2模块

// ECAP
void HAL_setupeCAP (HAL_Handle handle)

HAL_Obj * obj =(HAL_Obj *)句柄;

cap_setModeCap (obj->capHandle);//将模式设置为 CAP

//禁用计数器同步
cap_disableSyncIn (obj->capHandle);

//设置捕捉事件极性
cap_setCapEvtPolarity (obj->capHandle、cap_Event_1、cap_polarity_Rising);

//设置捕捉事件极性
cap_setCapEvtPolarity (obj->capHandle、cap_Event_2、cap_polarity_Falling);

//设置捕获事件计数器复位配置
CAP_setCapEvtReset (obj->capHandle、CAP_Event_1、CAP_Reset_Disable);

//设置捕获事件计数器复位配置(在此处复位计数)
CAP_setCapEvtReset (obj->capHandle、CAP_Event_2、CAP_Reset_Enable);

//连续计时器
cap_setCapContinu模糊(obj->capHandle);

//将停止/环绕模式设置为2个事件
cap_setStopWrap(obj->capHandle, cap_Stop_Wrap_CEVT2);

//启用捕获事件时 CAP1-4的加载
cap_enableCaptureLoad (obj->capHandle);

//启用时间戳计数器运行
cap_enableTimestampCounter (obj->capHandle);

//启用捕捉(CAP)中断源
cap_enableInt (obj->capHandle、cap_Int_Type_CEVT2);

//启用 eCAP 中断
PI_enableInt (obj->压 电致、PI_GroupNumber_4、PI_InterruptSource_ECAP1);

//启用 CPU ECAP 组中断
cpu_enableInt (obj->cpuHandle、cpu_IntNumber_4);

返回;
}// HAL_setupCAP()函数结束

但是 HAL_setupeCAP()函数使用 eCAP1,如果我使用 eCAP2,我不知道如何在 HAL_setupeCAP()中配置 REG。

如果我使用 eCAP2?、例如 在_interrupt void ecapISR 中、需要更改其他参数?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要在 hal.c 中将 eCAP 句柄初始化为 HAL_init ()中的 ECAP2、如下所示、其他将与参考设计中的 ECAP1相同。

    //初始化 eCAP 句柄
    obj->capHandle[0]= cap_init ((void *) CAP2_base_ADDR、sizeof (cap_Obj));