主题中讨论的其他器件:SysConfig
工具与软件:
大家好!
TMIG4的 C0是正输出、C1是互补输出。
互补输出用于通过更改占空比来设置死区。
目前、C0和 C1的初始输出均为低电平。
是否有办法抑制 C1的初始输出?
此致、
Ito
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.
工具与软件:
大家好!
TMIG4的 C0是正输出、C1是互补输出。
互补输出用于通过更改占空比来设置死区。
目前、C0和 C1的初始输出均为低电平。
是否有办法抑制 C1的初始输出?
此致、
Ito
尊敬的 Sal:
感谢你的帮助。
TRM 仅针对 TIMA 描述了"具有可编程死区插入功能的互补 PWM 输出"。
我知道、这意味着死区可以通过寄存器操作设置、而不是使用 TIMG 无法提供互补输出。
实际上、当我检查波形时、通过调整互补输出以及 C0和 C1的占空比、我成功地设置了死区。
如果我可以抑制第一个从低到高的部分、问题就会得到解决、但有什么办法可以解决吗?
首先、我要检查是否真的可以在 TIMG 中设置互补输出、然后我要在 TIMA 中设置它们。
此致、
Ito
尊敬的 Sal:
我们将通过将比较匹配值设置为计时器计数器的初始值来检查是否可以抑制 C1的初始输出。
由于这项工作、无法抑制 C1的初始输出、但可以控制占空比。
・在 DL_TimerG_startCounter 启动计时器后、立即将互补侧的比较匹配值设置为计时器计数器。
・DL_TimerG_startCounter 会清除计时器计数器值、因此计数器值会在计时器启动后更新。
添加 xxx 以检查采集的比较匹配值
uint32_t xxx = 0;
int main (void)
{
SYSCFG_DL_init ();
xxx = DL_TimerG_getCaptureCompareValue (PWM_0_INST、DL_TIMER_CC_1_INDEX);
DL_TimerG_startCounter (PWM_0_INST);
DL_TimerG_setTimerCount (PWM_0_INST、xxx);
while (1){
__ WFI();
}
}
如果我可以抑制 C1的初始输出、那么问题就会解决。
此致、
Ito
尊敬的 KZ:
有一件事可能需要您进行综合。 当我设置反转函数时、可以看到其输出正确:
黄线表示 PWM 启动的时序。 蓝线为 C1 (TIMG0、PA13)、紫线为 C0 (TIMG0、PA12)。
我直接反转 sysconifg 中的 C1:
========================================================================
[实际上、如果您切换 C0和 C1、您会发现它正是您需要的波形。]
========================================================================
如果确实需要抑制输出、请使用以下 API:
示例:
// DL_Timer_overrideCCPOut (TIMG4、DL_TIMER_FORCE_OUT_LOW、DL_TIMER_FORCE_CMPL_OUT_LOW、DL_TIMER_CC_1_INDEX);
当需要输出时、需要在代码中手动释放。
B.R.
SAL
您好、Ito:
是的、可以工作。
如果您确实需要这样做: 反转 C0而不是反转 C1。
正如我在前面所示。
B.R.
SAL