在线时间72 小时
UID2085945
注册时间2014-9-3
NXP金币0
该用户从未签到
中级会员
 
- 积分
- 403
- 最后登录
- 2015-11-20
|
1、在KE06 FTM Combine 模式初始化函数中有如下不明白请看下面:
void FTM_PWMInit(FTM_Type *pFTM, uint8_t u8PWMModeSelect, uint8_t u8PWMEdgeSelect)
{
..................
else if(FTM_PWM_LOWTRUEPULSE == u8PWMEdgeSelect) //
{
/* Configure timers for PWM Low True Pulses */
for(i=0; i<channels; i++)
{
pFTM->CONTROLS.CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK;
//#define FTM_CnSC_MSB_MASK 0x20u 选择组合模式
//#define FTM_CnSC_ELSA_MASK 0x4u 这句话是怎么确定 ELSA的呢,不明白? ELSA 应该是0000 0010 high ture pulse 0000 00X1 low pulse
pFTM->CONTROLS.CnV = FTM_C0V_INIT + i*100 ;
//#define FTM_C0V_INIT 1000
// i=0 1000 i=1 1100 i=2 1200 i=3 1300 i=4 1400 i=5 1500 我的理解是每个通道的CnV的值?请明示啊?
}
}
}
2、在KE06 FTM Combine 模式占空比设置函数中有如下不明白请看下面:
void FTM_SetDutyCycleCombine(FTM_Type *pFTM, uint8_t u8FTM_Channel, uint8_t u8DutyCycle) // (FTM2,1,50)
{
uint16_t cnv = pFTM->CONTROLS[u8FTM_Channel-1].CnV; // 为什么通道要减1 ,既然减一那么就是通道0 其值为1000?
uint16_t modulo = pFTM->MOD; //9999
ASSERT((1 == u8FTM_Channel) || (3 == u8FTM_Channel) || (5 == u8FTM_Channel)); //轮询奇数通道,为什么?
cnv += (u8DutyCycle * (modulo+1)) / 100; // 这句话不明白
if(cnv > modulo)
{
cnv = modulo - 1; // 这里是FTM计数时,建议MOD值必须大于CNTIN值,编程时需注意。如果MOD==CNTIN,则计数值一直保持MOD值的意思吗?
}
pFTM->CONTROLS[u8FTM_Channel].CnV = cnv ; //这里应该是通道1吧,其值是6000,有点不明白?
pFTM->PWMLOAD |= FTM_PWMLOAD_LDOK_MASK | (1<<u8FTM_Channel); //使能更新加载,那么1左右1位是通道往下一个通道吗?比如通道1 左移变成通道2,通道2 左移变成通道4?
}
以上的函数有诸多的不明白,请楼主帮忙分析一下。不胜感激!!
|
|