在线时间17 小时
UID3286027
注册时间2016-6-1
NXP金币0
该用户从未签到
注册会员

- 积分
- 148
- 最后登录
- 2021-2-15
|
你好!
我需要将FTM0和FTM2同步,使用软件触发始终不成功,不知啥原因?代码如下:
// FTM2 配置
SIM->PINSEL &= ~SIM_PINSEL_FTM2PS2_MASK; // 0 T22--PTC2 PWT_IN0
//SIM->PINSEL |= SIM_PINSEL_FTM2PS2_MASK; // 1 T22--PTC4 PWT_IN0
//SIM->PINSEL |= SIM_PINSEL_FTM2PS3_MASK; //T23--PTC5
SIM->PINSEL &= ~SIM_PINSEL_FTM2PS3_MASK; //T23--PTC3
SIM->SCGC |= SIM_SCGC_FTM2_MASK;
FTM2->SC = 0x0; // CLKS为0,关计数器
//FTM2->CONF |=0xC0; //DBM 11
FTM2->MOD = 959; //50KHz 20*48-1
FTM2->CNTIN=0;
//FTM2->DEADTIME |= 0xF;
FTM2->SC &= ~FTM_SC_CPWMS_MASK; //向上或中心对齐模式选择 ,选向上模式
FTM2->MODE |= 0x5; // FTM使能
FTM2->COMBINE |= 0x232323; // 全部通道组合互补
FTM2->CONTROLS[0].CnSC |= 0x8; // H真脉冲
FTM2->CONTROLS[1].CnSC |= 0x8;
FTM2->CONTROLS[2].CnSC |= 0x8;
FTM2->CONTROLS[3].CnSC |= 0x8;
FTM2->CONTROLS[4].CnSC |= 0x8;
FTM2->CONTROLS[5].CnSC |= 0x8;
FTM2->CONTROLS[0].CnV = 300;
FTM2->CONTROLS[1].CnV = 600;
FTM2->CONTROLS[2].CnV = 300;
FTM2->CONTROLS[3].CnV = 600;
FTM2->CONTROLS[4].CnV = 0;
FTM2->CONTROLS[5].CnV = 500;
FTM2->CNT=0;
FTM2->SC |= 0x8; //系统时钟,直通
FTM2->SYNCONF |= 0x380; //软件触发
FTM2->SYNC |= 0x4;
void FTM0_Isr(void)
{
FTM2->CONTROLS[4].CnV = 0;
FTM2->CONTROLS[5].CnV = 300;
FTM2->PWMLOAD |=0x200; //使能更新值加载
FTM2->SYNC |= 0x80; //软件触发同步
}
FTM0是计数器为0时发生中断,在中断程序中软件触发FTM2计数器回0,但无法实现.
采用硬件触发方法可行,但为啥会有2微秒左右延时,在变频起点会变化,约0.5微秒左右的摆动,固定频率时没有这个问题.
最佳答案
一曲琴声 发表于 2019-2-12 21:43
这篇文章我看过,按照上面方案编程,没有成功。
你如果不在中断中执行同步,直接按照应用笔记中4 Example code章节的代码方式去更新,也不能更新吗?
那块我之前测试过,是能工作的 ...
|
|