金牌会员
- 积分
- 1227
- 威望
- 621
- 贡献
- 340
- 兑换币
- 393
- 注册时间
- 2014-11-16
- 在线时间
- 133 小时
- 毕业学校
- 江苏大学
|
最近一直在调编码器,要用到正交解码,但除了原理啥都不懂,求大神详解,附一份正交解码的底层,和大家分享。void FTM_QUAD_init(void)
{
SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;//时钟使能
SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK;//时钟使能
FTM1_MODE |= FTM_MODE_FTMEN_MASK;//使能FTM所有功能
FTM2_MODE |= FTM_MODE_FTMEN_MASK;//使能FTM所有功能
FTM1_CNT = 0;//计数值初始化
FTM1_CNTIN = 0;//初始值
FTM1_MOD = 0xFFFF;//计数结束值
FTM1_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
FTM1_QDCTRL |=FTM_QDCTRL_QUADEN_MASK; //使能正交解码
FTM2_CNT = 0;//计数值初始化
FTM2_CNTIN = 0;//初始值
FTM2_MOD = 0xFFFF;//计数结束值
FTM2_QDCTRL &= ~FTM_QDCTRL_QUADMODE_MASK; //选定编码模式为A相与B相编码模式
FTM2_QDCTRL |=FTM_QDCTRL_QUADEN_MASK; //使能正交解码
PORT_PCR_REG(PORTA_BASE_PTR, 8)=PORT_PCR_MUX(6);//FTM1,A
PORT_PCR_REG(PORTA_BASE_PTR, 9)=PORT_PCR_MUX(6);//FTM1,B
PORT_PCR_REG(PORTA_BASE_PTR, 10)=PORT_PCR_MUX(6);//FTM2,A
PORT_PCR_REG(PORTA_BASE_PTR, 11)=PORT_PCR_MUX(6);//FTM2,B
FTM1_SC |= FTM_SC_CLKS(3); //选择外部时钟
FTM2_SC |= FTM_SC_CLKS(3); //选择外部时钟
}
|
|