kinetis FTM 分析笔记
? ? 平臺MK60DN512ZVLQ10,以下簡稱K60。
? ? 首先簡單說下什么是FTM,在K60中,FTM模塊是一個8通道的16位定時器,可以實現input capture, output compare, and the generation of PWM signals to control electric motor and power management applications。即輸入捕捉、輸出比較、PWM輸出控制電機、能源管理。計數有無符號和有符號(即有符號可以用負數計數)兩種方式。
?給FTM的分頻數有,1、2、4、8、16、32、64,or 128。
? ??寄存器(以FTM0通道為例)
?//--------------------------------------------------------------------------------------------------------*
//函數名: FTM_init_ForPWM ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *
//功 ?能: 初始化PWM ?左對齊 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? *?
//參 ?數: 無 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
//返 ?回: 無 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?*
//說 ?明: PWM輸出引腳A4和A6,往右多空4格的語句是配置FTM0_CH1功能 ? ? ? ? ?*
//--------------------------------------------------------------------------------------------------------*
void FTM_init_ForPWM(void)
{
? ? PORTA_PCR6= PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK;; // 設置引腳A6引腳為FTM0_CH3功能且引腳 High drive strength
? ? ? ? PORTA_PCR4= PORT_PCR_MUX(3) | PORT_PCR_DSE_MASK;; // 設置引腳A4引腳為FTM0_CH1功能且引腳 High drive strength ?
? ? SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK;//使能FTM0時鐘?
? ? FTM0_MODE |= FTM_MODE_WPDIS_MASK;//寫保護禁止?
? ??
? ? //設置通道0的3通道,工作在左邊沿對其PWM模式//MSB=1,ELSB:ELSA=10 ?
? ? FTM0_C3SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左對齊,先高后低 ?
? ? FTM0_C3SC &= ~FTM_CnSC_ELSA_MASK; ?
? ? FTM0_C3SC |= FTM_CnSC_MSB_MASK;//MSB=1,模式選擇邊沿對齊
? ? ? ? //設置通道0的1通道,工作在左邊沿對其PWM模式//MSB=1,ELSB:ELSA=10 ?
? ? ? ? FTM0_C1SC |= FTM_CnSC_ELSB_MASK;//ELSB=1,ELSA=0,左對齊,先高后低 ?
? ? ? ? FTM0_C1SC &= ~FTM_CnSC_ELSA_MASK; ?
? ? ? ? FTM0_C1SC |= FTM_CnSC_MSB_MASK;//MSB=1,模式選擇邊沿對齊
? ??
? ? FTM0_SC=0x08;//中斷禁止,時鐘源來自bus/Peripheral clock ?60MHz,1分頻后得到60MHz,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //CLKS=01,PS=000,CPWMS=0,遞增計數?
? ??
? ? FTM0_MODE &= ~FTM_MODE_FTMEN_MASK; //FTM0使能
? ??
? ? ? ? FTM0_OUTMASK = ~(FTM_OUTMASK_CH3OM_MASK | FTM_OUTMASK_CH1OM_MASK); //通道1、3輸出,屏蔽其它通道?
? ? FTM0_QDCTRL &= ~FTM_QDCTRL_QUADEN_MASK;//禁止正交解碼模式
? ? FTM0_COMBINE=0;//DECAPEN=0,雙邊沿捕捉禁止,COMBINE=0,不級聯 ?
? ? FTM0_CNTIN=0;//FTM0計數器初始值為0
? ? FTM0_MOD=7499;//結束值,周期為(MOD-CNTIN+1)*時鐘周期=0.125ms(即8K的PWM),低16位可用
? ? FTM0_C3V=2500;//高電平0.5ms,低16位可用
? ? ? ? FTM0_C1V=3750;//高電平0.5ms,低16位可用 ??
? ? FTM0_CNT=0;
}
?
其中MCG=180M
core/system = MCG, bus/Peripheral clock??= MCG/3, FlexBus = MCG/3, Flash clock= MCG/8
?
特別提醒:英文資料里有出錯誤,P.957 FTMx_SC寄存器4-3位 CLKS=01時,時鐘源是?Peripheral clock/Bus clock
?
總結
以上是生活随笔為你收集整理的kinetis FTM 分析笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js去掉url中的域名
- 下一篇: 数据结构习题及解析二